【问题标题】:Making sure windows responds to key strokes确保窗口响应击键
【发布时间】:2013-12-01 02:40:18
【问题描述】:

有没有办法确保程序在发送另一个按键之前响应 AutoHotkey 发送的按键?我想尽快发送击键,但问题是某些菜单/窗口/等需要一些时间。出现,所以我似乎需要指定一个键延迟并使用Send,或者使用Sleep(这意味着它可能不会“尽快”),因为否则 AutoHotkey 可能会发送键 太快了,反过来可能会做一些你不想做的事情。

【问题讨论】:

  • 请详细说明您实际在做什么。这些击键应该有什么效果?你在插入文字吗?或者您想在某种菜单中触发功能/导航?为了确定目标窗口是否处理了您的输入,必须进行一些更改。有很多东西可以改变(例如窗口标题、控件文本、msgbox 弹出窗口等)。也许程序甚至会生成其他形式的输出(例如,写入文件/注册表项)。但是,只要你不让我们知道你到底想要做什么,这一切都是一个远大的目标。

标签: autohotkey


【解决方案1】:

您可能想查看以下命令:
ControlSend/ControlClickControlGet/ControlGetText
前两个允许您直接在特定控件中设置文本/选项,后两个允许您读取当前在特定控件中设置的文本/选项。

【讨论】:

    【解决方案2】:

    您可以一次发送所有击键。你可以发送一个完整的字符串,你知道的。

    但是,如果窗口已经处于活动状态并且您可以向其发送一个按键,那么只要窗口在按键之间没有失去焦点,您发送更多按键应该不会有任何问题。

    如果窗口似乎无法接受send,您也可以尝试使用sendinput 而不是send

    在我的电脑上,我已将 win+space 设置为将这行破折号作为一个字符串发送,它会在几分之一秒内完成:-------------------------------------------------------------------

    另一种选择是粘贴字符串而不是发送击键。只需使用send ^v 粘贴变量的内容。这比使用send 发送字符串要快得多,但是您需要确保您的窗口能够接收粘贴命令。

    我说这些是因为可能根本不需要检查。你可以放心,密钥正在被发送——这就是 ahk 应该做的,你知道的。

    获得确认的唯一方法是发送到编辑控件并且可以取回您发送的文本。

    无法确认菜单是否已收到击键。您只需对其进行测试,直到它正常工作。

    【讨论】:

    • 我想你误解了我的问题。重要的问题是我如何检查窗口是否在按键后执行了它应该执行的操作,而不仅仅是我如何以最快的速度简单地发送键。在我的特殊情况下,我想将密钥发送到新打开的窗口或菜单,因此可能必须有一些东西等待它发生。我想我想知道 AHK 是否有任何内置函数可以做到这一点。
    • 您是从同一个脚本向 gui 发送击键还是向外部窗口发送击键?
    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多