控制发送

控制发送

我主要使用 chrome,但我也愿意使用任何允许我这样做的浏览器。

在 Windows 10 中,您可以通过将鼠标悬停在窗口上并使用滚轮来滚动任何窗口,即使该窗口当前未处于活动状态。

是否有可能以某种方式切换非活动窗口的浏览器选项卡?

老实说,我似乎记得向左/向右滚动(至少是我鼠标上的所谓功能 - 罗技鼠标)以前还可以用,但现在似乎不再如此了。

编辑:我正要问同样的问题,SU 告诉我我已经问过了。所以顶一下...

答案1

一种方法是使用 AHK 脚本ControlSend函数将模拟的按键直接传递到您想要的窗口(这可以对非活动、最小化或隐藏的窗口执行)。然后,您可以将任何适合您的序列直接绑定到热键以方便使用。以下是 AHK 文档页面(上面有链接)的直接副本,以防页面出现故障:

控制发送[原始]

将模拟击键发送到窗口或控件。ControlSend
[, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
ControlSendRaw:与上述参数相同。

参数

控制

可以是 ClassNN(控件的类名和实例编号)或控件的文本,两者都可以通过 Window Spy 确定。使用文本时,匹配行为由 SetTitleMatchMode 确定。如果此参数为空或省略,则将使用目标窗口的最顶层控件。如果此参数为 ahk_parent,则击键将直接发送到目标窗口而不是其控件之一(有关示例,请参阅 Automating Winamp)。
要对控件的 HWND(窗口句柄)进行操作,请将 Control 参数留空并为 WinTitle 参数指定 ahk_id %ControlHwnd%(即使 DetectHiddenWindows 处于关闭状态,这也适用于隐藏控件)。控件的 HWND 通常通过 ControlGet Hwnd、MouseGetPos 或 DllCall() 检索。

按键

要发送的键序列(有关详细信息,请参阅 Send 命令)。要发送文字逗号,请将其转义(`,)。发送字符的速率由 SetKeyDelay 决定。与 Send 命令不同,鼠标点击不能通过 ControlSend 发送。为此使用 ControlClick。

窗口标题

窗口标题或其他用于标识目标窗口的标准。请参阅 WinTitle。

文言文

如果存在,此参数必须是目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示)。如果 DetectHiddenText 为 ON,则会检测到隐藏的文本元素。

排除标题

标题包含该值的窗口将不予考虑。

排除文本

文本包含该值的窗口将不予考虑。

错误处理

[v1.1.04+]: 此命令在失败时会抛出异常。有关更多信息,请参阅运行时错误。

如果出现问题,则 ErrorLevel 设置为 1,否则设置为 0。

评论

ControlSendRaw 发送 Keys 参数中的按键,而不将 {Enter} 转换为 Enter、将 ^c 转换为 Control+C 等。有关详情,请参阅 Raw 模式。将 {Raw} 或 {Text} 与 ControlSend 一起使用也是有效的。[v1.1.27+]: 文本模式可能更适合发送文本。
如果省略 Control 参数,此命令将尝试通过发送到其最顶层控件(通常是正确的控件)或窗口本身(如果没有控件)直接发送到目标窗口。如果窗口似乎没有任何控件,或者只是为了方便而不必担心要发送到哪个控件,这很有用。
默认情况下,修饰键(Control、Alt、Shift 和 Win)会像 Send 命令一样发送。这允许命令提示符和其他控制台窗口正确检测大写字母、控制字符等。它还可以通过其他方式提高可靠性。
但是,在某些情况下,这些修饰键事件可能会干扰活动窗口,尤其是当用户在 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、Send、自动化 Winamp ...

相关内容