这是困扰我一段时间的事情,只需要解决这个问题.每次我调用ShellExecute来打开一个外部文件(无论是文档,可执行文件还是URL),这都会导致程序中的锁定很长,然后ShellExecute会生成新进程并返回.有谁知道如何解决或解决这个问题?
编辑:正如标签可能表明的那样,这是在使用C++的Win32上.
我不知道是什么导致了它,但Mark Russinovich(sysinternal的名声)有一个非常好的博客,他解释了如何调试这些事情.一个值得关注的好处是延迟Windows Vista文件打开对话框的案例,他只使用进程资源管理器调试了类似的问题(结果是访问域的问题).你当然可以使用常规的Windows调试器来做类似的事情.
您的问题可能与他不一样,但使用这些技术可能会帮助您更接近问题的根源.我建议调用该CreateProcess
调用,然后捕获一些堆栈跟踪并查看它似乎挂起的位置.
流程启动延迟的情况可能对您更有意义.