Rubrik: Drucker | VB-Versionen: VB4, VB5, VB6 | 19.02.01 |
Druckaufträge eines bestimmten Druckers löschen Dieser Tipp ermöglicht das Löschen aller Druckaufträge eines bestimmten Druckers. | ||
Autor: Dieter Otter | Bewertung: | Views: 23.985 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Der nachfolgende Tipp zeigt, wie man alle Dokumente eines bestimmten Druckers aus der Drucker-Warteschlange löschen kann.
' zunächst die benötigten API-Deklarationen Private Declare Function SetPrinter Lib "winspool.drv" _ Alias "SetPrinterA" ( _ ByVal hPrinter As Long, _ ByVal Level As Long, _ pPrinter As Any, _ ByVal Command As Long) As Long Private Declare Function OpenPrinter Lib "winspool.drv" _ Alias "OpenPrinterA" ( _ ByVal pPrinterName As String, _ phPrinter As Long, _ pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" ( _ ByVal hPrinter As Long) As Long Private Const PRINTER_CONTROL_PURGE = 3 Private Type PRINTER_DEFAULTS pDatatype As String pDevMode As Long DesiredAccess As Long End Type Private Const STANDARD_RIGHTS_REQUIRED = &HF0000 Private Const PRINTER_ATTRIBUTE_DEFAULT = &H4 Private Const PRINTER_ACCESS_ADMINISTER = &H4 Private Const PRINTER_ACCESS_USE = &H8 Private Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)
' Druckaufträge eines bestimmen Druckers löschen Public Sub DeleteDocsFromPrinterQueue(Optional _ ByVal prnName As String) Dim Result As Long Dim hPrinter As Variant Dim udtPrinter As PRINTER_DEFAULTS If IsMissing(prnName) Or prnName = "" Then _ prnName = Printer.DeviceName udtPrinter.DesiredAccess = PRINTER_ALL_ACCESS Result = OpenPrinter(prnName, hPrinter, udtPrinter) If hPrinter <> 0 Then Result = SetPrinter(hPrinter, 0, vbNull, _ PRINTER_CONTROL_PURGE) If Result = 0 Then RaiseLastWin32Error End If Result = ClosePrinter(hPrinter) End Sub
Anmerkung:
Optional kann der Prozedur ein bestimmter Druckername als Parameter übergeben werden. Wird nichts angegeben, so werden dir Druckaufträge des Standard-Druckers gelöscht.