SPY++的使用

Spy++ (SPYXX.EXE) 是一个基于 Win32 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图。使用 Spy++ 可以执行下列操作: 
1、显示系统对象(包括进程、线程和窗口)之间关系的图形树。 
2、搜索指定的窗口、线程、进程或消息。 
3、查看选定的窗口、线程、进程或消息的属性。 
4、直接从视图中选择窗口、线程、进程或消息。 
5、通过鼠标定位,使用查找程序工具选择窗口。 
6、使用复杂的消息日志选择参数设置消息选项。
 
示例1:利用spy找到窗口类名及标题 
HWND proc = FindWindow("TForm1","NetSetMan");   
if(proc)   
{   
    HWND h1 = NULL;   
    char className[32];   
    char capitalName[32];   
  
    while(h1 = FindWindowEx(proc,h1,NULL,NULL))   
    {   
        GetClassName(h1,className,sizeof(className));   
        CWnd::FromHandle(h1)->GetWindowText(capitalName,sizeof(capitalName));   
        printf("%s:%s/n",className,capitalName);   
  
        HWND h2 = NULL;   
        //while(h2 = FindWindowEx(h1,h2,NULL,NULL))   
        //{   
        //  GetClassName(h2,className,sizeof(className));   
        //  CWnd::FromHandle(h2)->GetWindowText(capitalName,sizeof(capitalName));   
        //  printf("/t%s:%s/n",className,capitalName);   
        //     
        //  if(strcmp(capitalName,"应用") == 0)   
        //  {   
        //      CWnd::FromHandle(h2)->SendMessage(BM_CLICK);   
        //  }   
        //}   
           
        if(h2 = FindWindowEx(h1,NULL,"TTntButton.UnicodeClass","应用"))   
        {   
            CWnd::FromHandle(h2)->SendMessage(BM_CLICK);   
        }   
    }   
}else  
{   
    printf("process not found!/n");   
}
 
示例2:当控件没有标题时可以通过排列位置找到该控件
HWND proc = FindWindow("MrTalk_clazz","MediaRing Talk");   
HWND my1 = NULL;   
HWND my2 = NULL;   
if(proc)   
{   
    HWND h1 = NULL;   
    char className[32];   
    char capitalName[32];   
  
    while(h1 = FindWindowEx(proc,h1,NULL,NULL))   
    {   
        GetClassName(h1,className,sizeof(className));   
        CWnd::FromHandle(h1)->GetWindowText(capitalName,sizeof(capitalName));   
        //printf("%s:%s/n",className,capitalName);   
  
        int index = 0;   
        HWND h2 = NULL;   
        while(h2 = FindWindowEx(h1,h2,NULL,NULL))   
        {   
            ++index;   
            GetClassName(h2,className,sizeof(className));   
            CWnd::FromHandle(h2)->GetWindowText(capitalName,sizeof(capitalName));   
            //printf("/t%s:%s/n",className,capitalName);   
  
            if(index == 6)   
            {   
                my1 = h2;   
                ((CComboBox *)CWnd::FromHandle(h2))->SetCurSel(0);      
            }   
  
            if(index == 17)   
            {   
                my2 = h2;   
                CWnd::FromHandle(h2)->SendMessage(BM_CLICK);   
            }   
        }   
    }   
}else  
{   
    printf("process not found!/n");   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值