Получить сигнал, когда COM-сервер закрыт - PullRequest
0 голосов
/ 16 сентября 2018

Предположим, у нас есть приложение для Windows, которое взаимодействует с Excel через интерфейс COM:

int APIENTRY wWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    // Initialize COM for this thread...
    CoInitialize(NULL);

    << Create Excel application >>
    << Create Workbooks collection >>
    << Create Workbook >>
    << Create worksheet >>
    ...
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    << Release pointers >>
    CoUninitialize();
    return (int) msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    ...
    switch (message)
    {
        << Process message >>
    }
}

Проблема

Когда пользователь закрывает Excel перед закрытием программы, я получаю сообщение об ошибке при закрытии программы, поскольку теперь указатели ссылаются на несуществующее приложение. Можно ли получить сообщение, указывающее, что программа закрыта. И как мне освободить указатели в этом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...