Как я могу создать процесс со скрытием окна процесса (от панели задач) в winXP?с функцией CreateProcess? - PullRequest
0 голосов
/ 21 января 2011
 /* CreateProcess initialization */
 STARTUPINFO si;
 PROCESS_INFORMATION pi;

 memset(&si, 0, sizeof(si));
 memset(&pi, 0, sizeof(pi));
 si.cb = sizeof(si);

 long ret;
 // si.wShowWindow = SW_HIDE;
 // hide process window.... // run in background..

 si.dwFlags = STARTF_USESHOWWINDOW;
 si.wShowWindow = SW_HIDE;

 if (!CreateProcess(0, exe,
        0, 0, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi)) {
    return;
 }
 //int prez = WaitForSingleObject(pi.hProcess, INFINITE);

 //CloseHandle(pi.hProcess);

Ответы [ 3 ]

5 голосов
/ 21 января 2011

Вы можете попытаться установить для элемента dwFlags вашей структуры STARTUPINFO значение STARTF_USESHOWWINDOW, а для элемента wShowWindow значение SW_HIDE.

.1010 * передать 0 в качестве параметра nCmdShow WinMain.Однако не все приложения Windows хорошо себя ведут и используют это значение для первоначального вызова ShowWindow().

0 голосов
/ 03 марта 2011

Вы можете найти окно, связанное с запущенным процессом (см. <a href="http://msdn.microsoft.com/en-us/library/ms633499%28VS.85%29.aspx" rel="nofollow">FindWindow</a> и <a href="http://msdn.microsoft.com/en-us/library/ms633497%28VS.85%29.aspx" rel="nofollow">EnumWindows</a>), и вызвать функцию <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx" rel="nofollow">ShowWindow</a> с помощью SW_HIDE.В качестве альтернативы вы можете изменить расширенный стиль окна, удалив WS_EX_APPWINDOW и добавив WS_EX_TOOLWINDOW.

. Самый простой способ - все еще использовать STARTUPINFO, как описано в первом ответе, если запущенный процесс уважает настройку.

0 голосов
/ 21 января 2011

Не вы, создатель нового процесса, регистрируете новый процесс в панели задач. Это новый процесс, который создает окно верхнего уровня, которое решает, находиться ли на панели задач. Это решение основано на расширенном стиле этого окна верхнего уровня, которое определяется новым процессом.

Другими словами, чтобы сделать это, вам нужно будет ткнуть в окно верхнего уровня в этом другом процессе.

...