Я создаю приложение со скрытым главным окном, используя следующий код:
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
siStartupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_FORCEOFFFEEDBACK | STARTF_USESTDHANDLES;
siStartupInfo.wShowWindow = SW_HIDE;
if(CreateProcess(MyApplication, "", 0, 0, FALSE, 0, 0, 0, &siStartupInfo, &piProcessInfo) == FALSE)
{
// blah
return 0;
}
Все работает правильно, за исключением того, что окно моего основного приложения (вызывающего этот код) теряет фокус при открытии новой программы.
Я попытался понизить приоритет нового процесса, но проблема с фокусировкой осталась.
Есть ли способ избежать этого? кроме того, есть ли способ создать другой процесс без использования CreateProcess (или любого из API, которые вызывают CreateProcess, например ShellExecute)?
Я предполагаю, что мое приложение теряет фокус, потому что оно было передано новому процессу, даже когда оно скрыто.
Для тех из вас, кто интересуется тем, кто наверняка спросит «почему вы хотите это сделать», я отвечу, потому что у меня есть сторожевой процесс, который не может быть сервисом, и он запускается всякий раз, когда я открываю свое основное приложение. , Удовлетворенный
Спасибо за помощь. Код будет оценен.
Джесс.