Installation imprimantes via serveur d'impression

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Loukazenska
Niveau 1
Niveau 1
Messages : 2
Enregistré le : lun. 26 oct. 2015 11:07
Status : Hors ligne

Installation imprimantes via serveur d'impression

#1

Message par Loukazenska »

Bonjour à tous,

Je viens vers vous car je cherche définitivement un solution à mon problème.
J'essaye d'installer une imprimante via mon serveur d'impression, plus précisément, il y à un petit peu je voulais un script qui visualise les imprimantes installé sur un client ou un serveur. Dans le forum j'ai trouvé ce script qui m'a tout de suite convaincu :

Code : Tout sélectionner

#Include <Array.au3>


Local $server = "172.16.11.98" ;
$list = _EnumPrinters($server)
_ArrayDisplay($list, "Imprimantes disponible sur " & $server, -1, 0, "", "", "RowID|DeviceID|DriverName|Name|ServerName|Shared|ShareName|PortName|PortIP")


Func _EnumPrinters($strComputer = "172.16.11.98")
    Local $aResult[1][8]
    Local $wbemFlagReturnImmediately = 0x10
    Local $wbemFlagForwardOnly = 0x20
    
    Local $objWMIService, $colPrinters, $objPrinter
    
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colPrinters = $objWMIService.ExecQuery ("Select * from Win32_Printer", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If NOT IsObj($colPrinters) Then Return 0
   
    $i = 0
    For $objPrinter in $colPrinters
        $i += 1
        Redim $aResult[$i][8]

        $aResult[$i - 1][0] = $objPrinter.DeviceID
        $aResult[$i - 1][1] = $objPrinter.DriverName
        $aResult[$i - 1][2] = $objPrinter.Name
        $aResult[$i - 1][3] = $objPrinter.ServerName
        $aResult[$i - 1][4] = $objPrinter.Shared
        $aResult[$i - 1][5] = $objPrinter.ShareName
        $aResult[$i - 1][6] = $objPrinter.PortName
        $aResult[$i - 1][7] = _GetPrinterPortIP($objPrinter.PortName, $strComputer)

    Next
    Return $aResult
EndFunc


Func _GetPrinterPortIP($sPortName, $strComputer)
    Local $wbemFlagReturnImmediately = 0x10
    Local $wbemFlagForwardOnly = 0x20
    
    Local $objWMIService, $colPort, $colPort

    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $colPort = $objWMIService.ExecQuery ("select * from Win32_TCPIPPrinterPort Where Name = '" & $sPortName & "'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If NOT IsObj($colPort) Then Return 0
    
    
    For $objPort in $colPort
        Return $objPort.HostAddress
    Next
    
    Return ""
    
EndFunc


Func _ErrFunc($oError)
    Local $txt = "Error number : " & $oError.number & @CRLF & _
            "WinDescription:" & @TAB & $oError.windescription & @CRLF & _
            "Description : " & @TAB & $oError.description & @CRLF & _
            "Source : " & @TAB & $oError.source
    MsgBox(16, "Error", $txt)
EndFunc  


Func _StringUnSplit($aVal, $sSep = ";")
    If NOT IsArray($aVal) Then Return 0
    Local $sReturn = ""
    For $i = 0 To UBound($aVal) - 1
        If $i = 0 Then
            $sReturn = $aVal[$i]
        Else
            $sReturn &= $sSep & $aVal[$i]
        EndIf
    Next
    Return $sReturn
 EndFunc
Donc ce script ouvre une interface avec plusieurs infos dont le nom des imprimantes. Maintenant je voudrais via cette fenêtre, sélectionner une imprimantes et en double-clic pouvoir l'installer. Mais jusqu'à ce jour, impossible.

Donc si quelqu'un à une solution je suis preneur.

Merci par avance et bonne journée
Répondre