【问题标题】:Identify which executable is throwing a runtime error确定哪个可执行文件引发运行时错误
【发布时间】:2010-06-15 21:20:49
【问题描述】:

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

【问题讨论】:

标签: winapi win32-process


【解决方案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() 更可取。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 抱歉,其中任何一个都无法工作 :( - GetWindowModuleFileName 和 GetModuleFileName 仅适用于 2000、XP 和 Vista 上的调用进程。请参阅 support.microsoft.com/?id=228469
    猜你喜欢
    • 2019-03-03
    • 2019-10-31
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多