【问题标题】:Using hotkey in specific application, what is wrong with my code?在特定应用程序中使用热键,我的代码有什么问题?
【发布时间】:2015-06-18 19:44:08
【问题描述】:

这行得通:

下车::
WinGetTitle, 标题, A
WinGetClass, 类, A
if (RegExMatch(Title, "Poker"))
{坐标模式,鼠标,窗口
MouseGetPos、StartX、StartY
鼠标点击, 左, 325, 341
鼠标移动、StartX、StartY
}
其他
发送 {wheeldown}
返回

这不起作用

一个:: WinGetTitle, 标题, A
WinGetClass, 类, A
if (RegExMatch(Title, "Poker"))
{坐标模式,鼠标,窗口
MouseGetPos、StartX、StartY
鼠标点击, 左, 510, 342
发送 {Backspace}
发送 {Backspace}
发送 {Backspace}
发送 {Backspace}
发送 {Backspace}
发送,1.25
鼠标移动、StartX、StartY
}
其他
发送 {a}
返回

为什么它不起作用:(

当我尝试在不同的应用程序中使用“a”时出现错误消息。说在 1000 毫秒内使用了 71 个热键。

【问题讨论】:

  • 请格式化您的代码。

标签: autohotkey


【解决方案1】:

将此添加到脚本的顶部:

#MaxHotkeysPerInterval 300      ;default is 70

您遇到的错误对于捕获和使用鼠标滚轮的脚本很常见。 Autohotkey 将鼠标滚轮视为热键,并认为您每秒按下热键的次数不应超过 70 次。滚动可以调用热键更多次,这取决于使用情况。此行将允许超过 70 个。

【讨论】:

  • 感谢您的回复。但是,当我这样做时,假设我想在另一个窗口中输入“A”(我不想使用热键的窗口)。它不会输入“A”,它会暂停一秒钟,然后不输入字母。
  • 尝试将inputbox 用于您要输入的窗口。
【解决方案2】:

三件事,严格来说,当使用具有多行代码的热键时,第一行不会紧跟双冒号。所以这个:

a:: WinGetTitle, Title, A
WinGetClass, Class, A

应该是这样的:

a::
WinGetTitle, Title, A
WinGetClass, Class, A

其次,您尝试查找的命令称为命令式,名为“#IfWinActive”或“#If”,您的正则表达式应与后者的命令一起使用。有很多内容,因此您需要查看文档中的内容。

最后,在使用发送自身的热键时,您需要在其前面加上“$”,这样:

a::

变成:

$a::

希望对任何查看此旧帖子的人的问题有所帮助。

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多