我有一个程序正在抛出一个运行时错误对话框。有没有办法以编程方式从另一个进程检测哪个可执行文件是此对话框的父级?
答案 0 :(得分:1)
更新:您可以使用GetWindowModuleFileName
从窗口句柄中获取进程名称要找到查找句柄,您可以get the DesktopWindow然后枚举这些句柄,直到找到带有错误消息的句柄。
答案 1 :(得分: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()。