首次使用后 AutoHotKey 脚本失败
Posted
技术标签:
【中文标题】首次使用后 AutoHotKey 脚本失败【英文标题】:AutoHotKey script fails after first use 【发布时间】:2013-03-20 17:28:42 【问题描述】:我正在使用 Word 2007 文档形式的帮助文件。我需要在浏览时更新屏幕截图,所以当我按下组合键时,我试图让 AHK 从右键下拉菜单中选择“更改图片”选项。我得到了代码,它运行良好……我第一次使用它。之后,我只看到右键菜单闪烁并消失。我怀疑来自Send Down 4
的脚本没有执行,因为我几乎看不到突出显示的“剪切”选项,但所选图像没有从文档中剪切,表明Send Enter
也没有被执行。
我找不到其他似乎遇到此问题的人。如果我手动重新加载我的脚本,它会再次正常工作,但只有一次。然后它又回到了闪烁下拉菜单,没有别的了。任何帮助将不胜感激。我正在尝试将这个过程减少到尽可能少的点击次数,但它已经到了我浪费更多时间尝试解决我的宏观问题的地步,而不是仅仅以缓慢而尴尬的方式进行。
我现在的脚本:
^!z::
Send +F10
Send Down 4
Send Enter
return
为了澄清起见:
当我删除Send +F10
之后的所有内容然后使用我的热键时,我会显示右键菜单并且没有闪烁,但同样,仅在我第一次使用它时。之后,菜单返回到屏幕上闪烁一次。比较一下,实际按下 Shift 和 F10 会显示右键菜单,并且不会在抬起时消失。
如果我将所有三个发送命令移到一行以获取 Send +F10 Down 4 Enter
脚本将执行右键菜单中的“剪切”选项,然后将光标向下移动 4 行,然后发送 Enter
击键。与之前的实例不同,这组操作在第一次使用脚本后起作用。
【问题讨论】:
【参考方案1】:在我的 Word 副本中,如果选择了图像,则控制键会弹出二级“布局选项”菜单。虽然我不确定为什么它第一次对你有用,但后来却没有,但当我在最后测试它时,如果我改变两件事,它就会起作用:
-
使用
mouseclick, right
而不是Send +F10
将快捷键修饰符从 shift-ctrl 更改为 Win,即将其设置为 #z
【讨论】:
你的方法有效。如果没有人回答为什么我的原始脚本在一天结束时不起作用的问题,我会将其标记为我接受的答案。感谢您的输入。附带说明:从我的原始热键中删除 ctrl 使其只有 alt+z 不会执行mouseclick, right
命令,但会执行其他两个命令。我对使用 AHK 脚本还是很陌生,所以这对我来说既有趣又神秘。
An...当击键速度过快时,请在执行下一条指令之前添加几行并稍作停顿:Sleep, 50
。这样菜单就可以跟上脚本的快速启动。
问题不在于命令发送到 Word 的速度,而在于脚本在第一次使用后无法正确执行。它第一次工作正常。但是如果我选择另一张图片再试一次,那就不行了。
我相信上下文菜单可能会导致与按住控制键的奇怪交互。 AFAIK,在脚本结束时,控制键仍被按住(因为脚本完成得非常快),但计算机可能认为它们已被释放。它也可能带来了无意的菜单,或者 Word 应用程序可能失去了焦点。你如何让热键再次工作?重新加载脚本?重新启动 Word?【参考方案2】:
您可以尝试发送键盘快捷键而不是向下命令
SetBatchLines, 1
SetKeyDelay , 100 ; in miliseconds, keep increasing until your pc can hadle it
!x:: ; your hotkey in my case alt + x which is similar to ctrl + x for cutting text
Send +F10
Send t ; use the cut keyboard shortcut, for word should be 't'. if for some weird reason isn't change it
Send Enter
return
【讨论】:
以上是关于首次使用后 AutoHotKey 脚本失败的主要内容,如果未能解决你的问题,请参考以下文章
【AHK】autohotkey如何编译脚本,让F9键实现WIN+L功能,即锁定电脑功能。