按键精灵后台鼠标按键怎么用?
Hwnd=Plugin.Window.MousePoint()//获取鼠标指向窗口句柄,为后台服务Delay1000CallPlugin.Bkgnd.LeftClick(...
Hwnd = Plugin.Window.MousePoint()//获取鼠标指向窗口句柄,为后台服务
Delay 1000
Call Plugin.Bkgnd.LeftClick(Hwnd, 300, 300)
Call Plugin.Bkgnd.LeftClick(Hwnd, 400, 400)
Call Plugin.Bkgnd.LeftClick(Hwnd, 500, 500)
Call Plugin.Bkgnd.LeftClick(Hwnd, 600, 600)
这是我的代码,是测试鼠标怎么用的,开的是画图,按设想应该能在画布上点出4个点的,怕坐标有问题,至少也有几个点在画布里面吧,但我一个也看不到,求高手指导啊。
换成在记事本里按键盘已经能实现了 展开
Delay 1000
Call Plugin.Bkgnd.LeftClick(Hwnd, 300, 300)
Call Plugin.Bkgnd.LeftClick(Hwnd, 400, 400)
Call Plugin.Bkgnd.LeftClick(Hwnd, 500, 500)
Call Plugin.Bkgnd.LeftClick(Hwnd, 600, 600)
这是我的代码,是测试鼠标怎么用的,开的是画图,按设想应该能在画布上点出4个点的,怕坐标有问题,至少也有几个点在画布里面吧,但我一个也看不到,求高手指导啊。
换成在记事本里按键盘已经能实现了 展开
3个回答
2015-12-16 · 知道合伙人数码行家
关注
展开全部
1、首先打开按键精灵,点击新建
2、选择全部命令-插件命令-Window 窗口插件-MousePoint,然后点击插入
此命令是用来获得鼠标所指向位置的窗口句柄
3、获取到窗口句柄之后我们就可以对目标窗口进行操作了
比如我们测试向记事本中按下BAIDU这几个键
选择插件命令-Bkgnd 后台插件-keypress 模拟按键 (此命令是向目标窗口发送一个按键命令)
4、在按键键代码的输入框中按下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、其操作方法跟按键输入差不多,都需要先获得窗口句柄,然后就是键代码变成了坐标位置
另外说一下,可能有人会说,如果使用鼠标所在位置的句柄的话,这样鼠标就必须指向某一窗口,这样都不算是后台操作了,这里只是演示,可以在事先给出一个值,可以用按键抓抓工具来获得目标窗口句柄,然后将句柄复制下来,比如这里记事本中输入框的句柄为3343758
那么我们就把原来的Hwnd = Plugin.Window.MousePoint()这句代码改成Hwnd = 3343758
预先给Hwnd赋值
这样再运行后把记事本最小化,按下启动热键F10试试,然后再看看记事本,是不是多出了baidu这几个字符
由于每次窗口打开后句柄都是不一样的,我们也可以用Find命令来获取一个标题或类名固定不变的窗口的句柄,比如这边默认的就是获取记事本这个窗口的句柄,不管记事本打开关闭几次,用这个命令总是可以获得正确的窗口句柄
另外注意一下,这边获取的记事本句柄并不能进行输入操作,因为这边获取到的是记事本的句柄,而不是记事本中输入框的句柄,所以没办法对输入框进行操作,这个从按键抓抓中可以清楚的看到
2、选择全部命令-插件命令-Window 窗口插件-MousePoint,然后点击插入
此命令是用来获得鼠标所指向位置的窗口句柄
3、获取到窗口句柄之后我们就可以对目标窗口进行操作了
比如我们测试向记事本中按下BAIDU这几个键
选择插件命令-Bkgnd 后台插件-keypress 模拟按键 (此命令是向目标窗口发送一个按键命令)
4、在按键键代码的输入框中按下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、其操作方法跟按键输入差不多,都需要先获得窗口句柄,然后就是键代码变成了坐标位置
另外说一下,可能有人会说,如果使用鼠标所在位置的句柄的话,这样鼠标就必须指向某一窗口,这样都不算是后台操作了,这里只是演示,可以在事先给出一个值,可以用按键抓抓工具来获得目标窗口句柄,然后将句柄复制下来,比如这里记事本中输入框的句柄为3343758
那么我们就把原来的Hwnd = Plugin.Window.MousePoint()这句代码改成Hwnd = 3343758
预先给Hwnd赋值
这样再运行后把记事本最小化,按下启动热键F10试试,然后再看看记事本,是不是多出了baidu这几个字符
由于每次窗口打开后句柄都是不一样的,我们也可以用Find命令来获取一个标题或类名固定不变的窗口的句柄,比如这边默认的就是获取记事本这个窗口的句柄,不管记事本打开关闭几次,用这个命令总是可以获得正确的窗口句柄
另外注意一下,这边获取的记事本句柄并不能进行输入操作,因为这边获取到的是记事本的句柄,而不是记事本中输入框的句柄,所以没办法对输入框进行操作,这个从按键抓抓中可以清楚的看到
2014-02-03
展开全部
你不说明按F1和按F2的功能,脚本没法写的。
1、通常情况下,按F1是调用当前窗口的帮助,你的循环怎么实现?
2、窗口最小化,鼠标将无法捕获窗口句柄,不可能实现对“此窗口”的操作。
按楼主的原意,后台脚本是这样的,但手头没有你的游戏,没办法测试。
Delay 3000
Plugin hn=Window.Foreground()
Delay 1000
For 9999
Plugin Bkgnd.KeyPress(hn,112)
Delay 2000
Plugin Bkgnd.LeftClick(hn,400,411)
Delay 1000
Plugin Bkgnd.KeyPress(hn,112)
Delay 2000
Plugin Bkgnd.LeftClick(hn,400,411)
Delay 1000
Plugin Bkgnd.KeyPress(hn,113)
Delay 1000
EndFor
确保该窗口为第一打开窗口,并激活窗口时启动脚本。之后可转为后台。
1、通常情况下,按F1是调用当前窗口的帮助,你的循环怎么实现?
2、窗口最小化,鼠标将无法捕获窗口句柄,不可能实现对“此窗口”的操作。
按楼主的原意,后台脚本是这样的,但手头没有你的游戏,没办法测试。
Delay 3000
Plugin hn=Window.Foreground()
Delay 1000
For 9999
Plugin Bkgnd.KeyPress(hn,112)
Delay 2000
Plugin Bkgnd.LeftClick(hn,400,411)
Delay 1000
Plugin Bkgnd.KeyPress(hn,112)
Delay 2000
Plugin Bkgnd.LeftClick(hn,400,411)
Delay 1000
Plugin Bkgnd.KeyPress(hn,113)
Delay 1000
EndFor
确保该窗口为第一打开窗口,并激活窗口时启动脚本。之后可转为后台。
追问
不明白你在说什么,F1F2我没打算用啊?是个什么用途?我现在就是在画图里面测试,不是游戏啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,后台操作,前台鼠标是不会移动的,也就说鼠标指针不会动的,只不过鼠标如果在窗口里面会就闪一下,还有,当窗口处于前台状态,前台鼠标坐标会影响后台鼠标操作坐标,所以后台操作时,最好不要把窗口前台,最后,按键自带鼠标操作,有三个参数,其中第二,第三个是坐标,事实上鼠标是不会后台移动后面所设的坐标,所有点击操作,前面都要加一条移动鼠标命令:
Call Plugin.Bkgnd.MoveTo(Hwnd, 300, 300)
我猜你应该刚学后台操作不久,我先告诉你,有些窗口,(例如不少游戏)会屏蔽按键精灵自带后台插件操作,也就是说操作会无效,需要用更强大的插件,这些你以后慢慢了解吧。
Call Plugin.Bkgnd.MoveTo(Hwnd, 300, 300)
我猜你应该刚学后台操作不久,我先告诉你,有些窗口,(例如不少游戏)会屏蔽按键精灵自带后台插件操作,也就是说操作会无效,需要用更强大的插件,这些你以后慢慢了解吧。
更多追问追答
追问
我只需要他在某个点上点击一定要先moveto么?那比如要在300 300上点击,要执行MoveTo(Hwnd, 300, 300)LeftClick(Hwnd, 300, 300)这两句才完成一次点击?
或者是说第二句里面的坐标就不产生什么影响么?
按键精灵被屏蔽我倒是有准备的,以前准备 在虚拟机上操作按键精灵,但是内存开销太大,后来才发现有后台操作,就来试试
追答
是的要两句,不过坐标还是会受到前台鼠标影响。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询