Определите, какой исполняемый файл выдает ошибку во время выполнения - PullRequest
0 голосов
/ 16 июня 2010

У меня есть программа, которая выдает сообщение об ошибке во время выполнения. Есть ли способ программно определить, какой исполняемый файл является родителем этого диалогового окна от другого процесса?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Да.Код будет выглядеть примерно так (проверка ошибок опущена):

HWND hWindow = FindWindow( NULL, windowName );
DWORD processId;
GetWindowTheadProcessId( hWindow, &processId );
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, processId );
GetModuleFileNameEx( hProcess, NULL, buffer, BUFFER_SIZE );

Функция GetProcessImageFileName () предпочтительнее, чем GetModuleFileNameEx (), если вы не работаете со старыми платформами.

1 голос
/ 16 июня 2010

Обновление: вы можете получить имя процесса из дескриптора окна, используя GetWindowModuleFileName

Чтобы найти дескриптор поиска, вы можете получить DesktopWindow , а затем перечислять их, пока не найдете тот с сообщением об ошибке.

...