【问题标题】:Autohotkey: MsgBox "Done" after Run自动热键:运行后 MsgBox “完成”
【发布时间】:2020-09-24 23:41:05
【问题描述】:

我有一个 python 脚本,我想在一个快捷键上运行,但我希望 Msgbox 在它完成后告诉我它已经完成。我怎么做?

我试过把MsgBox, Done 放在不同的地方,像这样

F8::Runwait, C:\python36\python.exe  "C:\Users\jason\Google Drive\pycharm\test.py"; 
MsgBox, Done
F9::Run, C:\python36\python.exe  "C:\Users\jason\Google Drive\pycharm\test1.py"; 
MsgBox, Done1

在文档的 RunMsgBox 部分中没有看到任何此类示例。

希望在执行任何热键后显示“完成”。

【问题讨论】:

    标签: autohotkey msgbox


    【解决方案1】:

    您能否只使用RunWait 而不是Run,以便程序在继续之前等待脚本完成?如果要执行多行,还需要使用多行热键语法。以下是您的脚本的编辑版本:

    F8::
        RunWait, C:\python36\python.exe  "C:\Users\jason\Google Drive\pycharm\test.py"; 
        MsgBox, Done
        Return
    
    F9::
        RunWait, C:\python36\python.exe  "C:\Users\jason\Google Drive\pycharm\test1.py"; 
        MsgBox, Done1
        Return
    

    请注意,如果您的 python 脚本启动另一个进程,您的 AutoHotkey 脚本将不会等待第二个进程。

    【讨论】:

    • 它对我有用,但你的格式似乎也有点不对劲。 RunWait 命令与 F8:: 热键位于同一行,因此 AutoHotkey 仅运行该命令。在这种情况下,您要执行多行,因此您需要将所有内容放在热键下方。我已经更新了我的答案来证明这一点。
    • 它被标记为“已接受的答案”,所以这很好,但请注意,在某些情况下执行 RunWait 下的脚本会在脚本完成之前返回 - 特别是如果脚本调用其他函数、脚本、或与其他程序交互。因此,了解脚本何时完成的真正答案将涉及更多内容,例如写入文件和 AHK 脚本检查它,或将结果发送到 StdOut 或 StdErr 和 AHK 等待该结果。或者甚至从 py 和 AHK 将一些东西放入剪贴板,等待剪贴板更改事件。但是 OP 需要这个吗?
    • 这取决于你如何定义“完成”。 RunWait 等待它开始终止的进程。我相信您要说的是该流程可以启动其他流程,而当第一个流程完成时,这些流程可能尚未完成。 +1 对于有效的关注,我会将其添加到我的答案中。
    【解决方案2】:

    要让热键执行多个命令,请将第一行放在热键定义下方,并将最后一行作为返回:

    F8::
    Runwait, C:\python36\python.exe  "C:\Users\jason\Google Drive\pycharm\test.py"; 
    MsgBox, Done
    return
    

    https://www.autohotkey.com/docs/Hotkeys.htm#Intro

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2012-11-24
      • 2015-07-30
      相关资源
      最近更新 更多