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

本文详细介绍了如何利用SPY++工具截获并获取指定进程中的窗口信息,包括窗口句柄、类名、内容、大小及进程、线程ID等。通过实践案例,读者可以深入理解相关技术细节。

今天我们学习如何获取到其他进程窗体信息如: 类名,窗体内容,大小以及进程和线程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  例程

 

演示代码

转载于:https://www.cnblogs.com/ztercel/archive/2011/08/22/2150015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值