BeginThread 同时运行过程 |
|
新开一个线程运行当前脚本,从指定的过程开始运行 |
|
字符串型,过程名
(注意:过程不能带参数,如: Sub 过程(参数1) End Sub 使用时会造成未知问题。) |
|
整数型,线程ID [注:按键精灵8.20版新增返回值参数] |
|
//注:按键精灵8.20版“BeginThread”新增 返回值参数 MessageBox "多线程命令属于高级命令功能,不推荐新手使用。" //所谓多线程并不是同时做一件相同的事情,而是不分前后顺序执行脚本。 Dimenv Hwnd1 //定义环境变量(多线程需要) RunApp "notepad.exe" //启动3个记事本测试用 RunApp "notepad.exe" RunApp "notepad.exe" Delay 2000 //等待3个记事本工具打开 Hwnd = Plugin.Window.Search("无标题 - 记事本") //搜索所有记事本窗口句柄 MyArray = Split(Hwnd, "|") //分解句柄 If UBound(MyArray) >= 0 Then //判断是否搜到句柄? For i = 0 To UBound(MyArray) - 1 hwndEx = Clng(MyArray(i)) //类型转换 Call Plugin.Window.Move(hwndEx, i * 200 + 100, i * 200 + 100) //调整窗口位置 Call Plugin.Window.Active(hwndEx) //激活前面 Hwnd1 = Plugin.Window.FindEx(hwndEx, 0, "Edit", 0) //获取可打字的窗口句柄 BeginThread 打字 //启动线程 Delay 100 //启动线程需要点时间 Next End If //以下是【无限循环】防止全部脚本停止。 Do Delay 1000 Loop //以下是【测试用】子程序例子 Sub 打字() //首先获取环境变量句柄 Hwnd2 = Hwnd1 //然后开始循环或者无限循环需要执行的脚本内容 For i=0 to 20 Call Plugin.Bkgnd.SendString(Hwnd2, i) Delay 100 Call Plugin.Bkgnd.KeyPress(Hwnd2, 13) Delay 200 Next End Sub |
|
MessageBox "多线程命令属于高级命令功能,不推荐新手使用。" //下面这个例子会打开一个记事本,用2个线程向其中模拟按键 VBSCall RunApp("notepad") Delay 1000 SetEnv "Key","65" BeginThread "Thread1" While 1 Gosub PressKey key=key+1 If key>90 key=65 EndIf SetEnv "Key",CStr(key) EndWhile EndScript Sub Thread1 For 10 Gosub PressKey EndFor KeyPress 13,1 SayString "线程1已经结束" KeyPress 13,1 Return Sub PressKey key=GetEnv("Key") KeyPress key,1 Delay 200 Return |