Установить время ожидания OLE-запроса из C++

Я создаю экземпляр локального COM-сервера, используя CoCreateInstance. Иногда для запуска приложения, предоставляющего сервер, требуется много времени. Когда это происходит, Windows выдает диалоговое окно, подобное этому:

Сервер занят

Действие не может быть завершено, потому что другая программа занята. Выберите "Переключить на", чтобы активировать занятую программу и устранить проблему.

[Переключиться на...] [Повторить] [Отмена]

Я обнаружил упоминание о свойстве Visual Basic в объекте приложения OleRequestPendingTimeout, которое можно использовать для управления временем до появления этого диалогового окна. Я не могу найти хорошую документацию по этому или эквивалент, который полезен из C++. Может кто-то указать мне верное направление?

3 ответа

Решение

Если вы используете MFC, мы использовали такие вещи:

// prevent the damned "Server Busy" dialog.
AfxOleGetMessageFilter()->EnableBusyDialog(0);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(0); 

Посмотри на IMessageFilter а также CoRegisterMessageFilter,

Чтобы увеличить время ожидания звонка:

AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);

Подробности здесь Как предотвратить появление диалогового окна "Занят сервер OLE" во время длительной операции COM

Другие вопросы по тегам