インターネット再接続時にプログラムを起動する Autohotkey スクリプト

インターネット再接続時にプログラムを起動する Autohotkey スクリプト

インターネットを監視し、切断された場合にchrome.exeを実行するスクリプトをコーディングしようとしています。再接続

これまでのところ、次のものがあります。

UrlDownloadToVar(URL) {
ComObjError(false)
WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", URL)
WebRequest.Send()
Return WebRequest.ResponseText
}

#Persistent
SetTimer, CheckInternet, 100
Return

CheckInternet:
html := UrlDownloadToVar("http://www.google.com")
if html
    {}
else
    {
    MsgBox,, Internet status, not working will check again later, 1
    sleep, 20000
    if html
        {
        MsgBox,, Internet status, 2nd  check = working, 5
        Run chrome.exe
        }
    }

問題は次のとおりです:

  • インターネットが切断されたときに、インターネット切断を示すMsgBoxがすぐに表示されるわけではなく、6〜7秒ほどかかります。
  • インターネットが復旧しても、再接続を確認するメッセージ ボックスと Chrome.exe は起動されません (インターネットは確実に復旧しており、20000 ミリ秒以内に復旧しています。手動でテストしました)

前もって感謝します

答え1

html := UrlDownloadToVar("http://www.google.com")その変数を更新するには、2 回目のチェックの前に再実行する必要があります。

while ループを実行する方が良いと思います。この方法では、インターネット接続が戻らない場合は待機し続けます。この方法により、より短い間隔でチェックし、スクリプトをより迅速に応答させることができます。

html := UrlDownloadToVar("http://www.google.com")
while(!html) {
    MsgBox,, Internet status, not working will check again later, 1
    sleep, 20000
    html := UrlDownloadToVar("http://www.google.com")
}
MsgBox,, Internet status, 2nd  check = working, 5
    Run chrome.exe
}

メッセージを一度だけポップアップ表示したい場合は、if(!html) {}while ステートメントの前にそれを置くことができます。

関連情報