Aufruf des Printer-Dialogs verändert den in Windows gesetzten Standarddrucker

08/03/2010 - 10:07 von Susann Markward | Report spam
Hallo,

ich möchte, wenn der Anwender auf einen Button drückt, soll er den
Printer-Dialog angezeigt bekommen. Dann soll der Anwender einen Drucker
auswàhlen können und auf diesen Drucker soll der Ausdruck geschehen.

Private Sub Command2_Click()

' Standarddrucker zwischenspeichern
Dim CurrentPrinter As String

' Druckerdialog öffnen
dlgCommonDialog.ShowPrinter

CurrentPrinter = Printer.DeviceName

Exit Sub

End Sub

Das Problem ist nun, dass hier der Standarddrucker von Windows auf den
vom Anwender ausgewàhlten Drucker veràndert wird. Das möchte ich aber
nicht. Der Standarddrucker soll _nicht_ veràndert werden.

Auch das u.g. funktioniert leider nicht:

Private Sub Command2_Click()

' Standarddrucker zwischenspeichern
Dim sDefaultPrinter As String
Dim p As Printer
sDefaultPrinter = Printer.DeviceName

' Druckerdialog öffnen
dlgCommonDialog.ShowPrinter

' Alten Standarddrucker wieder zurücksetzen
For Each p In Printers
If p.DeviceName = sDefaultPrinter Then
Set Printer = p
Exit For
End If
Next
sDefaultPrinter = ""
Exit Sub

End Sub

Warum wird hier der Standarddrucker veràndert? Wie kann ich das veràndern?

Mit freundlichen Grüßen
Susann
 

Lesen sie die antworten

#1 Ralf Schlegel
09/03/2010 - 07:54 | Warnen spam
Susann Markward schrieb:
Hallo,

ich möchte, wenn der Anwender auf einen Button drückt, soll er den
Printer-Dialog angezeigt bekommen. Dann soll der Anwender einen Drucker
auswàhlen können und auf diesen Drucker soll der Ausdruck geschehen.

Private Sub Command2_Click()

' Standarddrucker zwischenspeichern
Dim CurrentPrinter As String

' Druckerdialog öffnen
dlgCommonDialog.ShowPrinter

CurrentPrinter = Printer.DeviceName

Exit Sub

End Sub

Das Problem ist nun, dass hier der Standarddrucker von Windows auf den
vom Anwender ausgewàhlten Drucker veràndert wird. Das möchte ich aber
nicht. Der Standarddrucker soll _nicht_ veràndert werden.

Auch das u.g. funktioniert leider nicht:

Private Sub Command2_Click()

' Standarddrucker zwischenspeichern
Dim sDefaultPrinter As String
Dim p As Printer
sDefaultPrinter = Printer.DeviceName

' Druckerdialog öffnen
dlgCommonDialog.ShowPrinter

' Alten Standarddrucker wieder zurücksetzen
For Each p In Printers
If p.DeviceName = sDefaultPrinter Then
Set Printer = p
Exit For
End If
Next
sDefaultPrinter = ""
Exit Sub

End Sub

Warum wird hier der Standarddrucker veràndert? Wie kann ich das veràndern?

Mit freundlichen Grüßen
Susann





Tja das Printerobjekt ist schon etwas eigenwillig!
Versuch es mal mit den APIs 'GetDefaultPrinter' und 'SetDefaultPrinter'
zum Sichern und Wiederherstellen des Standarddruckers.

Hier ein Beispiel, das nicht direkt eine Lösung für Dich darstellt, Du
kann es aber davon ableiten und anpassen:
http://www.vb-zentrum.de/tip_diverse.html#a1088

Liebe Grüße aus Wegberg

Ralf Schlegel
www.vb-zentrum.de

Ähnliche fragen