WinApplication без окна и CreateProcess
От: Аноним  
Дата: 28.10.08 14:49
Оценка:
Всем привет.
Есть следующая проблема:

— Создаю приложение как Windows Application
— Удаляю всё из WinMain (точнее, создаю Empty Project)
— Пишу туда свой код, состоящий из:
CreateProcess( ... ) с установкой STARTF_USESHOWWINDOW и SW_SHOWMAXIMIZED (то есть окно создаваемого процесса должно выйти на передний план и максимизироваться)
WaitForSingleObject( pi.hProcess, INFINITE ); — жду завершения запущенного процесса
— Проблема в следующем: при запуске из эксплорера окно эксплорера получается активным!, то есть перекрывает окно созданного процесса. Если WaitForSingleObject убрать (то есть прога-родитель завершается), эксплорер оказывается под окном вызванного процесса. Если вместо WaitForSingleObject просто поставить пустой цикл, проблема остаётся, эксплорер наверху. То есть получается, что сама моя безоконная прога делает эксплорер столь активным.

Подскажите, плиз, как можно эту проблему решить.


Вот исходник:

#include <windows.h>

int __stdcall wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd ) {
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &pi, sizeof(pi) );
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;

if( !CreateProcessW( L"proga.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) ) {
DWORD err = GetLastError();
return -1;
}

WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

return 0;
}

28.10.08 19:06: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.