0

我有一个抛出运行时错误对话框的程序。有没有办法以编程方式检测哪个可执行文件是来自另一个进程的此对话框的父级?

4

2 回答 2

1

更新:您可以使用GetWindowModuleFileName从窗口句柄中获取进程名称

要找到查找句柄,您可以获取 DesktopWindow,然后枚举这些句柄,直到找到带有错误消息的句柄。

于 2010-06-15T21:31:20.450 回答
1

是的。代码将是这样的(省略错误检查):

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() 更可取。

于 2010-06-15T21:31:25.427 回答