1、首先打开按键精灵,点击新建;
2、选择全部命令-插件命令-Window 窗口插件-MousePoint,然后点击插入此命令是用来获得鼠标所指向位置的窗口句柄;
3、获取到窗口句柄之后我们就可以对目标窗口进行操作了,比如测试向记事本中按下BAIDU这几个键;
4、选择插件命令-Bkgnd 后台插件-keypress 模拟按键 (此命令是向目标窗口发送一个按键命令);在按键键代码的输入框中按下B键,自动给出数字66,然后点击插入,再依次输入A,I,D,U,继续插入;
5、看到右边的代码编辑界面中66,65,7368,85分别数B,A,I,D,U的键代码,也就是ASCII码;注意一下这边的Hwnd,Hwnd这个变量用来储存鼠标所指向窗口的句柄,下面的Keypress中第一个参数就是窗口句柄,所以第一个参数全部是Hwnd;
6、接下来按F5运行试试看,按键精灵中默认启动热键是F10,我们打开记事本,然后鼠标放在记事本中,按下F10看看效果,可以看到记事本中依次输入了baidu这几个字符;
7、如果要进行鼠标点击操作的话,在插件命令中,有提供多种鼠标操作命令,比较常用的是LeftClick进行鼠标左键单击,其需要的参数第一个为目标窗口句柄,第二个就是目标窗口中所在点的X坐标,第三个则是Y坐标,说一下,这里的坐标是相对于目标窗口来说的,而不是整个屏幕,以目标窗口最左上角为起点(0,0)开始计算,到目标窗口最右下角;
8、其操作方法跟按键输入差不多,都需要先获得窗口句柄,然后就是键代码变成了坐标位置;
9、另外说一下,可能有人会说,如果使用鼠标所在位置的句柄的话,这样鼠标就必须指向某一窗口,这样都不算是后台操作了,这里只是演示,可以在事先给出一个值,可以用按键抓抓工具来获得目标窗口句柄,然后将句柄复制下来,比如这里记事本中输入框的句柄为3343758;
那么就把原来的Hwnd = Plugin.Window.MousePoint()这句代码改成Hwnd = 3343758
预先给Hwnd赋值;
10、这样再运行后把记事本最小化,按下启动热键F10试试,然后再看看记事本,是不是多出了baidu这几个字符;
11、由于每次窗口打开后句柄都是不一样的,我们也可以用Find命令来获取一个标题或类名固定不变的窗口的句柄,比如这边默认的就是获取记事本这个窗口的句柄,不管你记事本打开关闭几次,用这个命令总是可以获得正确的窗口句柄;
另外注意一下,这边获取的记事本句柄并不能进行输入操作,因为这边获取到的是记事本的句柄,而不是记事本中输入框的句柄,所以没办法对输入框进行操作,这个从按键抓抓中可以清楚的看到。
呵呵,这么有诱惑力呀?
我今天刚好有时间,教你一下:
第一,首先,你得获得窗口句柄。因为你想要后台操作你得告诉脚本你那个窗口是什么句柄。这样好发送按键或鼠标消息给它。不知道句柄?——句柄就像是某个窗口的姓名,你想调动一个人总得称它名讳吧?就是这样理。
例:ck=Window.GetKeyFocusWnd()
这就是你在某个窗口按下按键精灵启动时得么的当前窗口句柄。并保存到ck这个变量中,以后就只要想让该窗口做什么就得加上它的“名字”:ck!
第二,你在发送键盘消息和鼠标消息时就得加上这个句柄,如:
Plugin Bkgnd.KeyPress(ck,51)
怎么样,看到那个名字ck了吗?意是说,向这个叫ck窗口发送一个按键码即51也就是4号键的键码。那么这样的话,你就是不在该窗口,你就是在看电影也好,它还是很忠实地身这个窗口按下了4键!
这是键盘,下面讲下鼠标:
Plugin Bkgnd.LeftClick(ck,200,300)
看到了吧?现在应该从上面得到理解了,也就是说向这个叫ck窗口发送一个鼠标单击事件,也就是ck后面的坐标位置:200,300
那么你就是在看电影也好,它还是会向这个窗口坐标为200,300地方按下了鼠标左键单击!而你看电影一点也没有影响!
说了这么多,你应该明白了吧?
呵呵
写了这么多,代码也给你了而且也有用QQ发了给你,可以吧?
补充:
原来是个骗子···
——以马内利
把下面的语句复制到按键精灵的源文件,保存后,先让需要后台运行的窗口置于当前窗口,然后运行下面的脚本,现在可以让那个窗口在后台了。
Plugin hwnd = Window.GetKeyFocusWnd()
Delay 125
Rem 开始
Plugin Window.SendKeypress(hwnd,88)
Delay 200
Goto 开始