检测MessageBox属于哪个进程

时间:2011-09-02 14:12:06

标签: windows winapi popup messagebox

是否可以找出MessageBox属于哪个进程?如果是,怎么样?

2 个答案:

答案 0 :(得分:2)

您想使用GetWindowThreadProcessId。这是一个例子。

#include <windows.h>

static const TCHAR g_cszClass = TEXT("#32770"); // dialog box class

// returned handle must be closed with CloseHandle() when no longer used
HANDLE GetMessageBoxProcess(__in_z LPCTSTR lpcszTitle, __in DWORD dwAccess)
{
  HWND    hWnd;
  DWORD   dwProcessId = 0;
  HANDLE  hRET;

  hWnd = FindWindow(g_cszClass, lpcszTitle);
  if (hWnd != NULL)
  {
    GetWindowThreadProcessId(hWnd, &dwProcessId);
    if (dwProcessId != 0)
      hRET = OpenProcess(dwAccess, FALSE, dwProcessId);
  }
  return hRET;
}

不知道你为什么要这个过程。我能想到的原因:

  • 完全终止消息框
  • 检测过程
  • 检测某个消息框

所有这些都具有优越性更优化的替代解决方案。

答案 1 :(得分:1)

另一个答案是程序化解决方案。如果这是一次性的调试,你可以选择带有Spy ++的窗口,从属性窗口中获取进程ID,然后在任务管理器中查找该进程。