Code : Tout sélectionner
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
SplashTextOn("", "DETECTION DE L'ETAT DES IMPRIMANTES EN COURS...", 500, 50, -1,-1,33,"", 9)
; LISTE LES IMPRIMANTES RESEAU
Dim $i=1
Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer WHERE PortName LIKE 'IP_%'")
Dim $imp_tab[1][5]
For $objItem In $colItems
ReDim $imp_tab[$i+1][5]
; Nom
$imp_tab[$i][0]=$objItem.Caption
; Défaut
If $objItem.Default="True" Then $imp_tab[$i][1]="DEFAUT"
; Port
$imp_tab[$i][2]=StringRight($objItem.PortName,StringLen($objItem.PortName)-3)
$i=$i+1
Next
$imp_tab[0][0]=UBound($imp_tab)
For $i=1 To $imp_tab[0][0]-1
If Ping($imp_tab[$i][2])=0 Then $imp_tab[$i][3]="OFFLINE"
Next
Run("CONTROL PRINTERS","")
$Program_Name = "Imprimantes et télécopieurs"
WinWait($Program_Name,"")
WinSetState($Program_Name,"",@SW_HIDE)
$imp_nb = ControlListView($Program_Name, "", "SysListView321", "GetItemCount")
#Region ### START Koda GUI section ### Form=
Global $Form1_1 = GUICreate("LISTE ET ETAT DES IMPRIMANTES RESEAU", 703, 236, -1, -1)
Global $MenuItem1 = GUICtrlCreateMenu("&Fichier")
Global $MenuQuitter = GUICtrlCreateMenuItem("Quitter", $MenuItem1)
Global $MenuItem2 = GUICtrlCreateMenu("?")
Global $MenuAide = GUICtrlCreateMenuItem("Aide", $MenuItem2)
Global $MenuMail = GUICtrlCreateMenuItem("Contacter l'auteur", $MenuItem2)
Global $Menuweb = GUICtrlCreateMenuItem("Site web de l'auteur", $MenuItem2)
Global $Menu_maj = GUICtrlCreateMenuItem("Vérifier les mises à jours", $MenuItem2)
Global $MenuApropos = GUICtrlCreateMenuItem("A propos de...", $MenuItem2)
Global $Label1 = GUICtrlCreateLabel("LISTE ET ETAT DES IMPRIMANTES RESEAU", 8, 8, 681, 17, $SS_CENTER)
GUICtrlSetFont(-1, 11, 800, 0, "Verdana")
Global $List1 = GUICtrlCreateListView("IMPRIMANTE|DEFAUT|IP|OFFLINE|ETAT", 7, 31, 687, 175)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 75)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 75)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 200)
GUISetState(@SW_SHOW)
;Global $Form1_1_AccelTable[1][2] = [["{VERR.MAJ}", $Menu_maj]]
;GUISetAccelerators($Form1_1_AccelTable)
#EndRegion ### END Koda GUI section ###
For $i=1 To $imp_tab[0][0]-1
$index_tmp = ControlListView($Program_Name, "", "SysListView321", "FindItem",$imp_tab[$i][0])
$imp_etat = ControlListView($Program_Name, "", "SysListView321", "GetText",$index_tmp,2)
$index_imp_tab = _ArraySearch($imp_tab, $imp_tab[$i][0],0,0,0,1,1,0) ; Recherche dans colonne 1
$imp_tab[$index_imp_tab][4]=$imp_etat
;GUICtrlSetData($List1, $imp_tab[$i][0])
GUICtrlCreateListViewItem($imp_tab[$i][0] & "|" & $imp_tab[$i][1] & "|" & $imp_tab[$i][2] & "|" & $imp_tab[$i][3] & "|" & $imp_tab[$i][4], $List1)
Next
SplashOff()
WinSetState($Program_Name,"",@SW_HIDE)
WinClose($Program_Name,"")
;_ArrayDisplay($imp_tab,"Etat des imprimantes")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $MenuQuitter
Case $MenuAide
Case $MenuMail
Case $Menuweb
Case $Menu_maj
Case $MenuApropos
EndSwitch
WEnd