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