Autohotkey-Skript zum Starten des Programms bei erneuter Internetverbindung

Autohotkey-Skript zum Starten des Programms bei erneuter Internetverbindung

Ich versuche, ein Skript zu programmieren, das das Internet überwacht und bei Verbindungsabbruch chrome.exe ausführt.Wiederverbindung.

Hier ist, was ich bisher habe;

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
        }
    }

Die Probleme sind:

  • Die Meldung, dass die Internetverbindung unterbrochen wurde, erscheint nicht sofort, wenn die Internetverbindung unterbrochen wird. Es dauert etwa 6-7 Sekunden.
  • Eine Meldung, die die erneute Verbindung bestätigt, und Chrome.exe werden nicht gestartet, wenn die Internetverbindung wiederhergestellt ist (und die Internetverbindung ist definitiv wiederhergestellt worden, und zwar innerhalb von 20.000 Millisekunden – das habe ich manuell getestet).

Dank im Voraus

Antwort1

Sie müssen html := UrlDownloadToVar("http://www.google.com")vor der zweiten Prüfung einen erneuten Lauf durchführen, um diese Variable zu aktualisieren.

Ich denke, es wäre besser, eine While-Schleife auszuführen. Auf diese Weise wird weiter gewartet, wenn die Internetverbindung nicht wiederhergestellt wird. Auf diese Weise können Sie in kürzeren Abständen prüfen und das Skript schneller reagieren lassen.

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
}

Wenn Sie die Nachricht nur einmal anzeigen möchten, können Sie dies if(!html) {}vor der While-Anweisung einfügen.

verwandte Informationen