У меня есть приложение с открытым исходным кодом, скажем, браузер, скажем, Firefox ESR 52.9.0, который я собрал из стабильной ветки. Это работает довольно хорошо. Но когда я пытаюсь продлить его
функциональность и звонок скажем:
ShellExecute(0, 0, L"http://www.google.com", 0, 0 , SW_SHOW
);
который должен открыть браузер по умолчанию - Google Chrome, iexplore, Opera, что угодно - задержка может занять от 2 секунд до минуты.
То же самое касается ShellExecuteEx (), system (), даже CreateProcess ().
Итак, я вижу отладку, что процесс успешно создан сразу в консоли, но на самом деле другое приложение (это может быть просто проводник) запускается с огромной задержкой, например, 20 секунд.
Я читал о COM init, но
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
не помогает.
Я мог понять задержки в COM, но когда мы создаем новый процесс, и я сразу вижу отладку о создании процесса, но на самом деле процесс запускается через 20 секунд - я просто не могу поверить, что это возможно. Может быть, у кого-то есть объяснение этой магии? Это Windows7 x64.