方法1、重复启动
这种方法就是在脚本编辑界面左边的脚本属性设置里,把“禁止重复运行”取消勾选,这样把脚本制作成免费小精灵后就可以重复启动了,按一次启动热键就会启动一次脚本,实现了多开,如图所示
优点:超级简单、无需修改任何代码、轻轻一点即可实现多开,特别适合新手
缺点:如果要每个窗口不同设置,需要在启动前进行修改保存再启动,设置上比较繁琐,容易弄乱,且单停也需要修改停止热键后启动来区分
方法2、复制多份脚本打包
直接写好一个单开的后台运行脚本,然后新建一个脚本把源码复制过去或者导出q文件到其他地方再添加,启动与停止热键修改不一样,集合打包生成一个小精灵里使用即可(商业独立QUI版本的小精灵同样可以这样)
打包后界面是这样的,会以多标签的模式显示,可以相互切换设置界面
优点:相对来讲也较为简单方便快捷,因为界面分开显示,能较直观的看出每个窗口执行的功能,另外通过分别设置不同的停止热键就可以实现多开单停效果
缺点:每个脚本界面都要分别设置不同的启动、停止热键,也较为繁琐,另外受环境变量的影响相互间可能会存在冲突的情况,建议尽量用全局变量不要用环境变量
方法3、一键启动多个线程
这种方法是指在单一脚本中,通过特定条件(如标题、类名等)进行窗口遍历,一次性找到所有符合条件的窗口句柄,默认
以"|"号隔开存入数组中,然后通过分割句柄数组,为每一个窗口开设一个线程,即一键启动多窗口同时运行
相关记事本代码例子可参考:
【院刊】-【201412期】多线程多开脚本如何实现?
优点:方便、快捷,脚本自动判断开了几个要运行的窗口,多个窗口可以一键启动,不需要一个个去点
缺点:有新增窗口时必须先停止脚本后再启动,且每个游戏窗口通常只能执行同样的功能,如果要执行不同的功能,则脚本相对会比较复杂
方法4、单线程分别启动
目前稳定的后台多开脚本通常都是用这种方法,这种方法是把脚本要执行的代码完全写成一个单线程,然后通过循环等待按键,每按一次设定好的启动线程的键,则获取鼠标指向的窗口句柄,开始在这个窗口句柄里运行脚本
以记事本多窗口输入为例代码:
Dim hwnds(),线程ID(),i
i=0
Do
Key = WaitKey
If key = 118 Then //按f8启动
Redim Preserve hwnds(i),线程ID(i)
Hwnds(i) = Plugin.Window.MousePoint()
线程ID(i) = BeginThread(测试线程)
TracePrint join(hwnds,"|")
i=i+1
End If
If key = 119 Then//按f9单停
Hwnd = Plugin.Window.MousePoint()
For w = 0 To i-1
If Hwnds(w) = Hwnd Then
StopThread 线程ID(w)
End If
Next
End If
Loop
Sub 测试线程//这里写脚本要执行功能主程序
Hwnd = Plugin.Window.MousePoint()
Delay 100
Do
Call Plugin.Window.SendString(Hwnd, "测试")
Delay 1000
Call Plugin.Window.SendKeyPress(Hwnd, 13)
Delay 1000
Loop
End Sub
复制代码
基于类似此种方法的大漠后台多窗口切换绑定可参考
【院刊】-【201412期】不会用多线程?单线程也可以操作多窗口
优点:灵活,支持实时新增窗口启动,多窗口可切换不同配置启动,可实现完美单停
多线程整体缺点:1.多线程命令属于高级命令功能,不推荐新手使用
2.目前按键多线程技术并不是很成熟,特别是运行时间久了容易出现异常情况
后记目前关于按键后台脚本多开方法主要是这几种,就简单介绍到这里,如果有新方法欢迎回帖补充,有写错的地方,欢迎纠正