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: 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: 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 33.277 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |