借助Spy++向指定的窗口发送消息—3
来源:互联网 发布:matlab定积分计算编程 编辑:程序博客网 时间:2024/05/18 00:37
在1,2部分我已经实现了向单词输入窗口中发送文本(单词),下面我要向翻译软件发送确认消息,相当于我点击“查询按
钮”。要发送点击按钮的消息,首先仍然是通过spy找到这个按钮窗口。将spy瞄准器拖放到确认按钮上。
点击确定按钮查看详细信息,可以看到该按钮窗口的控件ID。知道了控件的ID,就可以通过第2节中的方法来判断当前子窗体是否是要找的确认按钮,如果是确认按钮就可以用SendMessage向该窗口发送鼠标点击消息。
由于通过控件ID来确认窗口和第2节中的方法一样,所以这里我换成用控件在遍历中的索引来确认窗口。在继续之前请注意下确认窗口的窗口句柄(000206E6);
- int i=0; //控件的索引
- BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lParam)
- {
- //定义两个字符数组,分别用来保存子窗口的句柄和索引
- char hdl[10],num[10];
- //将句柄和索引转换为字符
- itoa((int)(hwnd) ,hdl,16);
- itoa(i ,num,10);
- //将转换后的字符数组再转换位字符串
- CString shdl=hdl;
- CString snum=num;
- //获得窗口上的ListBox句柄,ListBox用来显示句柄和对应的索引
- CWnd *p=((CWnd*)lParam)->GetDlgItem (IDC_LIST1);
- ((CListBox*)p)->AddString (snum+":"+shdl);
- //窗体索引自增
- i++;
- //后面的部分和第2节中的一样。
- int id=-1;
- id=::GetDlgCtrlID(hwnd);
- if(id==0x69)
- {
- ::SendMessage(hwnd,WM_SETTEXT,NULL,(LPARAM)("spy"));
- }
- return TRUE;
- }
程序窗体:一个ListBox,一个Button
可以看到这里的句柄(206E6)在遍历子窗体的过程中,对应的索引号是9,虽然窗口的句柄在程序重启后可能是不同的,但是窗口在遍历过程的顺序是不变得,即每次遍历的过程中,确认窗口都是第10个找到的(索引基于0)。因此就可以通过这个索引来找到需要的窗体,然后做相应的事情。
这样我就可以在上面的回调函数中加上如下判断语句就可以实现鼠标点击效果了。
- int i=0; //控件的索引
- BOOL CALLBACK EnumProc(HWND hwnd,LPARAM lParam)
- {
- //定义两个字符数组,分别用来保存子窗口的句柄和索引
- char hdl[10],num[10];
- //将句柄和索引转换为字符
- itoa((int)(hwnd) ,hdl,16);
- itoa(i ,num,10);
- //将转换后的字符数组再转换位字符串
- CString shdl=hdl;
- CString snum=num;
- //获得窗口上的ListBox句柄,ListBox用来显示句柄和对应的索引
- CWnd *p=((CWnd*)lParam)->GetDlgItem (IDC_LIST1);
- ((CListBox*)p)->AddString (snum+":"+shdl);
- //窗体索引自增
- i++;
- //后面的部分和第2节中的一样。
- int id=-1;
- id=::GetDlgCtrlID(hwnd);
- if(id==0x69)
- {
- ::SendMessage(hwnd,WM_SETTEXT,NULL,(LPARAM)("spy"));
- }
- //根据索引确定窗口
- if(9==i)
- {
- ::SendMessage(hwnd,WM_LBUTTONDOWN,NULL,0); //发送鼠标按下消息
- ::SendMessage(hwnd,WM_LBUTTONUP,NULL,0); //发送鼠标左键弹起消息
- }
- return TRUE;
- }
红色部分就是我根据索引判断窗口是否是确认窗口,并发送鼠标按下和弹体消息。
可以看到点击确认按钮后,翻译软件显示了网络翻译信息。
- 借助Spy++向指定的窗口发送消息—3
- 借助Spy++向指定的窗口发送消息—1
- 借助Spy++向指定的窗口发送消息—2
- 借助Spy++向指定的窗口发送消息—2
- 向指定窗口发送消息
- MFC 向指定窗口发送自定义消息
- MFC 向指定窗口发送自定义消息
- MFC 向指定窗口发送自定义消息
- 向窗口发送消息
- 向指定窗口发送键击消息Delphi
- 向指定窗口发送模拟键盘按键消息
- Windows下向指定窗口模拟发送键盘消息
- 向指定的对象发送消息
- 如何向窗口发送消息
- 子窗口向父窗口发送消息
- 子窗口向父窗口发送消息
- 子窗口向父窗口发送消息
- 向非活动窗口发送Hook到的消息
- uClinux学习笔记之二 - 将新增应用程序编译进内存镜像文件
- 单词循环记忆法
- 不要一辈子靠技术生存(转)
- InstallShield创建自定义对话框的基本方法
- Ioc 反转控制
- 借助Spy++向指定的窗口发送消息—3
- HDU 1013 Digital Roots
- 嘿嘿 最基本的jdk+tomcat 配置
- 2009年考研计算机专业复习指导
- 浅论ViewState及其与Session的关系
- Microsoft 数据库三版本共存:SQL Server 2000(SP4) + SQL Server 2005(SP2) + SQL Server 2008
- 数组和指针 [C专家编程]
- 率性而作无题歌一首
- 佛与专家