題 應用程序在Windows中自動切換兩個應用程序[關閉]


是否存在會導致計算機在計時器上的兩個不同應用程序之間切換(引入焦點)的應用程序?這適用於Windows 7。

我需要這個用於公開顯示給客戶的屏幕。我希望屏幕每隔30秒在兩個不同的應用程序之間切換。我認為現在有足夠的企業會面向面向客戶的顯示器,這樣的事情必須存在!


4
2017-08-24 21:20


起源




答案:


是的,它被稱為 AutoIt的

你會使用這樣的東西:

While 1 ;loop indefinitely
    WinActivate("notepad","") ;give focus to notepad
    Sleep(30000) ;sleep 30 seconds
    WinActivate("wordpad","") ;give focus to wordpad
    Sleep(30000) ;sleep 30 seconds
WEnd

WinActivate()將焦點放在具有精確或最接近匹配標題的窗口上,在有兩個適合的情況下,它會將​​焦點放在最近激活的一個上。 Sleep()以毫秒為單位,因此30000為30秒。


9
2017-08-24 21:33



是的,編寫我自己的AutoIt腳本將成為我的備份計劃,因為通過提供示例代碼為您節省了一些麻煩,我只接受您的回答。謝謝! - OverloadUT
工作就像一個魅力。我需要比較兩個pdf文檔並使用500ms的周期。為方便地停止,我將ESC按鈕綁定到終止功能(HotKeySet("{ESC}", "Terminate")) 像這兒: autoitscript.com/autoit3/docs/functions/HotKeySet.htm - Alexander Taubenkorb


AutoTab非常簡單。

http://www.analogx.com/contents/download/System/autotab/Freeware.htm


4
2018-04-04 17:10



簡單,直接,和 AnalogX 看起來像個好人。 - Kirk Broadhurst


如果客戶與屏幕/應用程序之間沒有任何交互,您只需截取程序的屏幕截圖,然後創建一個簡單的幻燈片放映,其中包含30秒計時器和無限重複。

通常,使用面向客戶的監視器顯示用於廣告目的的程序的公司不使用“實時”程序。您想要控制界面,並允許顯示某些錯誤的機會不是您想要的。他們會記錄程序的屏幕視頻,或者簡單地截取靜態顯示的截圖。

否則,存在用於顯示特定信息的特定儀表板,並且通常不在它們之間切換。或者,他們使用A / V設備進行切換,以便每個程序在不同的計算機上運行,以便再次最小化失敗的可能性。


2
2017-08-24 21:22



我想到了這一點,但不幸的是,其中一個應用程序被切換為動態加載來自網絡的內容(想想RSS閱讀器),因此靜態圖像將無法正常工作 - OverloadUT


為什麼在Windows可以開箱即用的情況下安裝程序(如AutoIt)?

將以下內容保存到名為的文件中 auto_switch.vbs

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
    WScript.Sleep 30000
    WshShell.SendKeys("%{TAB}")
Loop

改變 30000 為Alt + Tab按下之間的毫秒數(因此30000 = 30秒)。雙擊它以開始運行。

如果你想阻止它,那麼你需要殺死名為“wscript”的進程。

如果要在顯式命名的程序之間切換,則此代碼將每隔30秒在“收件箱 - Microsoft Outlook”和“Firefox”之間切換:

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
    WScript.Sleep 30000
    WshShell.AppActivate("Inbox - Microsoft Outlook")
    ' WshShell.SendKeys "% r"
    WScript.Sleep 30000
    WshShell.AppActivate("Firefox")
    ' WshShell.SendKeys "% r"
Loop

值得注意的是,如果上面示例中的應用程序被最小化,那麼即使它們被激活,它們也將保持最小化。

要恢復窗口,請刪除 ' 在......面前 WshShell.SendKeys。這將使腳本激活窗口,然後立即發送恢復組合鍵 Alt鍵+空格鍵[R。如果您使用的是非英語版本的Windows,則可能需要更改此快捷方式。


2
2018-01-10 15:55



尼斯。只是好奇(我不在Windows上):為什麼你需要包含Outlook的“收件箱”,而不是Firefox的頁面標題? - Arjan
說實話,我在編寫示例時只是複制了窗口標題的名稱(Firefox顯示了一個空白頁面)。根據 msdn.microsoft.com/en-us/library/wzcddbek(v=vs.84).aspx, AppActivate 將首先嘗試匹配一個確切的窗口標題,如果不能,則將轉到以該字符串開頭的第一個窗口。 - Richard


以下內容允許您在6個程序之間切換而無需為其命名。基本上,少輸入1 {TAB} 比你想要切換的窗口數量,並沒有任何無關的打開窗口。

據我所知,最多可用於6個窗口,可能更多。

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
  WScript.Sleep 1000
  WshShell.SendKeys("%({TAB}{TAB}{TAB}{TAB}{TAB})")
Loop

0
2017-10-06 21:24