我们有多台电视,每台电视都连接到不同的电脑.目标是在循环通过两个应用程序的连续循环上显示/设置焦点.这必须在所有电视上同步.最初我通过发送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)
使用 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)
| 归档时间: |
|
| 查看次数: |
43834 次 |
| 最近记录: |