很多朋友都对窗口句柄比较迷糊,这篇短文就以spy++这个软件为主,介绍下窗体句柄和使用按键插件时
,如果对这个句柄发送消息,即所谓的后台挂机。
spy++这个软件来自VC++,装好VC后,就可以在工具中看到。
我们以“记事本”为例,看看如果给记事本发送按键消息。
首先启动记事本
随后启动SPY++
使用spy++的查找功能
点开后的效果
我们把黑色准星拖动到记事本窗体上
然后点击“确定”,看到了SPY++已经显示了下图红色的内容。
这三个句柄从上到下依次是:
记事本的主句柄
文字输入框的句柄
状态栏的句柄
我们要给记事本发送按键消息,就要选对发送对象(句柄),这里显然,我们要发送给“文字输入框”。我们双击“文字输入框”这里,可以看到“窗口标题”、“窗口大小”、“窗口位置”等信息。点击“类”选项卡,查看下类名是什么,代码里需要类名做参数
,如果对这个句柄发送消息,即所谓的后台挂机。
spy++这个软件来自VC++,装好VC后,就可以在工具中看到。
![](https://img-my.csdn.net/uploads/201209/16/1347808380_3229.jpg)
我们以“记事本”为例,看看如果给记事本发送按键消息。
首先启动记事本
![](https://img-my.csdn.net/uploads/201209/16/1347808392_3595.jpg)
随后启动SPY++
![](https://img-my.csdn.net/uploads/201209/16/1347808403_6167.jpg)
使用spy++的查找功能
![](https://img-my.csdn.net/uploads/201209/16/1347808415_1254.jpg)
点开后的效果
![](https://img-my.csdn.net/uploads/201209/16/1347808427_1331.jpg)
我们把黑色准星拖动到记事本窗体上
![](https://img-my.csdn.net/uploads/201209/16/1347808609_5359.jpg)
然后点击“确定”,看到了SPY++已经显示了下图红色的内容。
![](https://img-my.csdn.net/uploads/201209/16/1347808463_8723.jpg)
这三个句柄从上到下依次是:
记事本的主句柄
文字输入框的句柄
状态栏的句柄
我们要给记事本发送按键消息,就要选对发送对象(句柄),这里显然,我们要发送给“文字输入框”。我们双击“文字输入框”这里,可以看到“窗口标题”、“窗口大小”、“窗口位置”等信息。点击“类”选项卡,查看下类名是什么,代码里需要类名做参数
![](https://img-my.csdn.net/uploads/201209/16/1347808484_3095.jpg)
好了,基本的数据都有了,下面给出的代码:
- //打开记事本
- VBSCall RunApp("notepad.exe")
- //等待记事本完全打开
- Delay 100
- //得到当前窗口句柄
- dim hwnd
- Plugin hwnd=Window.Foreground()
- //查找当前窗口下的子句柄
- dim edithwnd
- Plugin edithwnd=Window.FindEx(hwnd,0,"Edit",0)
- //发送字符串消息
- Plugin Window.SendString(edithwnd, "看我发送字符串消息")
- //发送回车
- Plugin Window.SendKeyDown(edithwnd,13)
- //发送键盘消息
- Plugin Window.SendKeyDown(edithwnd,asc("1"))