1、NO.1-同步的前提前提1同步的两个窗口需要是同一个应用窗口,并且窗口大小要相同2同步窗口可以接收到按键的键鼠发送信息3同步的窗口支持后台键鼠操作
2、NO.2-本节例子及其能实现的功能例子1画图工具,实现同步画图2记事本,实现同步删除内容功能①键鼠同步②支持组合键
3、NO.3-思路大剖析思路步骤1获取主窗口和被同步窗口句柄●Wa坡纠课柩itKey命令等待键盘按下○按下F6则获取当前鼠标指向的窗口句柄,作为主窗口句柄。○按下F7则获取当前鼠标指向的窗口句柄,作为同步窗口句柄。●用Do循环来等待按键,当主窗口句柄和同步窗口句柄都获取到时,退出Do循环●代码DoKey=WaitKey()IfKey=117Then主窗口=Plugin.Window.MousePoint()EndIfIfKey=118Then同步窗口=Plugin.Window.MousePoint()EndIfDelay500If主窗口<>0and同步窗口<>0ThenExitDoEndIfLoop2设置两个窗口的窗口大小一致●窗口大小一致,同步的时候鼠标才能移动到正确的位置。●代码CallPlugin.Window.Size(主窗口,800,600)CallPlugin.Window.Size(同步窗口,800,600)3获取主窗口的左上角坐标●GetWindowRect命令获取主窗口的左上角坐标●代码sRect=Plugin.Window.GetWindowRect(主窗口)dimMyArrayMyArray=Split(sRect,"|")L=Clng(MyArray(0)):T=Clng(MyArray(1))4获取当前鼠标在主窗口的位置●GetCursorPos命令获取当前鼠标位置●代码GetCursorPosmx,my5计算主窗口内当前鼠标位置和窗口左上角距离●公式:当前鼠标位置减去窗口左上角坐标值(mx-L,my-T)6开始同步●被同步窗口,使用按键后台键鼠命令,将鼠标移动到和主窗口相同的位置(按键后台命令鼠标移动是以窗口客户区左上角坐标为基点)●代码CallPlugin.Bkgnd.MoveTo(同步窗口,mx-L,my-T)●在主窗口内按下任意键时,同步窗口也执行同样的操作●代码Key=GetLastKey()CallPlugin.Bkgnd.KeyPress(同步窗口,Key)
4、NO.4-代码代码DoKey=WaitKey()IfKey=117Then主窗口=Plugin.Wi荏鱿胫协ndow.MousePoint()//CallPlugin.Window.Size(主窗口,800,600)EndIfIfKey=118Then同步窗口=Plugin.Window.MousePoint()//CallPlugin.Window.Size(同步窗口,800,600)EndIfDelay500If主窗口<>0and同步窗口<>0ThenExitDoEndIfLoopDoMouse=GetLastClick()IfMouse=32769Then//鼠标左键按下时ASCII码为32769sRect=Plugin.Window.GetWindowRect(主窗口)dimMyArrayMyArray=Split(sRect,"|")L=Clng(MyArray(0)):T=Clng(MyArray(1))GetCursorPosmx,myDelay10CallPlugin.Bkgnd.LeftDown(同步窗口,mx-L,my-T)Delay10DoMouse=GetLastClick()IfMouse=0Then//鼠标无点击操作GetCursorPosmx,myDelay10CallPlugin.Bkgnd.MoveTo(同步窗口,mx-L,my-T)Delay10EndIfIfMouse=32770Then//鼠标左键弹起时ASCII码为32770GetCursorPosmx,myDelay10CallPlugin.Bkgnd.LeftUp(同步窗口,mx-L,my-T)ExitDoEndIfLoopEndIfKey=GetLastKey()CallPlugin.Bkgnd.KeyPress(同步窗口,Key)Loop
5、NO.5-效果演示演示画图记事本注意 画图和记事本,获取窗口句柄的时候请点击白白的客户区进行获取,因为我们是要对它的客户区进行操作
6、NO.6-温馨小提示温馨小提示*游戏窗口中的同步,需要注意几个窗口中人物的朝向和坐标是否相同*如果坐标朝向不同,一个窗口里的角色往西边走一个往北边走,就无法达到预期同步任务的效果