Page 1 sur 1
Gestion des Imprimantes Sous windows

Publié:
24 Juil 2009 à 15:41
par Michael DELIQUE
testé avec Windows XP
[syntax="LotusScript"] Function PrinterList() As Variant
'
http://techsupt.winbatch.com/webcgi/web ... inting.txt
'Liste toutes les imprimantes installé"
Dim lstPrinter List As String
Dim vrPrinter As Variant
Dim i As Integer
Dim objWMIService As Variant
Const Computer = "."
On Error Goto ErreurHandle
lstPrinter(0)=""
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer")
i=0
Forall objPrinter In vrPrinter
lstPrinter(i)=objPrinter.Name
i=i+1
End Forall
Set vrPrinter = Nothing
Set objWMIService = Nothing
PrinterList = lstPrinter
Erase lstPrinter
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
Erase lstPrinter
lstPrinter(0)=""
PrinterList = lstPrinter
Erase lstPrinter
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:42
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterDefautGet() As String
'renvois le nom de l'imprimante par défaut
Dim objWMIService As Variant
Dim vrPrinter As Variant
Const Computer = "."
On Error Goto ErreurHandle
PrinterDefautGet = ""
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer Where Default = True")
Forall objPrinter In vrPrinter
PrinterDefautGet = Trim(Cstr(objPrinter.Name))
Exit Forall
End Forall
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterDefautGet = ""
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:42
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterDefautSet(wPrinter As String) As String
'change l'imprimante par défaut
Dim objWMIService As Variant
Dim vrPrinter As Variant
Const Computer = "."
On Error Goto ErreurHandle
PrinterDefautSet = ""
If Trim(wPrinter) = "" Then
Error 9999,"wPrinter is empty"
Exit Function
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_Printer Where Name = '}+Trim(Replace(wPrinter,"\","\\"))+{'})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Trim(wPrinter)) Then
Call objPrinter.SetDefaultPrinter()
PrinterDefautSet = Trim(objPrinter.Name)
Exit Forall
End If
End Forall
If Trim(PrinterDefautSet) = "" Then
'si jamais on ne trouve pas l'imprimante on passe toute les imprimante en revue
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Trim(wPrinter)) Then
Call objPrinter.SetDefaultPrinter()
PrinterDefautSet = Trim(objPrinter.Name)
Exit Forall
End If
End Forall
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterDefautSet = ""
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:44
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterOrientationGet(wPrinter As String) As String
'récupere l'orientation de l'imprimante passé en parametre sinon renvois l'orientation de l'imprimante par défaut
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim Printer As String
Const Computer = "."
On Error Goto ErreurHandle
PrinterOrientationGet = ""
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration Where Name = '}+Replace(Printer,"\","\\")+{'})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
Select Case objPrinter.Orientation
Case 1 'Portrait
PrinterOrientationGet = "P"
Case 2 'Paysage
PrinterOrientationGet = "L"
End Select
Exit Forall
End If
End Forall
If Trim(PrinterOrientationGet ) = "" Then
'si jamais on ne trouve pas l'imprimante on passe toute les imprimante en revue
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_PrinterConfiguration")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Printer) Then
Select Case objPrinter.Orientation
Case 1'Portrait
PrinterOrientationGet = "P"
Case 2 'Paysage
PrinterOrientationGet = "L"
End Select
Exit Forall
End If
End Forall
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterOrientationGet = ""
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:45
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterOrientationSet(wOrientation As String, wPrinter As String) As String
'change l'orientation de l'imprimante passé en parametre sinon change l'orientation de l'imprimante par défaut
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim Printer As String
Dim nbOrientation As Integer
Const Computer = "."
On Error Goto ErreurHandle
PrinterOrientationSet = ""
Select Case Ucase(Trim(wOrientation))
Case "PORTRAIT","P","1"
nbOrientation = 1
Case "PAYSAGE","LANDSCAPE","L","2"
nbOrientation = 2
Case ""
Error 9999,"wOrientation is Empty"
Exit Function
Case Else
Error 9999,"Bad Orientation value : "+wOrientation
Exit Function
End Select
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration Where Name = '}+Replace(Printer,"\","\\")+{'})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
objPrinter.Orientation = nbOrientation
If nbOrientation = 1 Then
PrinterOrientationSet = "P" 'Portrait
Else
PrinterOrientationSet = "L" 'Paysage
End If
Exit Forall
End If
End Forall
If Trim(PrinterOrientationSet) = "" Then
'si jamais on ne trouve pas l'imprimante on passe toute les imprimante en revue
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_PrinterConfiguration")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Printer) Then
objPrinter.Orientation = nbOrientation
If nbOrientation = 1 Then
PrinterOrientationSet = "P" 'Portrait
Else
PrinterOrientationSet = "L" ' Paysage
End If
Exit Forall
End If
End Forall
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterOrientationSet = ""
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:45
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterPropertyGet(wPrinter As String,wPrinterClass As String) As Variant
'list toute les propriétées d'une imprimante
'http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+Tutorials+Printing.txt
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim lstPrinter List As String
Dim Printer As String
Dim PrinterClass As String
Const Computer = "."
On Error Goto ErreurHandle
lstPrinter("NAME")=""
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Select Case Ucase(Trim(wPrinterClass))
Case "C","CONFIG","CONFIGURATION","WIN32_PRINTERCONFIGURATION"
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration Where Name = '}+Replace(Printer,"\","\\")+{'})
PrinterClass = "C"
Case "P","PRINT","PRINTER","WIN32_PRINTER",""
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_Printer Where Name = '}+Replace(Printer,"\","\\")+{'})
PrinterClass = "P"
Case Else
Error 9999,"Bad PrinterClass : "+wPrinterClass
Exit Function
End Select
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
Select Case PrinterClass
Case "C"
On Error Resume Next
lstPrinter("WIN32") = "Win32_PrinterConfiguration"
lstPrinter("BITSPERDEL") = Trim(Cstr(objPrinter.BitsPerPel))
lstPrinter("CAPTION") = Trim(Cstr(objPrinter.Caption))
lstPrinter("COLLATE") = Trim(Cstr(objPrinter.Collate))
lstPrinter("COLOR") = Trim(Cstr(objPrinter.Color))
lstPrinter("COPIES") = Trim(Cstr(objPrinter.Copies))
lstPrinter("DESCRIPTION") = Trim(Cstr(objPrinter.Description))
lstPrinter("DEVICENAME") = Trim(Cstr(objPrinter.DeviceName))
lstPrinter("DISPLAYFLAGS") = Trim(Cstr(objPrinter.DisplayFlags))
lstPrinter("DISPLAYFREQUENCY") = Trim(Cstr(objPrinter.DisplayFrequency))
lstPrinter("DITHERTYPE") = Trim(Cstr(objPrinter.DitherType))
lstPrinter("DRIVERVERSION") = Trim(Cstr(objPrinter.DriverVersion))
lstPrinter("DUPLEX") = Trim(Cstr(objPrinter.Duplex))
lstPrinter("FORMNAME") = Trim(Cstr(objPrinter.FormName))
lstPrinter("HORIZONTALERESOLUTION") = Trim(Cstr(objPrinter.HorizontalResolution))
lstPrinter("ICMINTENT") = Trim(Cstr(objPrinter.ICMIntent))
lstPrinter("ICMMETHOD") = Trim(Cstr(objPrinter.ICMMethod))
lstPrinter("LOGPIXELS") = Trim(Cstr(objPrinter.LogPixels))
lstPrinter("MEDIATYPE") = Trim(Cstr(objPrinter.MediaType))
lstPrinter("NAME") = Trim(Cstr(objPrinter.Name))
lstPrinter("ORIENTATION") = Trim(Cstr(objPrinter.Orientation))
lstPrinter("PAPERLENGTH") = Trim(Cstr(objPrinter.PaperLength))
lstPrinter("PAPERSIZE") = Trim(Cstr(objPrinter.PaperSize))
lstPrinter("PAPERWIDTH") = Trim(Cstr(objPrinter.PaperWidth))
lstPrinter("PELSHEIGHT") = Trim(Cstr(objPrinter.PelsHeight))
lstPrinter("PELSWIDTH") = Trim(Cstr(objPrinter.PelsWidth))
lstPrinter("PRINTQUALITY") = Trim(Cstr(objPrinter.PrintQuality))
lstPrinter("SCALE") = Trim(Cstr(objPrinter.Scale))
lstPrinter("SETTINGID") = Trim(Cstr(objPrinter.SettingID))
lstPrinter("SPECIFICATIONVERSION") = Trim(Cstr(objPrinter.SpecificationVersion))
lstPrinter("TTOPTION") = Trim(Cstr(objPrinter.TTOption))
lstPrinter("VERTICALRESOLUTION") = Trim(Cstr(objPrinter.VerticalResolution))
lstPrinter("XRESOLUTION") = Trim(Cstr(objPrinter.XResolution))
lstPrinter("YRESOLUTION") = Trim(Cstr(objPrinter.YResolution))
On Error Goto ErreurHandle
Case "P"
On Error Resume Next
lstPrinter("WIN32") = " Win32_Printer"
lstPrinter("ATTRIBUTES") = Trim(Cstr(objPrinter.Attributes))
lstPrinter("AVAILABILITY") = Trim(Cstr(objPrinter.Availability))
lstPrinter("AVAILABLEJABSHEETS") = Trim(Cstr(objPrinter.AvailableJobSheets))
lstPrinter("AVERAGEPAGESPERMINUTE") = Trim(Cstr(objPrinter.AveragePagesPerMinute))
lstPrinter("CAPABILITIES") = Trim(Cstr(objPrinter.Capabilities))
lstPrinter("CAPABILITYDESCRIPTIONS") = Trim(Cstr(objPrinter.CapabilityDescriptions))
lstPrinter("CAPTION") = Trim(Cstr(objPrinter.Caption))
lstPrinter("CHARSETSSUPPORTED") = Trim(Cstr(objPrinter.CharSetsSupported))
lstPrinter("COMMENT") = Trim(Cstr(objPrinter.Comment))
lstPrinter("CONFIGMANAGERERRORCODE") = Trim(Cstr(objPrinter.ConfigManagerErrorCode))
lstPrinter("CONFIGMANAGERUSERCONFIG") = Trim(Cstr(objPrinter.ConfigManagerUserConfig))
lstPrinter("CREATIONCLASSNAME") = Trim(Cstr(objPrinter.CreationClassName))
lstPrinter("CURRENTCAPABILITIES") = Trim(Cstr(objPrinter.CurrentCapabilities))
lstPrinter("CURRENTCHARSET") = Trim(Cstr(objPrinter.CurrentCharSet))
lstPrinter("CURRENTLANGUAGE") = Trim(Cstr(objPrinter.CurrentLanguage))
lstPrinter("CURRENTMIMETYPE") = Trim(Cstr(objPrinter.CurrentMimeType))
lstPrinter("CURRENTNATURALLANGUAGE") = Trim(Cstr(objPrinter.CurrentNaturalLanguage))
lstPrinter("CURRENTPAGERTYPE") = Trim(Cstr(objPrinter.CurrentPaperType))
lstPrinter("DEFAULT") = Trim(Cstr(objPrinter.Default))
lstPrinter("DEFAULTCAPABILITIES") = Trim(Cstr(objPrinter.DefaultCapabilities))
lstPrinter("DEFAULTCOPIES") = Trim(Cstr(objPrinter.DefaultCopies))
lstPrinter("DEFAULTLANGUAGE") = Trim(Cstr(objPrinter.DefaultLanguage))
lstPrinter("DEFAULTMIMETYPE") = Trim(Cstr(objPrinter.DefaultMimeType))
lstPrinter("DEFAULTNUMBERUP") = Trim(Cstr(objPrinter.DefaultNumberUp))
lstPrinter("DEFAULTPAPERTYPE") = Trim(Cstr(objPrinter.DefaultPaperType))
lstPrinter("DEFAULTPRIORITY") = Trim(Cstr(objPrinter.DefaultPriority))
lstPrinter("DESCRIPTION") = Trim(Cstr(objPrinter.Description))
lstPrinter("DETECTEDERRORSTATE") = Trim(Cstr(objPrinter.DetectedErrorState))
lstPrinter("DEVICEID") = Trim(Cstr(objPrinter.DeviceID))
lstPrinter("DIRECT") = Trim(Cstr(objPrinter.Direct))
lstPrinter("DOCOMPLETEFIRST") = Trim(Cstr(objPrinter.DoCompleteFirst))
lstPrinter("DRIVERNAME") = Trim(Cstr(objPrinter.DriverName))
lstPrinter("ENABLEBIDI") = Trim(Cstr(objPrinter.EnableBIDI))
lstPrinter("ENBLEDEVQUERYPRINT") = Trim(Cstr(objPrinter.EnableDevQueryPrint))
lstPrinter("ERRORCLEARED") = Trim(Cstr(objPrinter.ErrorCleared))
lstPrinter("ERRORDESCRIPTION") = Trim(Cstr(objPrinter.ErrorDescription))
lstPrinter("ERRORINFORMATION") = Trim(Cstr(objPrinter.ErrorInformation))
lstPrinter("EXTENDEDDETECTEDERRORSTATE") = Trim(Cstr(objPrinter.ExtendedDetectedErrorState))
lstPrinter("EXTENDEDPRINTERSTATUS") = Trim(Cstr(objPrinter.ExtendedPrinterStatus))
lstPrinter("HIDDEN") = Trim(Cstr(objPrinter.Hidden))
lstPrinter("HORIZONTALRESOLUTION") = Trim(Cstr(objPrinter.HorizontalResolution))
lstPrinter("INSTALLDATE") = Trim(Cstr(objPrinter.InstallDate))
lstPrinter("JOBCOUNTSINCELASTRESET") = Trim(Cstr(objPrinter.JobCountSinceLastReset))
lstPrinter("KEEPPRINTEDJOBS") = Trim(Cstr(objPrinter.KeepPrintedJobs))
lstPrinter("LANGUAGESUPPORTED") = Trim(Cstr(objPrinter.LanguagesSupported))
lstPrinter("LASTERRORCODE") = Trim(Cstr(objPrinter.LastErrorCode))
lstPrinter("LOCAL") = Trim(Cstr(objPrinter.Local))
lstPrinter("LOCATION") = Trim(Cstr(objPrinter.Location))
lstPrinter("MARKINGTECHNOLOGY") = Trim(Cstr(objPrinter.MarkingTechnology))
lstPrinter("MAXCOPIES") = Trim(Cstr(objPrinter.MaxCopies))
lstPrinter("MAXNUMBERUP") = Trim(Cstr(objPrinter.MaxNumberUp))
lstPrinter("MAXSIZESUPPORTED") = Trim(Cstr(objPrinter.MaxSizeSupported))
lstPrinter("MIMETYPESSUPPORTED") = Trim(Cstr(objPrinter.MimeTypesSupported))
lstPrinter("NAME") = Trim(Cstr(objPrinter.Name))
lstPrinter("NATURALLANGUAGESSUPPORTED") = Trim(Cstr(objPrinter.NaturalLanguagesSupported))
lstPrinter("NETWORK") = Trim(Cstr(objPrinter.Network))
lstPrinter("PAPERSIZESUPPORTED") = Trim(Cstr(objPrinter.PaperSizesSupported))
lstPrinter("PAPERTYPEAVAILABLE") = Trim(Cstr(objPrinter.PaperTypesAvailable))
lstPrinter("PARAMETERS") = Trim(Cstr(objPrinter.Parameters))
lstPrinter("PNPDEVICEID") = Trim(Cstr(objPrinter.PNPDeviceID))
lstPrinter("PORTNAME") = Trim(Cstr(objPrinter.PortName))
lstPrinter("POWERMANAGEMENTCAPABILITIES") = Trim(Cstr(objPrinter.PowerManagementCapabilities))
lstPrinter("POWERMANAGEMENTSUPPORTED") = Trim(Cstr(objPrinter.PowerManagementSupported))
lstPrinter("PRINTERPAPERNAMES") = Trim(Cstr(objPrinter.PrinterPaperNames))
lstPrinter("PRINTERSTATE") = Trim(Cstr(objPrinter.PrinterState))
lstPrinter("PRINTERSTATUS") = Trim(Cstr(objPrinter.PrinterStatus))
lstPrinter("PRINTERJOBDATATYPE") = Trim(Cstr(objPrinter.PrintJobDataType))
lstPrinter("PRINTPROCESSOR") = Trim(Cstr(objPrinter.PrintProcessor))
lstPrinter("PRIORITY") = Trim(Cstr(objPrinter.Priority))
lstPrinter("PUBLISHED") = Trim(Cstr(objPrinter.Published))
lstPrinter("QUEUED") = Trim(Cstr(objPrinter.Queued))
lstPrinter("RAWONLY") = Trim(Cstr(objPrinter.RawOnly))
lstPrinter("SEPARATORFILE") = Trim(Cstr(objPrinter.SeparatorFile))
lstPrinter("SERVERNAME") = Trim(Cstr(objPrinter.ServerName))
lstPrinter("SHARED") = Trim(Cstr(objPrinter.Shared))
lstPrinter("SHARENAME") = Trim(Cstr(objPrinter.ShareName))
lstPrinter("SPOOLENABLED") = Trim(Cstr(objPrinter.SpoolEnabled))
lstPrinter("STARTTIME") = Trim(Cstr(objPrinter.StartTime))
lstPrinter("STATUS") = Trim(Cstr(objPrinter.Status))
lstPrinter("STATUSINFO") = Trim(Cstr(objPrinter.StatusInfo))
lstPrinter("SYSTEMCREATIONCLASSNAME") = Trim(Cstr(objPrinter.SystemCreationClassName))
lstPrinter("SYSTEMNAME") = Trim(Cstr(objPrinter.SystemName))
lstPrinter("TIMEOFLASTRESET") = Trim(Cstr(objPrinter.TimeOfLastReset))
lstPrinter("UNTILTIME") = Trim(Cstr(objPrinter.UntilTime))
lstPrinter("VERTICALRESOLUTION") = Trim(Cstr(objPrinter.VerticalResolution))
lstPrinter("WORKOFFLINE") = Trim(Cstr(objPrinter.WorkOffline))
On Error Goto ErreurHandle
End Select
Exit Forall
End If
End Forall
Set vrPrinter = Nothing
Set objWMIService = Nothing
PrinterPropertyGet = lstPrinter
Erase lstPrinter
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
Erase lstPrinter
lstPrinter("NAME")=""
PrinterPropertyGet = lstPrinter
Erase lstPrinter
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 15:46
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterTaskStop(wPrinter As String, nbAll As Integer) As Integer
'stop la tache d'impression
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim Printer As String
Const Computer = "."
On Error Goto ErreurHandle
PrinterTaskStop = False
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
If nbAll = True Then
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer")
Forall objPrinter In vrPrinter
objPrinter.CancelAllJobs
PrinterTaskStop = True
End Forall
Else
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_Printer Where Name = '}+Replace(Printer,"\","\\")+{'})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
objPrinter.CancelAllJobs
PrinterTaskStop = True
End If
Exit Forall
End Forall
If PrinterTaskStop = False Then
'si jamais on ne trouve pas l'imprimante on passe toute les imprimante en revue
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Printer) Then
objPrinter.CancelAllJobs
PrinterTaskStop = True
Exit Forall
End If
End Forall
End If
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterTaskStop = False
Exit Function
End Function[/syntax]

