VBScript - 使用AppActivate将焦点切换到窗口

cho*_*oco 5 vbscript

我们有多台电视,每台电视都连接到不同的电脑.目标是在循环通过两个应用程序的连续循环上显示/设置焦点.这必须在所有电视上同步.最初我通过发送alt + esc键在任务栏中设置了所有应用程序.哪个工作正常,但很难在所有电视上同步它.所以我使用AppActivate来设置焦点,并根据偶数/奇数分钟在窗口之间切换.它现在已经同步,但屏幕似乎每隔一秒就会尝试设置焦点到窗口,导致屏幕一直闪烁.我怎么能避免呢??? 有什么建议???这是代码的一部分.

' Loop lasts 1 second

intSleep = 1000

Set wshShell = CreateObject("WScript.Shell")

'repeat process indefinetly

Do while infiniteloop=0
    a = minute(time())
    intResult = a Mod 2  ' to check for even/odd minute

    If intResult = 0 Then
        'display window1
       if wshShell.AppActivate "Display - [Dashboard]" = false then
            wshShell.AppActivate "Display - [Dashboard]"
       end if

    ElseIf intResult = 1 Then
        'display window2
        if wshShell.AppActivate "Display - [TEST]" = false then
            wshShell.AppActivate "Display - [TEST]" 
       end if

    End If
    Wscript.Sleep intSleep

Loop
Run Code Online (Sandbox Code Playgroud)

Job*_*bbo 2

使用 VBScript 确实没有一种优雅的方法来做到这一点,但放弃 SendKeys 是正确的。

我只是将睡眠时间增加到 1 分钟。这样您就可以最大限度地减少计算 If 语句的次数(从而提高性能)。它每分钟只尝试一次窃取焦点:

Option Explicit

Dim shl

Set shl = CreateObject("WScript.Shell")

Do
  If (Minute(Time()) Mod 2) = 0 Then
    shl.AppActivate "Program One"
  Else
    shl.AppActivate "Program Two"
  End If

  WScript.Sleep (1000 * 60)
Loop
Run Code Online (Sandbox Code Playgroud)