Как узнать дескриптор окна на котором сейчас фокус?
От: maxidroms Россия  
Дата: 17.01.05 16:00
Оценка:
Допустим есть програмка которая запущена и сидит в трее...она должна по таймеру каждые 10 милисекунд узнавать дескриптор окна на котором сейчас фокус.
Еще лучше если не дескриптор окна а имя процесса.

17.01.05 22:28: Перенесено из 'C/C++'
Re: Как узнать дескриптор окна на котором сейчас фокус?
От: DestatoR Россия  
Дата: 17.01.05 17:18
Оценка:
Здравствуйте, maxidroms, Вы писали:

M>Допустим есть програмка которая запущена и сидит в трее...она должна по таймеру каждые 10 милисекунд узнавать дескриптор окна на котором сейчас фокус.

M>Еще лучше если не дескриптор окна а имя процесса.

можно написать так:

HWND hWnd = GetForegroundWindow();
DWORD dwProcessID, dwThreadID = GetWindowThreadProcessId(hWnd, &dwProcessID);
Ничто так не ограничивает полёт мысли программиста, как компилятор
Re[2]: Как узнать дескриптор окна на котором сейчас фокус?
От: DestatoR Россия  
Дата: 17.01.05 17:53
Оценка:
> можно написать так:

> HWND hWnd = GetForegroundWindow();

> DWORD dwProcessID, dwThreadID = GetWindowThreadProcessId(hWnd, &dwProcessID);

а имя Exe-шника ищется примерно так:

char *GetExeName(char *szTmp, DWORD PID)
{
*szTmp = 0;
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, PID );
if(hProcess)
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
GetModuleBaseName( hProcess, hMod, szTmp, MAX_PATH);

CloseHandle( hProcess );
}
return szTmp;
}

P.S.: EnumProcessModules и GetModuleBaseName объявлены в psapi.h
Ничто так не ограничивает полёт мысли программиста, как компилятор
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.