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.