PowerShell : Application dans la zone de notification (Systray app)

# Importations + out-null pour ne pas afficher la sortie (output de la console)
[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | out-null
[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | out-null
 
# Icône d'un exécutable
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon("c:\windows\explorer.exe") 
 
# Création d'une icône dans la zone de notification
$toolNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$toolNotifyIcon.Text = "Outil zone de notification"
$toolNotifyIcon.Icon = $icon
$toolNotifyIcon.Visible = $true
 
# Création d'un menu pour ouvrir l'explorateur de fichiers
$openExplorerMenuItem = New-Object System.Windows.Forms.MenuItem
$openExplorerMenuItem.Text = "Ouvrir l'explorateur de fichiers"
 
# Création d'un menu pour quitter
$exitMenuItem = New-Object System.Windows.Forms.MenuItem
$exitMenuItem.Text = "Quitter"
 
# Ajoute les menus contextuels
$contextmenu = New-Object System.Windows.Forms.ContextMenu
$toolNotifyIcon.ContextMenu = $contextmenu
$toolNotifyIcon.contextMenu.MenuItems.AddRange($openExplorerMenuItem)
$toolNotifyIcon.contextMenu.MenuItems.AddRange($exitMenuItem)

# Action pour le menu "Ouvrir l'explorateur de fichiers"
$openExplorerMenuItem.add_Click({
 #Ouvre l'explorateur de fichiers
 Invoke-Item c:\windows\explorer.exe
})

# Action pour le menu "quitter"
$exitMenuItem.add_Click({
 #Quitte l'application
 $toolNotifyIcon.Visible = $false
 $window.Close()
 Stop-Process $pid
})

# Démarre l'application
$appContext = New-Object System.Windows.Forms.ApplicationContext
[void][System.Windows.Forms.Application]::Run($appContext)

Commentaires