Frage

Ich bin Instanziierung einen lokalen COM-Server mit CoCreateInstance. Manchmal ist die Anwendung auf den Server bereitstellt dauert eine lange Zeit zu starten. Wenn dies geschieht, Fenster öffnet sich ein Dialogfeld wie folgt aus:

Server ausgelastet

Die Aktion kann nicht abgeschlossen werden, da das andere Programm ausgelastet ist. Wählen Sie ‚Wechseln zu‘ das Besetzt Programm zu aktivieren und das Problem zu beheben.

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

Ich Erwähnung einer Visual Basic-Eigenschaft auf dem Application-Objekt gefunden habe, OLERequestPendingTimeout, kann diese verwendet werden, um die Zeit zu kontrollieren, bevor dieser Dialog aufgeht. Ich kann keine gute Dokumentation auf diese oder eine gleichwertige finden, die nützlich von C ++. Kann jemand mich in die richtige Richtung?

War es hilfreich?

Lösung

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

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

Andere Tipps

Hier finden Sie aktuelle IMessageFilter und CoRegisterMessageFilter.

Timeout Aufruf erhöhen:

AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);

Details hier Wie das OLE-Server Busy Dialogfeld verhindern, dass während eines langen COM Betriebes erscheinen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top