【发布时间】:2010-06-15 21:20:49
【问题描述】:
我有一个程序抛出运行时错误对话框。有没有办法以编程方式检测哪个可执行文件是来自另一个进程的此对话框的父级?
【问题讨论】:
标签: winapi win32-process
我有一个程序抛出运行时错误对话框。有没有办法以编程方式检测哪个可执行文件是来自另一个进程的此对话框的父级?
【问题讨论】:
标签: winapi win32-process
是的。代码将是这样的(省略错误检查):
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() 更可取。
【讨论】:
更新:您可以使用GetWindowModuleFileName从窗口句柄中获取进程名称
要找到查找句柄,您可以get the DesktopWindow 然后枚举这些句柄,直到找到带有错误消息的句柄。
【讨论】: