按键精灵制作同步器 - 多开窗口同步操作
沧桑大侠
2022年06月29日 22:13


什么是同步器?

        同步器,顾名思义,就是让多个窗口同时操作。

应用场景

         多个游戏角色同时打怪,一个角色普通攻击一下怪物,怪物扣掉一滴血,如果五开游戏同时打怪,怪物一秒钟同时扣掉五滴血,实现伤害倍增。

教学阶段

        本期视频,我将采用2个记事本作为案例。

        假设左边是窗口1,右边是窗口2。

        当我们运行同步器后,左边窗口中输入的内容,在右边窗口中也会自动输入。

原理分析

        1、让程序识别两个需要同步的窗口句柄。

        2、监听键盘在窗口1中的操作,让程序自动在窗口2中同步按下键盘。

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

2、点击“源文件”。

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

下面是代码

代码块
JavaScript
自动换行
复制代码
//按键精灵同步器教程 
//哔哩哔哩平台创作者:沧桑大侠(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,剩下的过程以此类推。

最终效果