我想使用腳本發送鍵盤或滑鼠輸入等事件來自動化另一個程式。例如,考慮一個玩遊戲的機器人(儘管我不玩視頻遊戲)。
我想同時對多個(腳本、程式)對執行此操作。
我知道我可以使用 autoit 或 win32 API 在 Windows 上自動化滑鼠和鍵盤,但 Windows 有「活動窗口」的概念:一次只有一個活動窗口,這是可以接收輸入的視窗。
由於這種“活動視窗”概念,我無法自動化多種的立即計劃。
我還有什麼選擇?
編輯:我需要將程式自動化,而不必等待另一個程式。使用鍵盤快速鍵切換活動視窗是行不通的。我還想在程式在後台自動運行的情況下使用計算機。
答案1
更新以包含綁定當前使用者輸入的替代方案
自動 使用 autoit 你可以做類似的事情
Opt("WinTitleMatchMode", 2)
While WinActive('Search')
Send("{ALT DOWN}")
Send("{TAB}")
Send("{ALT UP}")
WEnd
其中「搜尋」包含視窗標題的一部分。
如果您知道視窗焦點的順序,您可以簡單地發送 tab 足夠的額外時間來到達給定的視窗。
alt+tab 的順序總是反向焦點順序。
Win32 這已經在其他線程上得到了回答,並深入到編程中。如果你想走這條路,你必須將 Windows 訊息傳送到你想要的進程。我會看看:如何將擊鍵傳送到視窗而無需使用 Windows API 啟動它?
看起來不太可靠,而且會有很多陷阱。必須對給定應用程式上處理鍵盤輸入的方式做出假設。
不知道您要實現什麼目標,我可能建議使用虛擬機器並允許該實例運行巨集/腳本。這應該允許用戶繼續使用計算機,而不佔用用戶正在使用的桌面。