Process Close does not close a process when performed in a SetTimer label
Posted
by
NbdNnm
on Stack Overflow
See other posts from Stack Overflow
or by NbdNnm
Published on 2012-11-13T22:57:09Z
Indexed on
2012/11/13
22:59 UTC
Read the original article
Hit count: 481
autohotkey
|file-exists
The script below creates a child process to perform FileExist() separately from the main script so that it avoids halting the script when an unknown network path is passed.
However, the command, Process close, does not close the given process despite its ErrorLevel indicates it succeeded to close. Task Manager shows the child process still exists.
FileExistTimeout() ; this checks if the necessary parameters are passed
; this checks if the given path exists by creating a child process with the given timeout
PathToCheck := "\\1.2.3.4\test"
msgbox, 64, Test Result, % FileExistTimeout(PathToCheck) "`n" ErrorLevel
FileExistTimeout(strPath="", nTimeout=1000, strSwitch="/fe") {
global
strParam1 = %1%
strParam2 = %2%
; if the function is used to check the script parameters
if (strPath="") {
if (strParam2 = strSwitch) && strParam1 ; this means the function is placed at the beginning of the script.
ExitApp % (FileExist(strParam1) != "") + 1 ; Return 1 or 2.
Return
}
; create a child process to check the path
tooltip, RunWait is performing....
SetTimer, FileExistTimeout, % -1 * nTimeout
RunWait "%A_AhkPath%" "%A_ScriptFullPath%" "%strPath%" "%strSwitch%",,, nPID
SetTimer, FileExistTimeout, Off ; Disable the timer (if it hasn't fired already).
tooltip
; ErrorLevel contains the exit code of the process (from RunWait).
if ErrorLevel = 2 ; found
return true
else if ErrorLevel = 1 ; not found
return
return ; timeout
FileExistTimeout:
Process Close, %nPID% ; Timed out - terminate the process.
tooltip, % "Process Closed: " ErrorLevel "`n" "Used Pid: " nPID,,, 2
return
}
© Stack Overflow or respective owner