This is the v1.1 code. The error test is normally to wait until a busy file becomes writable but you can test it here with a read-only file.
Code: Select all
#requires AutoHotkey v1.1
#NoEnv
loop
{
FileAppend % A_Now . "`n", %A_ScriptDir%\read-only.txt
if ErrorLevel
Sleep 20
}
until !ErrorLevel or (A_Index > 50) ; after 1 second (20ms x 50), we have a problem
MsgBox, % (ErrorLevel ? "Error" : "OK")
ExitApp
Code: Select all
#requires AutoHotkey v2
err := ""
Loop
{
Try
FileAppend(A_Now . "`n", A_ScriptDir . "\read-only.txt")
catch Error as err
Sleep(20)
else
Break
}
until (A_Index > 50) ; after 1 second (20ms x 50), we have a problem
if IsObject(err)
MsgBox(err.Message)
else
MsgBox("OK")
ExitApp