Publié:
24 Juil 2009 à 16:06
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterObject(wPrinter,wPrinterClass) As Variant
'renvois l'objet correspondant a l'imprimante
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim lstPrinter List As String
Dim Printer As String
Dim PrinterClass As String
Const Computer = "."
On Error Goto ErreurHandle
Set PrinterObject = Nothing
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Select Case Ucase(Trim(wPrinterClass))
Case "C","CONFIG","CONFIGURATION","WIN32_PRINTERCONFIGURATION"
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration Where Name = '}+Replace(Printer,"\","\\")+{'})
PrinterClass = "C"
Case "P","PRINT","PRINTER","WIN32_PRINTER",""
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_Printer Where Name = '}+Replace(Printer,"\","\\")+{'})
PrinterClass = "P"
Case Else
Error 9999,"Bad PrinterClass : "+wPrinterClass
Exit Function
End Select
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
Set PrinterObject = objPrinter
Exit Forall
End If
End Forall
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterDeviceNameLength = 0
Exit Function
End Function[/syntax]

Publié:
27 Juil 2009 à 08:32
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterTestPage(wPrinter As String) As Integer
'imprime une page de teste
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim Printer As String
Const Computer = "."
On Error Goto ErreurHandle
PrinterTestPage = False
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer Where Name= '"+Replace(Printer,"\","\\")+"'")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Printer) Then
If Cint(objPrinter.PrintTestPage) = 0 Then
PrinterTestPage = True
End If
Exit Forall
End If
End Forall
If PrinterTestPage = False Then
'si jamais on ne trouve pas l'imprimante on passe toute les imprimante en revue
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ("Select * from Win32_Printer")
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name))=Ucase(Printer) Then
If Cint(objPrinter.PrintTestPage) = 0 Then
PrinterTestPage = True
End If
Exit Forall
End If
End Forall
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterTestPage = False
Exit Function
End Function[/syntax]

