如何用按键精灵实现游戏多开,鼠标按键同步 *** 作

如何用按键精灵实现游戏多开,鼠标按键同步 *** 作,第1张

大家在打游戏时可能经常需要用鼠标去执行重复的动作,去做练级,打怪的行为。时间久而久之就会感觉疲劳。按键精灵刚好可以解决此问题,解放双手。

1、首先在电脑中打开按键精灵,点击“我的脚本”。

2、接着点击工具栏上的“录制”。

3、然后在录制窗口,点击“记录”,如下图所示。

4、勾选要录制的动作,再击“返回”。

5、返回录制窗口后,点击红色圆形的按钮,或者按下快捷键“Scroll Lock”,即可开始录制。

按键精灵键鼠同步器源码分享,具体实现同步步骤如下:

1、 获取主窗口和被同步窗口句柄

●    WaitKey 命令等待键盘按下

●  按下F6则获取当前鼠标指向的窗口句柄,作为主窗口句柄。

●  按下F7 则获取当前鼠标指向的窗口句柄,作为同步窗口句柄。

●   用Do循环来等待按键,当主窗口句柄和同步窗口句柄都获取到时,退出Do循环

● 代码

Do

Key = WaitKey()

If Key = 117 Then

主窗口 = Plugin.Window.MousePoint()

End If

If Key = 118 Then

同步窗口 = Plugin.Window.MousePoint()

End If

Delay 500

If 主窗口 <> 0 and 同步窗口 <> 0 Then

Exit Do

End If

Loop

2、设置两个窗口的窗口大小一致

●    窗口大小一致,同步的时候鼠标才能移动到正确的位置。

● 代码

Call Plugin.Window.Size(主窗口,800,600)

Call Plugin.Window.Size(同步窗口,800,600)

3 、获取主窗口的左上角坐标

●   GetWindowRect 命令获取主窗口的左上角坐标

● 代码

sRect = Plugin.Window.GetWindowRect(主窗口)

dim MyArray

MyArray = Split(sRect, "|")

L = Clng(MyArray(0)): T = Clng(MyArray(1))

4、获取当前鼠标在主窗口的位置

●   GetCursorPos命令获取当前鼠标位置

● 代码

GetCursorPos mx, my

5、 计算主窗口内当前鼠标位置和窗口左上角距离

●   公式:当前鼠标位置减去窗口左上角坐标值( mx-L, my-T)

6 开始同步

● 被同步窗口,使用按键后台键鼠命令,将鼠标移动到和主窗口相同的位置

( 按键后台命令鼠标移动是以窗口客户区左上角坐标为基点)

● 代码

Call Plugin.Bkgnd.MoveTo(同步窗口, mx-L, my-T)

●在主窗口内按下任意键时,同步窗口也执行同样的 *** 作

● 代码

Key = GetLastKey()

Call Plugin.Bkgnd.KeyPress(同步窗口, Key)

【多线程 *** 作教程】任意单停单启动一个窗口[多线程任你控制]

Call 注册大漠

Dimenv 环境变量句柄

//环境变量,线程里面要用到.要定义为环境变量

ID句柄字符串 = ""

//****************************** 检测按键,动作 ***************************************

do

Call Plugin.Msg.Tips("按Insert键绑定,按Delete键解绑")

Key = WaitKey()

// 等待用户按任何键

// 下面是Insert键,绑定鼠标指向的窗口的线程

If Key = 45 Then

环境变量句柄 = dm.GetMousePointWindow()

// 鼠标指向的窗口

// 先判断,这个句柄是否在绑定.如果绑定过.不再重复绑定这个窗口

位置 = Instr(ID句柄字符串, 环境变量句柄)

//Instr函数,作用是:返回"环境变量句柄"在 "ID句柄字符串"中 第一次出现的位置。没出现就是位置=0

// 如果位置=0 就绑定,预防重复绑定

TracePrint 位置

TracePrint ID句柄字符串

If 位置 = 0 Then

//

线程ID=BeginThread(多线程)

// 多线程

// 按一次Home键,就绑定一个窗口多开

句柄 = CStr(环境变量句柄)

