按键精灵同时控制多个窗口 30

同时多个窗口进行后台按空格键,代码怎么写?请给出具体的代码... 同时多个窗口进行后台按空格键,代码怎么写?请给出具体的代码 展开
 我来答
橙门听X
2019-05-03 · TA获得超过2571个赞
知道大有可为答主
回答量:4669
采纳率:88%
帮助的人:698万
展开全部
按键精灵可以实现 对多个窗口同时操作的。不过需要后台,前台的话因为只有一个鼠标和一个键盘 ,想实现同时操作是不可能的,前台只能轮换操作。
多开大致的方法有:
注意:多开执行必须是后台不互相干扰操作。
1、重复启动,在编辑界面右边属性设置里,把“禁止重复运行”设置为:否,即可在对每个窗口按一次启动热键,分别启动脚本功能。
2、多线程启动,把脚本主线循环结构写成Sub或Function,然后用 BeginThread 多线程命令启动。(子线程之间的变量是不共享的)
3、单开后台完善后,直接新建脚本复制源码,保存,启动与停止热键修改不一样,多个脚本集合打包一个小精灵使用。
追问
请给出具体代码
百度网友63a4133
2019-05-05 · TA获得超过431个赞
知道小有建树答主
回答量:919
采纳率:69%
帮助的人:150万
展开全部

这个是我6级考试的题目,多开记事本,并控制记事本暂停与继续

//编写一个多线程控制记事本的多开程序,线程运行时,会在记事本窗口中不停的模拟按下a键;可以通过特定的操作来结束一条线程的执行,这部分操作要在注释中说明。
//假设打开4个记事本
Dim Hwnd, Key, 信息, 返回, a, b, 已停止线程集
Global HwndEx
Dim 线程()
Const 记事本数量 = 4'设置的记事本数量
Redim Preserve 线程(记事本数量 - 1)
For i = 0 To 记事本数量-1
    RunApp "notepad.exe"
    Delay 500 '等待程序打开
    Hwnd = Plugin.Window.Find("Notepad", 0)'窗口句柄
    HwndEx = Plugin.Window.FindEx(Hwnd, 0, "Edit", 0)'客户区句柄
    Call Plugin.Window.Move(Hwnd, 50 * i, 100 * i)
    Delay 200
    Call Plugin.Window.Size(Hwnd, 500, 300)
    Delay 200
    线程ID = BeginThread(记事本线程)
    线程(i) = 线程ID
    TracePrint "线程" & i & " ID= " & 线程ID
Next
MessageBox "你可以按[End]键来设置各窗口的运行状态"
Do
    //等待按[End]键呼出输入框
    //在输入框中输入相对应的编号+状态,就能做出对应的操作.
    //编号: 窗口从左上到右下的顺序排列,第1个窗口编号为1,第2个窗口编号为2,...依次类推
    //状态: 0表示停止,1表示暂停,2表示继续.
    //如输入1+0,那么第1个窗口线程被停止,
    //如输入3+1,那么第3个窗口线程被暂停,之后可以按[End]在输入框中输入3+2来继续运行第3个窗口线程.
    Key = WaitKey()
    If Key = 35 Then 
        信息 = "编号: 记事本窗口从左上到右下的顺序排列," & vbcr & "       左上第一个窗口编号为1,依次类推." & vbcr & vbcr
        信息 = 信息 & "状态: 0表示停止,1表示暂停,2表示继续." & vbcr & vbcr
        信息 = 信息 & "输入格式:编号+状态" & vbcr & vbcr & "比如我要暂停第2个记事本,那么输入2+1" & vbcr
        返回 = split(InputBox(信息, "线程操作"), "+")
        'TracePrint "返回值" & UBound(返回)
        If UBound(返回) = 1 Then 
            a = CInt(返回(0)) : b = CInt(返回(1))
            'TracePrint a & "  " & b
            If 1 <= a and a <= 记事本数量 Then 
                For i = 0 To 记事本数量 - 1
                    If i + 1 = a Then 
                        'TracePrint 线程(i)
                        If InStr(已停止线程集, 线程(i)) > 0 Then 
                            MessageBox "记事本窗口" & i + 1 & " 线程ID=" & 线程(i) & "已经停止." & vbcr & vbcr & "你无法对已停止的线程进行操作!"
                        Else
                            Select Case b
                            Case 0
                                StopThread 线程(i)
                                MessageBox "记事本窗口" & i + 1 & "已经停止! 线程ID=" & 线程(i)
                                已停止线程集 = 已停止线程集 & 线程(i)                            
                            Case 1
                                PauseThread 线程(i)
                                MessageBox "记事本窗口" & i + 1 & "已经暂停! 线程ID=" & 线程(i)
                            Case 2
                                ContinueThread 线程(i)
                                MessageBox "记事本窗口" & i + 1 & "已经继续运行! 线程ID=" & 线程(i)
                            Case Else
                                MessageBox"你输入的[状态]不正确,无法生效"
                            End Select
                        End If
                    End If
                Next
            Else 
                MessageBox"你输入的[编号]不正确,无法生效"
            End If
        ElseIf 返回 = - 1  Then
        Else 
            MessageBox "你输入格式不正确,无法生效" & vbcr  & vbcr & "格式:编号+状态"
        End If
    End If  
    Delay 100
Loop
Sub 记事本线程()
    'TracePrint HwndEx
    Hwnd1=HwndEx
    Do
        Delay 1000
        Call Plugin.Bkgnd.KeyPress(Hwnd1, 65)'按a        
    Loop
End Sub
Sub OnScriptExit()
    Hwndg = Plugin.Window.SearchEx("Notepad",0,0)
    TracePrint Hwndg
    fg = split(Hwndg, "|")
    For i = 0 To UBound(fg) - 1
        Call Plugin.Window.Close(fg(i))
    Next
    MessageBox "脚本已经停止!"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凤梨头
2019-05-04 · TA获得超过207个赞
知道答主
回答量:615
采纳率:8%
帮助的人:47.1万
展开全部
按键精灵可以实行,多个窗口运行。
追问
你在说废话吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式