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");
}
SPY++的使用
最新推荐文章于 2024-04-23 21:24:57 发布