我正在使用CoCreateInstance实例化本地COM服务器。有时,提供服务器的应用程序需要很长时间才能启动。发生这种情况时,Windows会弹出如下对话框:
服务器忙
由于其他程序正忙,无法完成操作。选择“切换到”以激活忙碌程序并更正问题。
[切换到...] [重试] [取消]
我在Application对象OleRequestPendingTimeout上发现了一个Visual Basic属性,可用于控制此对话框出现之前的时间。我找不到任何关于这个的好文档或者从C ++中有用的等价文档。有人能指出我正确的方向吗?
答案 0 :(得分:8)
如果你正在使用MFC,我们曾经做过这样的事情:
// prevent the damned "Server Busy" dialog.
AfxOleGetMessageFilter()->EnableBusyDialog(0);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(0);
答案 1 :(得分:4)
查看IMessageFilter
和CoRegisterMessageFilter
。
答案 2 :(得分:3)
增加超时呼叫:
AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);
请参阅此处的详细信息How to prevent the OLE Server Busy dialog box from appearing during a lengthy COM operation