|
|
1
3
你是多线程的吗? 我看到了使用shellexecute打开文件的问题。不是可执行文件,而是与应用程序关联的文件-通常是MS Office。使用DDE打开文件的应用程序向所有线程广播了一条消息(我不知道是不是 全部的 ……程序。由于我没有在我的应用程序的工作线程中注入消息,我将挂起shell(和打开文件)一段时间。它最终超时等待我处理消息,应用程序将启动并打开文件。 我记得在一个循环中使用peekmessage只是删除该工作线程队列中的消息。我一直认为有一种方法可以避免这种情况,也许创建线程的方式不同,以避免成为消息的目标? 更新 它一定不仅仅是执行此操作的任何线程,而是为窗口提供服务的线程。 雷蒙德 (link 1) 知道一切 (link 2) . 我打赌CoInitialize(单线程单元)或者MFC中的某个东西为线程创建了一个隐藏窗口。 |
|
|
2
9
我不知道是什么导致了这种情况,但SysInternal著名的MarkRussinovich有一个非常棒的博客,他解释了如何调试这些东西。一个很好的给你看 The Case of the Delayed Windows Vista File Open Dialogs 在那里,他只使用ProcessExplorer调试了一个类似的问题(结果是访问域时出现了问题)。当然,可以使用常规的Windows调试器执行类似的操作。
你的问题可能与他的不一样,但是使用这些技术可以帮助你更接近问题的根源。我建议调用
|
|
0___________ · 我可以在整个程序生命周期内保持句柄打开吗 2 年前 |