【问题标题】:How to only execute next command after first command is executed in AHK?如何在 AHK 中执行第一个命令后才执行下一个命令?
【发布时间】:2013-06-14 23:09:06
【问题描述】:

我有 AutoHotKey 脚本。

目前我的 AHK 脚本一直在运行。它等待用户输入。

如果用户按 11 则执行某项操作。
如果用户按 12 则执行其他操作。

当前的 AHK 脚本

1::
Input Key, L1

if Key=1
    {
    Run C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C:\Users\username\Desktop\new.ps1
    ; How can I make this command run only after above script has finished executing?
}

【问题讨论】:

  • 我发现我们可以使用这个命令Run C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File C:\Users\myuser\Desktop\new.ps1来运行PS脚本,现在我只需要在PS脚本执行完成后才能运行下一个命令。

标签: autohotkey


【解决方案1】:

您可以创建热字符串,而不是像 1:: 这样的热键然后输入键:

:*:11::
RunWait xyz
Return

:*:12::
RunWait, abc
Return

【讨论】:

  • 罗伯特,我做不到:*:1:: Runwait xyz return:*:11:: RunWait, abc Return 对吧?或者我可以吗?我试过它只会满足第一个条件。
  • 一旦你点击第一个条件“1”,第一个热字串就会执行。我经常做的是使每个代码在末尾带有“\”的唯一性,因此 :*:1\:: 和 :*:11\:: 和 :*:12\:: 等。而不是定义结束带有#Hotstring EndChars 的字符,我使用基于语言(英语、德语、荷兰语、法语、Python、AHK、HTML 等)的各种“结束”字符,这样“r=”就是“With Reagrds”、“r\ " 是 "Met vriendelijke groet","r/" = "Mit Freundlichen Grüssen","r[" 是 "Return",等等。
  • 感谢确认。如果我使用:*:1\::,我需要按1 和``正确吗?
  • 我想你想写 1\,但是 \ 被反引号消耗掉了。
  • 除非您使用计时器。按 1 等待几毫秒(例如 300),如果没有按其他数字,则执行 1,否则执行 1n。
【解决方案2】:

使用RunWait

与 Run 不同,RunWait 将等到 Target 关闭或退出,此时 ErrorLevel 将设置为程序的退出代码(作为有符号的 32 位整数)。一些程序似乎会立即返回,即使它们仍在运行;这些程序产生另一个进程。

【讨论】:

  • 谢谢,我应该使用Run C:\Windows\System32.... 来代替Runwait C:\Windows\System32.... 吗?只是想仔细检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2010-12-15
相关资源
最近更新 更多