VB 5/6-Tipp 0116: Druckaufträge löschen, anhalten und fortsetzen
von ActiveVB
Beschreibung
Mit diesem recht knappen Tip lassen sich die Druckaufträge eines namentlich bekannten Druckers aus der Warteschlange löschen, pausieren und wieder fortsetzen.
Update von Florian Rittmeier (Florian@ActiveVB.de): Der Tipp sollte nun auch auf NT-Systemen arbeiten.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: ClosePrinter, OpenPrinterA (OpenPrinter), SetPrinterA (SetPrinter) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command3" ' Steuerelement: Schaltfläche "Command2" ' Steuerelement: Schaltfläche "Command1" Option Explicit Private Declare Function SetPrinter Lib "winspool.drv" Alias _ "SetPrinterA" (ByVal hPrinter As Long, ByVal Level _ As Long, pPrinter As Byte, ByVal Command As Long) _ As Long Private Declare Function OpenPrinter Lib "winspool.drv" Alias _ "OpenPrinterA" (ByVal pPrinterName As String, phPrinter _ As Long, pDefault As PRINTER_DEFAULTS) As Long Private Declare Function ClosePrinter Lib "winspool.drv" _ (ByVal hPrinter As Long) As Long Private Type PRINTER_DEFAULTS pDatatype As Long pDevMode As Long DesiredAccess As Long End Type Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000 Const PRINTER_ACCESS_ADMINISTER As Long = &H4 Const PRINTER_ACCESS_USE As Long = &H8 Const PRINTER_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE) Private Const PRINTER_CONTROL_PURGE As Long = 3& Private Const PRINTER_CONTROL_PAUSE As Long = 1& Private Const PRINTER_CONTROL_RESUME As Long = 2& Private Sub PrinterCommand(ByVal Command As Long) Dim PName As String Dim Result As Long, hPrinter As Long Dim pd As PRINTER_DEFAULTS pd.DesiredAccess = PRINTER_ALL_ACCESS PName = Printer.DeviceName Result = OpenPrinter(PName, hPrinter, pd) If Result = 0 Then Call MsgBox("Ein Druckerhandle konnte nicht erstellt werden." & _ vbNewLine & "Möglicherweise verfügen Sie nicht über die " & _ "erforderlichen Rechte zum Ausführen dieser Aktion.", _ vbExclamation + vbOKOnly, App.Title) Exit Sub End If Result = SetPrinter(hPrinter, 0, vbNull, Command) If Result = 0 Then Call MsgBox("Die angeforderte Aktion konnte aufgrund eines " & _ "Fehlers nicht durchgeführt werden.", _ vbExclamation + vbOKOnly, App.Title) End If Result = ClosePrinter(hPrinter) End Sub Private Sub Command1_Click() Call PrinterCommand(PRINTER_CONTROL_PURGE) End Sub Private Sub Command2_Click() Call PrinterCommand(PRINTER_CONTROL_PAUSE) End Sub Private Sub Command3_Click() Call PrinterCommand(PRINTER_CONTROL_RESUME) End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Alexander Predl am 02.05.2005 um 18:14
Mein eigener Code brachte immer "Access denied". Dieser Tip war Goldes wert. Vielen Dank!