我如何检查 AutoIt3 可执行文件是否已经 运行?

How do I check if AutoIt3 executable is already running?

将我的 AutoIt v3 脚本编译成 EXE 可执行文件后,我想确保一次只能有一个实例 运行。实现此目标的最佳方法是什么?

更新:我认为接受的答案中的单例函数是一种更可靠的方法。但我会在这里留下这个答案,以防它对可能无法访问它或可能想要不同方法的旧版本的任何人有用。

如果脚本已经 运行ning,这些代码行将允许您退出脚本。当脚本被编译成 EXE 时效果最好。请注意,如果它是 运行 作为未编译的 AU3 脚本,如果 any AutoIt 脚本已经 运行ning.

,它将退出

希望这对某人有所帮助。

#include <Process.au3>

; Quit with message box if app is already running
$numberOfAppInstances = ProcessList(_ProcessGetName(@AutoItPID))
$numberOfAppInstances = $numberOfAppInstances[0][0]
If $numberOfAppInstances > 1 Then
    MsgBox(0, "Exiting", "Application already running!")
    Exit
EndIf

你需要的是_Singleton

#include <Misc.au3>
#include <MsgBoxConstants.au3>

If _Singleton("test", 1) = 0 Then
    MsgBox($MB_SYSTEMMODAL, "Warning", "An occurrence of test is already running")
    Exit
EndIf
MsgBox($MB_SYSTEMMODAL, "OK", "the first occurrence of test is running")