Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0409: Drucker aufzählen und auswählen

 von 

Beschreibung 

Zeigt die auf dem jeweiligen System vorhandenen Drucker auf und ermöglicht einen von ihnen für die eigene Anwendung zu setzen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,27 KB]

'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 "Command1"
' Steuerelement: Kombinationsliste "Combo1"


'Autor: André Frimberger
'E-Mail: webmaster@linuxhelpportal.de

Option Explicit

Private Sub Command1_Click()
    Dim Prn As Printer
    
    'Falls Combo1.Text = "" wurde kein Drucker ausgewählt...
    If Me.Combo1.Text = "" Then
        MsgBox "Sie haben keinen Drucker ausgewählt!", _
              vbInformation, "Error"
    Else
        'für jeden Drucker ...
        For Each Prn In Printers
            
            'Falls der vorhandene Drucker mit dem in der Combobox
            'augewählten übereinstimmt, wird dieser als "Printer"
            'festgelegt (Set Printer = Prn ).
            If Prn.DeviceName = Me.Combo1.Text Then
                Set Printer = Prn
                Exit For
            End If
        Next Prn
        
        'Drucken ...
        Printer.Print "Sie haben folgenden Drucker ausgewählt:"
        Printer.Print Me.Combo1.Text
        Printer.EndDoc
    End If
End Sub

Private Sub Form_Load()
    Dim X As Integer
    Dim Y As Integer
    Dim Printername As String
    
    Y = -1
    'Die Combobox mit vorhandenen Druckern füllen
    For X = 0 To Printers.Count - 1
        Printername = Printers(X).DeviceName
        Me.Combo1.AddItem Printername
        
        'Mit dem derzeit eingestellten vergleichen
        If Printername = Printer.DeviceName Then Y = X
    Next X
    
    Combo1.ListIndex = Y
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

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 6 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 Florian Rittmeier am 12.11.2003 um 21:08

Hallo Martin,

das ist nicht möglich. Es ist sehr wahrscheinlich, dass diese Angabe(n) in einem Speicherbereich abgespeichert werden, für den der Druckertreiber selbst verantwortlich ist, d.h. jeder Drucker speichert das anders.

Gruß Florian

Kommentar von Martin am 11.11.2003 um 18:20

Wie kann ich in VB6 herausfinden, welchen Papierschacht und welches Papierformat sowie Qualität (Folie/Plain) der User im CommonDialog ausgewählt hat?

Kommentar von Robin Walter am 15.08.2003 um 08:55

Den Bereich zur Auswahl alle Drucker:

For Each Prn In Printers
If Prn.DeviceName = Me.Combo1.Text Then
Set Printer = Prn
Exit For
End If
Next

habe ich modifiziert:
For Each Prn In Printers
If Instr(1, Prn.DeviceName, "Drucker1") <> 0 Then
Set Printer = Prn
Exit For
End If
Next

Das funktioniert unter Windows 2000 Pro ganz gut, allerdings nicht unter Windows 2000 Server. Hat jemand eine Idee ?

Gruss
Robin
robin@walter-malsch.com

Kommentar von Florian Rittmeier am 24.06.2003 um 17:40

Zusätzlich gibt es in VB5 einen Bug beim Printerobjekt, sodass die ganzen Standardrucker-VB-Sachen nicht korrekt laufen. Eine Korrektur ist mit dem aktuellen Service Pack möglich.

Gruß Florian

Kommentar von Ruru am 17.01.2003 um 08:44

Es sollte auch nicht zum Standarddrucker werden. Nur für die Eigene Application wird sie ausgewählt.

Kommentar von günter hohnsbein am 28.11.2001 um 14:56

hallo Du :o)
die zuweisung mit "Set Printer = Prn" erfolgt fehlerfrei, aber der entsprechende drucker wird NICHT zum standarddrucker!!!! funktioniert das bei dir????? wenn ja, dann sag bitte bescheid - es eilt etwas bei mir. auch unter VB 5.0 und WIN 95/98 kein erfolg.
danke für die mühe
gruss
günter