【Demo 0030】获取其他进程窗体信息(防SPY++)

今天我们学习如何获取到其他进程窗体信息如: 类名,窗体内容,大小以及进程和线程ID等; 但我们做的练习将会比我们所要学的更有意思;  哈哈… 我们通过仿VS著名工具SPY++中拖拉鼠标到指定窗体上来截获窗体句柄,根据窗体句柄后获取特点窗体的信息(例程中屏避了对本进程的窗体),  根据这个例子我们对其中技术一起学习, 先看一下SPY++效果:

image

一、 改变鼠标光标

     1.  LoadCursor 加载光标资源


hCursor     = LoadCursor(pcs->hInstance, MAKEINTRESOURCE(IDC_CURSOR1));

     2.  SetCursor 设置光标样式

            
SetCursor(hCursor);

二、 获取鼠标在非窗体中的消息

    1.  SetCapture 设置截取鼠标事件的窗体(鼠标按下后)


SetCapture(hWnd);

    2.  ReleaseCapture 释放对鼠标事件截获(鼠标释放后)


ReleaseCapture();

三、 获取鼠标下的窗体

    1.  GetCurrentPos 获取鼠标位置

    


POINT ptMouse;
GetCursorPos(&ptMouse);

    2.  WindowFromPoint 根据位置获取


POINT ptMouse;
GetCursorPos(&ptMouse);
HWND hWndTmp = WindowFromPoint(ptMouse);

四、 获取窗体信息(窗体内容,窗体类名,窗体风格,大小以及进程和线程ID)

//==: Retrieve the Window information
TCHAR szWndInfo[512]    = {0};
TCHAR szWndText[128]    = {0};
TCHAR szClsName[64]        = {0};
SendMessage(hWndTmp, WM_GETTEXT, (WPARAM)128, (LPARAM)szWndText);
GetClassName(hWndTmp, szClsName, 64);
DWORD dwStyle;
dwStyle = GetClassLongPtr(hWndTmp, GCL_STYLE);
RECT rtTmp;
GetWindowRect(hWndTmp, &rtTmp);
DWORD TID;
DWORD PID;
TID = GetWindowThreadProcessId(hWndTmp, &PID);

WINDOWINFO wndInfo;
wndInfo.cbSize    = sizeof(wndInfo);
GetWindowInfo(hWndTmp, &wndInfo);
_stprintf(szWndInfo,
          _T("\n´°Ìå:\t    0x%0X")
          _T("\nÎı¾:\t    %s")
          _T("\nÀàÃû:\t    %s")
          _T("\nÑùʽ:\t    0x%0X")
          _T("\n¾ØÐÎ:\t    (%d,%d)-(%d,%d) %dx%d")
          _T("\nÏß³Ì:\t    0x%08X")
          _T("\n½ø³Ì:\t    0x%08X"),
          hWndTmp,
          szWndText,
          szClsName,
          wndInfo.dwStyle,
          rtTmp.left, rtTmp.top, rtTmp.right, rtTmp.bottom, (rtTmp.right - rtTmp.left), (rtTmp.bottom - rtTmp.top),
          TID,
          PID);
SetWindowText(GetDlgItem(hWnd, ID_LABINFO), szWndInfo);

 

以下用SPY++获取的窗体信息与例程读取的信息

image    image

              图1  SPY++                                                                             图2  例程

 

演示代码

posted @ 2011-08-22 23:04  zTercel  阅读(1994)  评论(0编辑  收藏  举报