2008-11-11 11 views
6

J'instance un serveur COM local à l'aide de CoCreateInstance. Parfois, l'application fournissant le serveur prend beaucoup de temps à démarrer. Lorsque cela se produit, Windows affiche une boîte de dialogue comme celui-ci:Définir le délai de requête OLE à partir de C++

Serveur occupé

L'action ne peut pas être terminée, car l'autre programme est occupé. Choisissez 'Basculer vers' pour activer le programme occupé et corriger le problème.

[Switch To ...] [Retry] [Annuler]

J'ai trouvé mention d'une propriété Visual Basic sur l'objet Application, OLERequestPendingTimeout, qui peut être utilisé pour contrôler le temps avant que cette boîte de dialogue arrive . Je ne peux pas trouver de bonne documentation sur ceci ou un équivalent qui est utile de C++. Est-ce que quelqu'un peut-il me montrer la bonne direction?

Répondre

7

Si vous utilisez MFC, nous avons utilisé pour faire des choses comme ceci:

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

Jetez un oeil à IMessageFilter et CoRegisterMessageFilter.

+1

Ceci est un bon pointeur , il s'avère que MFC fait une partie du travail comme le démontre la réponse de John Dibling. –