从应用程序调用的CreateProcess()或ShellExecute()或system()中的巨大延迟(从几秒钟到几分钟)

时间:2019-06-27 20:33:02

标签: firefox winapi com createprocess shellexecute

我有一个开源应用程序,比方说浏览器,比方说我是从稳定分支构建的firefox ESR 52.9.0。效果很好。但是当我尝试扩展其 功能并打电话说:

ShellExecute(0, 0, L"http://www.google.com", 0, 0 , SW_SHOW);

这应该会打开默认的浏览器-谷歌浏览器,iexplore,任何类型的歌剧-延迟可能需要2秒到一分钟左右的时间。 关于ShellExecuteEx(),system()甚至CreateProcess()都是相同的。 因此,我看到调试过程立即在控制台中成功创建,但实际上另一个应用程序(可能只是资源管理器)的启动却延迟了20秒钟,而这是一个很大的延迟。 我读到有关COM初始化的信息,但

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);

没有帮助。 我可以理解COM的延迟,但是当我们创建一个新进程时,我立即看到有关进程创建的调试信息,但实际上进程在20秒内启动-我简直不敢相信这是可能的。也许有人对此魔术有解释?是Windows7 x64。

0 个答案:

没有答案