2008-11-11 6 views
6

Ich bin instanziieren einen lokalen COM-Server mit CoCreateInstance. Manchmal benötigt die Anwendung, die den Server bereitstellt, viel Zeit. Wenn dies geschieht, erscheint ein Dialogfeld von Windows wie folgt aus:Setzen Sie OLE Request Timeout von C++

Server Busy

Die Aktion kann nicht abgeschlossen werden, da das andere Programm ist besetzt. Wählen Sie "Switch To", um das ausgelastete Programm zu aktivieren und das Problem zu beheben.

[Switch To ...] [Wiederholen] [Abbrechen]

ich Erwähnung eines Visual Basic-Eigenschaft auf dem Application-Objekt gefunden haben, OLERequestPendingTimeout, die verwendet werden können, die Zeit zu kontrollieren, bevor dieser Dialog aufgeht . Ich kann keine gute Dokumentation zu diesem oder einem Äquivalent finden, das von C++ nützlich ist. Kann mir jemand in die richtige Richtung zeigen?

Antwort

7

Wenn Sie MFC verwenden, haben wir Sachen wie dies zu tun:

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

Werfen Sie einen Blick auf IMessageFilter und CoRegisterMessageFilter.

+1

Dies ist ein guter Zeiger Es stellt sich heraus, dass MFC einige der in John Diblings Antwort demonstrierten Arbeiten ausführt. –