Окно нового процесса убрать из фокуса
От: kevkev  
Дата: 24.02.14 15:12
Оценка:
Имеется программа, которая иногда запускает внешнюю консольную утилиту.

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

Одно из решений, что пришло в голову ставить создаваемому процессу
::ShowWindow( g_HWND, SW_HIDE );

но здесь нужно знать hwnd нового процесса. Написал такой код для его получения:

EnumWindows(EnumWindowsProcMy,(LPARAM)GetProcessId(pi.hProcess));
.....
BOOL CALLBACK EnumWindowsProcMy(HWND hwnd,LPARAM lParam)
{
DWORD lpdwProcessId;

GetWindowThreadProcessId(hwnd,&lpdwProcessId);

if(lpdwProcessId==lParam)
{
g_HWND=hwnd;
return FALSE;
}
return TRUE;
}

Но тут странность: условие никогда не срабатывает, хотя lParam правильный, именно такой id имеет мой новый процесс в таск менеджере.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.