Script Autohotkey pour lancer le programme sur reconnexion Internet

0

J'essaie de coder un script qui surveille Internet, et s'il se déconnecte pour exécuter chrome.exe sur reconnexion .

Voici ce que j'ai jusqu'ici;

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

Les problèmes sont:

  • La MsgBox indiquant la déconnexion Internet n'apparaît pas immédiatement lorsque Internet se déconnecte, cela prend comme 6-7 secondes
  • Msgbox confirmant la reconnexion & amp; Chrome.exe ne sont pas lancés lorsque Internet revient (et Internet est définitivement revenu, et dans les 20000 millisecondes - j'ai testé manuellement cela)

Merci d'avance

Ron147
la source
Tu es en train de faire UrlDownloadToVar juste une fois. Vous devez refaire le test en le refaisant avant de vérifier à nouveau le contenu de la html var.
Patrick Mevzek
@ PatrickMevzek C'était exactement le problème. Merci de votre aide!
Ron147

Réponses:

0

Vous devez recommencer html := UrlDownloadToVar("http://www.google.com") avant la deuxième vérification pour mettre à jour cette variable.

Je pense qu'il serait préférable de courir une boucle while. De cette façon, si la connexion Internet ne revient pas, elle restera en attente. De cette façon, vous pouvez vérifier des intervalles plus courts et que le script réponde plus rapidement.

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
}

Si vous voulez seulement faire apparaître le message une fois, vous pouvez le mettre dans un if(!html) {} avant la déclaration while.

Worthwelle
la source