vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Drucker   |   VB-Versionen: VB4, VB5, VB614.06.04
Standard-Drucker systemweit festlegen (WMI)

Diesmal zeigen wir Ihnen, wie man per WMI den Standard-Drucker systemweit festlegen kann.

Autor:   Gerhard KuklauBewertung:  Views:  33.260 
ohne HomepageSystem:  WinXP, Win8, Win10, Win11 Beispielprojekt auf CD 

In einem unserer Extratipps haben wir Ihnen gezeigt, wie man einen bestimmten Drucker systemweit als neuen Standard-Drucker festlegen kann. Hierzu bedarf es allerlei API-Funktionen:
Neuen Standard-Drucker festlegen

Wenn Sie als Betriebssystem Windows XP oder Windows Server 2003 verwenden, lässt sich mit Hilfe des mächtigen WMI-Objekts der Standard-Drucker jedoch sehr viel einfacher und schneller festlegen, wie nachfolgender Code zeigt.

(Update 26.08.06: Sie können mit diesem Beispiel auch Netzwerkdrucker als Standard-Drucker festlegen!)

' Standard-Drucker systemweit festlegen
Public Function fSet_DefaultPrinter( _
  ByVal sPrinterName As String) As Boolean
 
  Dim sComputerName As String
  Dim oWMI As Object
  Dim oPrinter As Object
  Dim colInstalledPrinters As Variant
 
  ' Fehlerbehandlung aktivieren
  On Error GoTo ErrHandler
 
  ' lokaler Rechner
  sComputerName = "."
 
  ' Druckernamen bei Netzwerkdruckern ggf. modifizieren
  ' ===================================================
  ' da der Backslash in der Registry doppelt gesetzt werden muß
  ' (Unterscheidung zu Pfadangaben innerhalb der Registry!),
  ' müssen wir hier den Druckernamen anpassen, um den Drucker
  ' zu "finden"
  sPrinterName = Replace(sPrinterName, "\", "\\")
 
  ' WMI-Objekt erstellen
  Set oWMI = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & _
    sComputerName & "\root\cimv2")
 
  ' WMI-Abfrage: alle Drucker mit dem
  ' einer bestimmten Bezeichnung selektieren
  Set colInstalledPrinters = oWMI.ExecQuery _
    ("SELECT * FROM Win32_Printer WHERE Name = '" & sPrinterName & "'")
 
  ' Jetzt den Drucker als Standard-Drucker festlegen
  For Each oPrinter In colInstalledPrinters
    oPrinter.SetDefaultPrinter
  Next
 
  fSet_DefaultPrinter = True
  Exit Function
 
ErrHandler:
  fSet_DefaultPrinter = False
End Function

Die Funktion fSet_DefaultPrinter erwartet als Parameter die Bezeichnung des neuen Standard-Druckers.

Beispiel:
Es sollen alle verfügbaren Drucker in einer ComboBox angezeigt werden. Per CommandButton soll der aktuell ausgewählte Drucker dann systemweit als neuer Standard-Drucker festgelegt werden.

Private Sub Form_Load()
  ' ComboBox: alle Drucker auflisten
  Dim oPrinter As Variant
  For Each oPrinter In Printers
    Combo1.AddItem oPrinter.DeviceName
  Next 
  ShowDefaultPrinter
End Sub
Private Sub ShowDefaultPrinter()
  Dim i As Long
 
  ' Default-Printer in der Titelzeile der Form anzeigen
  Me.Caption = Printer.DeviceName
 
  ' In der Combo-Box auf den Default-Printer positionieren
  For i = 0 To Combo1.ListCount
    If Combo1.List(i) = Printer.DeviceName Then
      Combo1.ListIndex = i
      Exit For
     End If
  Next i
End Sub
Private Sub Command1_Click()
  ' aktuell ausgewählten Drucker systemweit als 
  ' neuen Standard-Drucker festlegen
  If fSet_DefaultPrinter(Combo1.Text) Then
    ShowDefaultPrinter
    MsgBox Combo1.Text & " ist der neue Standard-Drucker!"
  Else
    MsgBox "Konnte " & Combo1.Text & " nicht als " & _
      "neuen Standard-Drucker festlegen."
  End If
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.