Вы хотите использовать GetWindowThreadProcessId
. Вот пример.
#include <windows.h>
static const TCHAR g_cszClass = TEXT("#32770"); // dialog box class
// returned handle must be closed with CloseHandle() when no longer used
HANDLE GetMessageBoxProcess(__in_z LPCTSTR lpcszTitle, __in DWORD dwAccess)
{
HWND hWnd;
DWORD dwProcessId = 0;
HANDLE hRET;
hWnd = FindWindow(g_cszClass, lpcszTitle);
if (hWnd != NULL)
{
GetWindowThreadProcessId(hWnd, &dwProcessId);
if (dwProcessId != 0)
hRET = OpenProcess(dwAccess, FALSE, dwProcessId);
}
return hRET;
}
Не знаю, зачем вам этот процесс. Причины, о которых я могу думать:
- полностью завершает окно сообщения
- обнаружение процесса
- обнаружение определенного окна сообщения
Все они имеют превосходные и более оптимальные альтернативные решения.