2011-09-02 75 views
0

是否可以找出MessageBox属于哪个进程?如果是,如何?检测MessageBox属于哪个进程

+2

GetWindowThreadProcessId会告诉你,但我想知道为什么你需要知道这一点。你不应该搞乱另一个进程的窗口。 (如果有人与*你的窗口搞混了,你不会喜欢它。) –

+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; 
} 

不确定为什么你想要这个过程。我能想到的原因:所有这些

  • 完全终止所述消息框
  • 检测过程
  • 检测特定消息框

具有优异&更优化的替代解决方案。

0

另一个答案给出了编程解决方案。如果这是一次性调试,您可以使用Spy ++选择窗口,从属性窗口获取进程ID,然后在任务管理器中查找进程。