2008-11-11 12 views
6

Tworzę lokalny serwer COM przy użyciu metody CoCreateInstance. Czasami uruchomienie serwera wymaga długiego czasu. Kiedy to nastąpi, Windows pojawi się okno dialogowe jak poniżej:Ustawienie limitu czasu żądania OLE z C++

Server Busy

Akcja nie może być zakończona, ponieważ inny program jest zajęty. Wybierz "Przełącz na", aby aktywować zajęty program i usunąć problem.

[Przełącznik Aby ...] [Ponów] [Anuluj]

znalazłem wzmianki o własności Visual Basic na obiekcie aplikacji, OleRequestPendingTimeout, które mogą być używane do kontrolowania czasu zanim to pojawia się okno dialogowe . Nie mogę znaleźć żadnej dobrej dokumentacji na ten temat lub jego odpowiednika, który jest przydatny w C++. Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

7

Jeśli używasz MFC, zwykliśmy robić rzeczy tak:

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

Spójrz na IMessageFilter i CoRegisterMessageFilter.

+1

Jest to dobry wskaźnik , okazuje się, że MFC wykonuje niektóre prace, jak wykazano w odpowiedzi Johna Diblinga. –

Powiązane problemy