如何检查AutoIt3可执行文件是否已在运行



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

您需要的是一个_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")

UPDATE:我认为接受答案中的singleton函数是一种更可靠的方法。但我将把这个答案留在这里,以防它对那些可能无法访问或想要不同方法的旧版本的人有用

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

希望这能帮助到别人。

#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

最新更新