Publié:
27 Juil 2009 à 09:49
par Michael DELIQUE
[syntax="LotusScript"]Function PrinterColorGet(wPrinter As String) As String
'renvois si l'imprimante est couleur o Noir & blanc
Dim objWMIService As Variant
Dim vrPrinter As Variant
Dim Printer As String
Const Computer = "."
On Error Goto ErreurHandle
PrinterColorGet = ""
If Trim(wPrinter) = "" Then
Printer = Trim(PrinterDefautGet())
Else
Printer = Trim(wPrinter)
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" +Computer + "\root\cimv2")
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration Where Name = '}+Replace(Printer,"\","\\")+{'})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
Select Case Trim(Cstr(objPrinter.color))
Case "1" 'Monochrome N&B
PrinterColorGet = "M"
Case "2" 'Couleur
PrinterColorGet = "C"
End Select
Exit Forall
End If
End Forall
If Trim(PrinterColorGet) <> "" Then
Set vrPrinter = Nothing
Set vrPrinter = objWMIService.ExecQuery ({Select * from Win32_PrinterConfiguration})
Forall objPrinter In vrPrinter
If Ucase(Trim(objPrinter.Name)) = Ucase(Printer) Then
Select Case Trim(Cstr(objPrinter.color))
Case "1" 'Monochrome N&B
PrinterColorGet = "M"
Case "2" 'Couleur
PrinterColorGet = "C"
End Select
Exit Forall
End If
End Forall
End If
Set vrPrinter = Nothing
Set objWMIService = Nothing
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
PrinterColorGet = ""
Exit Function
End Function[/syntax]

Publié:
04 Août 2009 à 08:39
par ngi
Un grand merci pour ces supers fonctions. J'en avait un grand besoin.
Est ce que par hasard tu en aurais une qui permet de changer le format du papier (A4,A5, etc..).
Merci en tout cas
ngi

Publié:
04 Août 2009 à 08:47
par Michael DELIQUE
désolé ça ne fait pas part des méthodes de la class win_32printer
mais bon je dis pas que ça ne soit pas impossible, tu sais ou chercher maintenant