我有一个开源应用程序,比方说浏览器,比方说我是从稳定分支构建的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。