vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
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:     [ Jetzt bewerten ]Views:  23.203 
ohne HomepageSystem:  WinXP, Win8, Win10 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    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

    Dieser Tipp wurde bereits 23.203 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Neue Diskussion eröffnen

    nach obenzurück


    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.
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle 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.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel