6

我正在使用 CoCreateInstance 实例化本地 COM 服务器。有时,提供服务器的应用程序需要很长时间才能启动。发生这种情况时,Windows 会弹出一个对话框,如下所示:

服务器繁忙

该操作无法完成,因为其他程序正忙。选择“切换到”以激活繁忙的程序并纠正问题。

[切换到...] [重试] [取消]

我在 Application 对象上发现了一个 Visual Basic 属性,OleRequestPendingTimeout,它可用于控制此对话框出现之前的时间。我找不到任何关于此的好的文档或对 C++ 有用的等效文档。谁能指出我正确的方向?

4

3 回答 3

9

如果您使用的是 MFC,我们曾经做过这样的事情:

// prevent the damned "Server Busy" dialog.
AfxOleGetMessageFilter()->EnableBusyDialog(0);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(0); 
于 2008-11-11T23:03:33.843 回答
4

看看IMessageFilterCoRegisterMessageFilter

于 2008-11-11T22:10:12.157 回答
3

增加超时调用:

AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);

在此处查看详细信息如何防止在长时间 COM 操作期间出现 OLE 服务器忙对话框

于 2009-11-24T13:42:07.567 回答