
什么是同步器?
同步器,顾名思义,就是让多个窗口同时操作。
应用场景
多个游戏角色同时打怪,一个角色普通攻击一下怪物,怪物扣掉一滴血,如果五开游戏同时打怪,怪物一秒钟同时扣掉五滴血,实现伤害倍增。
教学阶段
本期视频,我将采用2个记事本作为案例。
假设左边是窗口1,右边是窗口2。
当我们运行同步器后,左边窗口中输入的内容,在右边窗口中也会自动输入。

原理分析
1、让程序识别两个需要同步的窗口句柄。
2、监听键盘在窗口1中的操作,让程序自动在窗口2中同步按下键盘。

1、打开“按键精灵”,“新建”一个脚本。

2、点击“源文件”。

3、复制以下代码到“源文件”

下面是代码
//按键精灵同步器教程
//哔哩哔哩平台创作者:沧桑大侠(UID:507560163)
//监听键盘操作
//获取主窗口
Do
Key = WaitKey()
//监听F6按键
If Key = 117 Then
主窗口 = Plugin.Window.MousePoint()
HwndEx = Plugin.Window.FindEx(主窗口, 0, "Edit", "")
MsgBox "绑定窗口" & 主窗口
MsgBox "编辑窗口" & HwndEx
End If
//监听F9按键
If Key = 120 Then
同步窗口 = Plugin.Window.MousePoint()
HwndEx2 = Plugin.Window.FindEx(同步窗口, 0, "Edit", "")
MsgBox "绑定窗口"&同步窗口
End If
//当两个窗口都获取到句柄了,退出循环
If HwndEx <> 0 and HwndEx2 <> 0 Then
TracePrint "绑定窗口成功"
Exit Do
End If
Loop
Do
//检测按下的按键
Key = WaitKey()
TracePrint key
Call Plugin.Bkgnd.KeyPress(HwndEx2, key)
Loop
解释代码
代码中,我们采用了2个DO循环。
第一个DO循环是用于,将鼠标移动到需要绑定的窗口上面,然后按下热键,获取“记事本”窗口的窗口句柄,由于编辑区域在子句柄,所以我们查找到窗口句柄后,又要继续向下查找句柄。
第二个DO循环,是用于监听我们键盘的按键,如果在窗口1按下了A,则程序会自动在窗口2按下A,剩下的过程以此类推。
最终效果