ID = CStr(线程ID)

// CStr函数是把整数转换成字符串类型

ID句柄字符串 = 句柄 + "|" + ID + "|" + ID句柄字符串

//

Call Plugin.Msg.Tips("已绑定,一个窗口")

//

Else

Call Plugin.Msg.Tips("窗口已经绑定过了,请不要重复绑定")

Delay 2500

End If

//

//

//########################################################

// 下面是按Delete键,停止鼠标指向的窗口的线程

ElseIf Key = 46 Then

鼠标指向的句柄 = dm.GetMousePointWindow()

//TracePrint ID句柄字符串

位置 = Instr(ID句柄字符串, 鼠标指向的句柄)

//Instr函数,作用是:返回"环境变量句柄"在 "ID句柄字符串"中 第一次出现的位置。没出现就是位置=0

// 如果位置=0 证明这个窗口当前没有绑定,预防没绑定就解绑

TracePrint 位置

TracePrint ID句柄字符串

If 位置 >0 Then

数组 = Split(ID句柄字符串, 鼠标指向的句柄)

ID = 数组(1)

数组2 = Split(ID, "|")

ID2 = 数组2(1)

//TracePrint ID2

StopThread ID2

// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

//下面是把停止的线程的ID和句柄,从ID句柄字符串去掉

TracePrint ID句柄字符串

删除数组 = Split(ID句柄字符串, 鼠标指向的句柄)

左边 = 删除数组(0)

ID3= ID2+"|"

删除数组2 = Split(ID句柄字符串, ID3)

右边 = 删除数组2(1)

ID句柄字符串 = 左边 + 右边

TracePrint ID句柄字符串

//

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Call Plugin.Msg.Tips("已解绑,一个窗口")

Else

Call Plugin.Msg.Tips("窗口都没绑定过,你解绑什么嗯,想下标越界么")

Delay 2500

End If

End If

Delay 1500

// 适当延迟,避免连按键

Call Plugin.Msg.Tips("")

Loop

//

//

//****************************** 多线程程序 ***************************************

Sub 多线程

set dm = createobject("dm.dmsoft")

//↑创建“一个对象”

//dm_ret = dm.SetDict(0,"c:\test_game\dm_soft.txt")

//字库

Call 绑定()

//下面是你要编写的程序

Do

dm. KeyPress 81

// 输入文字Q

//

Delay 1000

Loop

End Sub

//

//

//

//****************************** 注册大漠 ***************************************

sub 注册大漠

need_ver = "3.1225B"

PutAttachment "c:\test_game","*.*"

PutAttachment ".\Plugin" ,"RegDll.dll"

Call Plugin.RegDll.Reg("c:\test_game\dm.dll")

set dm = createobject("dm.dmsoft")

ver = dm.Ver()

if ver <>need_ver then

set dm = nothing

set ws=createobject("Wscript.Shell")

ws.run "regsvr32 c:\test_game\dm.dll /s"

set ws=nothing

Delay 1200

set dm = createobject("dm.dmsoft")

ver = dm.Ver()

if ver <>need_ver then

messagebox "插件版本错误,当前使用的版本是:"&ver&",插件所在目录是:"&dm.GetBasePath()

messagebox "请关闭程序,重新打开本程序再尝试"

endscript

end if

end if

//上面是注册大漠

//dm_ret = dm.SetDict(0, "c:\test_game\dm_soft.txt")

//字库

End Sub

Sub 绑定()

hwnd = 环境变量句柄

dm_ret = dm.BindWindow( hwnd, "gdi2", "windows", "windows",0)

//绑定窗口

//

If dm_ret=0 Then

//判断上面是否获取到句柄

MessageBox "错误请把鼠标移到游戏窗口内,再启动脚本"

End If

//dm.DownCpu 50

dm_ret = dm.SetPath("c:\test_game\")

//设置全局路径,设置了此路径后,所有接口调用中,相关的文件都相对于此路径. 比如图片,字库等.</SPAN >

//设定附件的路径,以后找图命令里面就没必要添加路径了

End Sub

Sub OnScriptExit()

dm.UnBindWindow

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11777207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存