把這個函數丟到任何AHK腳本中,就可以限制單進程運行。
;-- 限制單進程運行函數
OnlyOne() {
static init:=OnlyOne()
ListLines, % (lls:=A_ListLines=0?"Off":"On") ? "Off":"Off"
DetectHiddenWindows, % (dhw:=A_DetectHiddenWindows) ? "On":"On"
Gui, __OnlyOne__: Show, Hide, <<%A_ScriptFullPath%>>
Gui, __OnlyOne__: +Hwndmyid
WinGet, list, List, <<%A_ScriptFullPath%>> ahk_class AutoHotkeyGUI
Loop, % list>1 ? list : 0
{
IfEqual, myid, % id:=list%A_Index%, Continue
WinGet, pid, PID, ahk_id %id%
WinClose, ahk_class AutoHotkey ahk_pid %pid%,, 3
IfWinExist, ahk_id %id%,, Process, Close, %pid%
}
DetectHiddenWindows, %dhw%
ListLines, %lls%
}