Testeur de connectivité internet avec notifications

Bonjour,

Aujourd’hui je partage avec vous une petite application, encore et toujours créée avec l’aide de PowerShell Studio 2014, dont le but est de vous avertir en cas de perte de connectivité internet. Celle-ci est compatible avec les systèmes 32 et 64 bits, et nécessite PowerShell version 3 ou supérieure.

Note : la version actuelle ne fonctionne pas si vous vous connectez à internet via un proxy (amélioration en cours).

Une fois installée et démarrée via le menu Démarrer, l’application affiche une icône dans la zone de notification (System Tray), dont le visuel change en fonction de l’état de votre connexion.

Si vous avez accès à internet (l’outil effectue une simple requête vers le site de Google), l’icône affiche alors un rond vert :

ScreenOK

En cas de perte de connexion, l’icône change et devient alors un rond rouge. Une notification (BalloonTip) s’affiche également :

ScreenNOK

Une fois la situation rétablie, l’icône redevient verte, et la notification disparaît.

Pour quitter le programme, il suffit d’effectuer un clic droit sur l’icône et choisir ‘Exit‘ :

Exit

 

Axes d’amélioration possibles :

  • Une entrée cochable dans le menu contextuel, permettant la désactivation des notifications ;
  • Une notification sonore (synthèse vocale ?) en cas de perte/récupération de la connectivité ;
  • Un détection automatique du proxy pour le test de la requête web.

Pour ceux que cela intéresse, voici le script PowerShell utilisé par l’application :

# Creating the Form
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

# Initializing the required objects and variables 
$form = New-Object System.Windows.Forms.form
$NotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$ContextMenu = New-Object System.Windows.Forms.ContextMenu
$MenuItem = New-Object System.Windows.Forms.MenuItem
$MenuItem2 = New-Object System.Windows.Forms.MenuItem
$Timer = New-Object System.Windows.Forms.Timer
$iconOK = New-Object System.Drawing.Icon("OK.ico")
$iconNOK = New-Object System.Drawing.Icon("NOK.ico")

# Hide the form itself, as we only want to display the tray icon
$form.ShowInTaskbar = $false
$form.WindowState = "minimized"

# Initialize the Tray icon and its properties
$NotifyIcon.Icon =  $iconOK
$NotifyIcon.ContextMenu = $ContextMenu
# Loading the contextual menu (showed while right click on the icon) 
$NotifyIcon.contextMenu.MenuItems.AddRange($MenuItem2)
$NotifyIcon.contextMenu.MenuItems.AddRange($MenuItem)
# At start, the icon shows the OK icon and the 'mouse hover' message bellow
$NotifyIcon.Visible = $True
$NotifyIcon.Text = "Internet Connection is UP"

# We want the script to run every 4 seconds
$Timer.Interval = 4000
$Timer.add_Tick({Test-WebAccess})
$Timer.start()

# This is the 'Exit' menu entry 
$MenuItem.Text = "Exit"
$MenuItem.add_Click({
    $Timer.stop()
    $NotifyIcon.Visible = $False
    $form.close()
})

# This is the 'About' menu entry
$MenuItem2.Text = "About"
$MenuItem2.add_Click({
    $wshell = New-Object -ComObject Wscript.Shell
    $wshell.Popup("NetTester - Version 1.0.0.1`r`n`r`nAuthor : Antoine DELRUE`r`nContact : antoine@delrue.me`r`nhttps://obilan.be", 0, "About NetTester",0x0)
})

# This basic function will test the internet access and triggers the appropriate events
function Test-WebAccess {

    $test = $null
    $test = Invoke-WebRequest -Uri google.fr -TimeoutSec 2
    
    if (!$test)
    {
        $NotifyIcon.Icon = $iconNOK
        $NotifyIcon.ShowBalloonTip(4500,"Attention!", "Your internet connection is DOWN!",[system.windows.forms.ToolTipIcon]"Warning")
        $test = $null
        $notifyicon.text="Internet Connection is DOWN !"
    }

    else
    {
        $NotifyIcon.Icon = $iconOK
        $NotifyIcon.text = "Internet Connection is UP"
        $test=$null
        # Little trick to make the notification disapear
        $NotifyIcon.Visible = $false
        $NotifyIcon.Visible = $true
    }
}

# Now let's run the script
Test-WebAccess
[void][System.Windows.Forms.Application]::Run($form)

Voici le package d’installation, au format msi :

Télécharger NetTester-SETUP.zip

1 réflexion au sujet de « Testeur de connectivité internet avec notifications »

  1. Salut Antoine,

    Super tool, exactement ce qu’il me fallait. Je l’utilise pour savoir quand mon CPL déraille et me coupe internet. Comme ça, je ne clique plus bêtement sur les page web en me demandant pourquoi ça ne charge pas 😛

    Merci, et vivement la version suivante ! Bonne continuation.

    Jean o/

    Répondre

Laisser un commentaire