ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 22.02.2000

Diese Seite wurde zuletzt aktualisiert am 22.02.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss der AVB-Web-Site zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Liste der System-Drucker

Zurück...


Anzeige

(-hg) mailto:hg_vbaprinterlist@aboutvb.de

In den meisten Anwendungen, die mit einer VBA-Entwicklungsumgebung ausgestattet sind, gibt es offensichtlich keine Möglichkeit, eine Auflistung der im System vorhandenen Drucker zu erhalten. Die ActiveX-DLL PrinterListDLL stellt daher einer Auflistung der Namen der verfügbaren Drucker zur Verfügung.

Die SystemPrinters-Auflistung ist die Standard-Eigenschaft des globalen Objekts PrinterList und kann daher direkt und ohne vorherige Instanzierung verwendet werden, sobald ein Verweis auf die ActiveX-DLL in das aktuelle Projekt aufgenommen worden ist. Sie kann auch wie jede andere ActiveX-Komponente explizit deklariert und instanziert werden, sowohl mit Set ... = New PrinterList als auch mit Set ... = CreateObject("PrinterListDLL.PrinterList").

Zur Iteration durch die Auflistung mit For...Each ist die Laufvariable als Variant zu deklarieren. Sie können die Auflistung aber auch in einer gewöhnlichen Schleife mit einer Zählervariablen (des Datentyps Long) durchlaufen.

Sub Test1()
  Dim Printer As Variant
  
  For Each Printer In SystemPrinters
    Debug.Print Printer
  Next
End Sub

Sub Test2()
  Dim l As Long
  
  For l = 1 To SystemPrinters.Count
    Debug.Print SystemPrinters(l)
  Next
End Sub

Der Code der Komponente ist nicht sehr umfangreich. Die Komponente enthält zwei Klassen. Die Klasse PrinterList ist global (Instancing = GlobalMultiUse) und dient lediglich dazu, in ihrer Standard-Eigenschaft SystemPrinters eine von ihr selbst angelegte Instanz der von außen nicht direkt instanzierbaren Klasse Printers zur Verfügung zu stellen, die die eigentliche Auflistung der Druckernamen anbietet.

Private pPrinters As Printers

Public Property Get SystemPrinters() As Printers
  Set SystemPrinters = pPrinters
End Property

Private Sub Class_Initialize()
  Set pPrinters = New Printers
End Sub

Private Sub Class_Terminate()
  Set pPrinters = Nothing
End Sub

Die Klasse Printers beruht selbst auf einer Collection, die jedes mal neu angelegt und mit den Namen der Drucker gefüllt wird, wenn ein Druckername über die Standard-Eigenschaft PrinterName abgerufen wird, oder durch die Auflistung mit For...Each iteriert wird (Aufruf der verborgenen Methode NewEnum). So wird sichergestellt, dass die Auflistung immer aktuell ist.

Private mPrinters As Collection

Public Property Get Count() As Long
  Count = Printers.Count
End Property

Public Property Get PrinterName(Index As Long) As Variant
  zFillPrinters
  PrinterName = mPrinters(Index)
  Set mPrinters = Nothing
End Property

Public Function NewEnum() As IUnknown
  zFillPrinters
  Set NewEnum = mPrinters.[_NewEnum]
End Function

Private Sub zFillPrinters()
  Dim nPrinter As Printer
  
  Set mPrinters = New Collection
  With mPrinters
    For Each nPrinter In Printers
      .Add nPrinter.DeviceName
    Next
  End With
End Sub

Private Sub Class_Terminate()
  Set mPrinters = Nothing
End Sub

Sie können alternativ zu der Standard-Version, die die Visual Basic 6 Runtime-Dateien benötigt, auch eine Version für Visual Basic 5 herunterladen - je nach dem, welcher Satz Runtime-Dateien auf Ihrem System bereits vorhanden ist oder welche VB-Version Sie bevorzugen. Die Runtime-Dateien selbst sind in den Setups nicht enthalten. Den Code samt Beispiel-Projekt können Sie sowohl für VB 5 als auch für VB 6 herunterladen.


Das Projekt PrinterList (VB 6) (printerlist6.zip - ca. 2,2 KB)

Das Projekt PrinterList (VB 5) (printerlist5.zip - ca. 2 KB)

Setup (für VB 6, ohne VB-Runtime) (printerlist6s.zip - ca. 264 KB)

Setup (für VB 5, ohne VB-Runtime) (printerlist5s.zip - ca. 193 KB)



VBA-Übersicht

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer