控制發送

控制發送

我主要使用 Chrome,但我願意使用任何允許我這樣做的瀏覽器。

在 Windows 10 中,您可以透過將滑鼠懸停在上方並使用滾輪來滾動任何窗口,即使該窗口目前未處於活動狀態。

是否可以以某種方式切換非活動視窗的瀏覽器標籤?

說實話,我似乎記得向左/向右滾動(至少是我的滑鼠上所謂的功能 - 羅技的一個)不久前工作過,但現在似乎不再是這樣了。

編輯:正要問同樣的問題,SU告訴我我已經這麼做了。所以撞...

答案1

一種方法是透過 AHK 腳本使用ControlSend函數將模擬擊鍵直接傳遞到您想要的視窗(這可以對非活動、最小化或隱藏的視窗執行)。然後,為了方便起見,您可以將任何適合您的序列直接綁定到熱鍵。這是 AHK 文件頁面(上面連結)的直接副本,以防頁面出現故障:

控制發送[原始]

將類比擊鍵傳送到視窗或控制項。
ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
ControlSendRaw:與上方相同的參數。

參數

控制

可以是 ClassNN(控制項的類別名稱和實例號碼)或控制項的文本,兩者都可以透過 Window Spy 來確定。使用文字時,匹配行為由 SetTitleMatchMode 決定。如果此參數為空或省略,則將使用目標視窗最頂層的控制項。如果此參數為 ahk_parent,則按鍵將直接傳送至目標視窗而不是其控制項之一(有關範例,請參閱自動化 Winamp)。
若要對控制項的 HWND(視窗句柄)進行操作,請將 Control 參數留空,並為 WinTitle 參數指定 ahk_id %ControlHwnd%(即使 DetectHiddenWindows 為 Off,這也適用於隱藏控制項)。控制項的 HWND 通常透過 ControlGet Hwnd、MouseGetPos 或 DllCall() 檢索。

按鍵

要發送的按鍵序列(有關詳細信息,請參閱發送命令)。若要傳送原義逗號,請將其轉義 (`,)。發送字元的速率由 SetKeyDelay 決定。與 Send 指令不同,ControlSend 無法傳送滑鼠點擊。為此,請使用 ControlClick。

勝利標題

視窗標題或標識目標視窗的其他標準。請參閱WinTitle。

文文

如果存在,此參數必須是來自目標視窗的單一文字元素的子字串(如包含的 Window Spy 公用程式所顯示的)。如果 DetectHiddenText 為 ON,則會偵測到隱藏文字元素。

排除標題

標題包含此值的視窗將不被考慮。

排除文本

文字包含該值的視窗將不被考慮。

錯誤處理

[v1.1.04+]:此指令能夠在失敗時引發異常。有關詳細信息,請參閱運行時錯誤。

如果出現問題,則 ErrorLevel 設定為 1,否則設定為 0。

評論

ControlSendRaw 發送 Keys 參數中的擊鍵,而不將 {Enter} 轉換為 Enter,將 ^c 轉換為 Control+C 等。將 {Raw} 或 {Text} 與 ControlSend 一起使用也是有效的。 [v1.1.27+]:文字模式對於發送文字可能更可靠。
如果省略 Control 參數,則此命令將嘗試直接發送到目標窗口,方法是發送到其最頂層的控制項(通常是正確的控制項)或視窗本身(如果沒有控制項)。如果視窗根本沒有任何控件,或者只是為了方便而不必擔心發送到哪個控件,這非常有用。
預設情況下,修飾鍵(Control、Alt、Shift 和 Win)會以通常透過「發送」命令發送的方式發送。這允許命令提示字元和其他控制台視窗正確檢測大寫字母、控製字元等。
然而,在某些情況下,這些修飾符事件可能會幹擾活動窗口,特別是如果使用者在 ControlSend 期間主動鍵入或發送 Alt 鍵(因為 Alt 啟動活動窗口的選單列)。可以透過明確傳送修飾符向上和向下事件來避免這種情況,如下例所示:

ControlSend, Edit1, {Alt down}f{Alt up}, Untitled - Notepad
上述方法還允許在工作站鎖定(受登入提示保護)時發送修飾鍵擊(Control/Alt/Shift/Win)。
在控制台視窗(例如命令提示字元)上使用 ControlSend 時,應避免使用 BlockInput。這是因為它可能會阻止大寫和修飾鍵(例如 Control)正常工作。
SetKeyDelay 的值決定了發送按鍵的速度。如果目標視窗沒有可靠地接收擊鍵,請嘗試透過 SetKeyDelay 的第二個參數增加按下持續時間,如以下範例所示: SetKeyDelay, 10, 10 SetKeyDelay, 0, 10 SetKeyDelay, -1, 0 如果目標控制項是編輯控制項(或類似控制項),則下列控制項通常比ControlSend: Control, EditPaste, This text will be inserted at the caret position., ControlName, WinTitle
ControlSetText, ControlName, This text will entirely replace any current text., WinTitle
ControlSend 通常不能操作視窗的選單列。若要解決此問題,請使用 WinMenuSelectItem。如果由於選單列的性質而無法做到這一點,您可以嘗試按照 SendMessage 教學來尋找與所需選單項目相對應的訊息。
視窗標題和文字區分大小寫。除非開啟 DetectHiddenWindows,否則不會偵測到隱藏視窗。

有關的

SetKeyDelay、轉義序列(例如 `%)、Control、ControlGet、ControlGetText、ControlMove、ControlGetPos、ControlClick、ControlSetText、ControlFocus、發送、自動化 Winamp ...

相關內容