Page 1 sur 1

Gestion des Imprimantes Sous windows

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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]

MessagePublié: 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

MessagePublié: 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