vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Access   |   VB-Versionen: VBA22.04.08
Alle installierten Drucker ermitteln und anzeigen (Access 97/2000)

Diese Funktion ermittelt alle verfügbaren Drucker und zeigt diese alphabetisch sortiert in einem Listfeld oder Kombinationsfeld zur Auswahl an.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  12.329 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Vor kurzem hatten wir Ihnen gezeigt, wie man unter Access 2002 oder höher alle verfügbaren Drucker ermitteln und in alphabetischer Reihenfolge sortiert ermittelt und anzeigen kann:
 Alle installierten Drucker ermitteln und anzeigen (ab Access 2002)

Da es aber durchaus noch viele Entwickler gibt, die noch immer unter Access 97 / 2000 programmieren, gibt es heute den o.g. Tipp für die Versionen Access 97 und Access 2000.

Nachfolgende Funktion GetPrinterList ermittelt alle verfügbaren Drucker und stellt diese in alphabetischer Reihenfolge sortiert als String für die Zuweisung in einem Listen- oder Kombinationsfels zusammen. Die Zuweisung erfolgt hierbei über die RowSource-Eigenschaft des Controls.

' benötigte API-Deklaration
Private Declare Function GetProfileString Lib "kernel32" _
  Alias "GetProfileStringA" ( _
  ByVal lpAppName As String, _
  ByVal lpKeyName As String, _
  ByVal lpDefault As String, _
  ByVal lpReturnedString As String, _
  ByVal nSize As Long) As Long
' Liste aller verügbaren Drucker als Werte-Liste
' für ein List-Control ermitteln und zurückgeben
Public Function GetPrinterList() As String
  Dim sTemp As String
  Dim nLen As Long
  Dim i As Long
  Dim sItem() As String
  Dim nCount As Long
  Dim nPos As Long
  Dim sRowSource As String
 
  ' Einträge aus Windows.ini auslesen
  sTemp = Space(8192)
  nLen = GetProfileString("PrinterPorts", vbNullString, "", sTemp, Len(sTemp))
  If nLen > 0 Then
    sTemp = Trim$(Left$(sTemp, nLen))
    If Right$(sTemp, 1) = Chr$(0) Then sTemp = Left$(sTemp, Len(sTemp) - 1)
 
    ' jetzt den String anhand vbNullChar in Array zum späteren Sortieren einlesen
    Do While Len(sTemp) > 0
      nCount = nCount + 1
      ReDim Preserve sItem(nCount - 1)
      nPos = InStr(sTemp, Chr$(0))
      If nPos > 0 Then
        sItem(nCount - 1) = Left$(sTemp, nPos - 1)
        sTemp = Mid$(sTemp, nPos + 1)
      Else
        sItem(nCount - 1) = sTemp
        sTemp = ""
      End If
    Loop
 
    ' Array sortieren
    If nCount > 0 Then
      QuickSort sItem()
 
      ' String für RowSource zusammenstellen
      For i = 0 To nCount - 1
        If Len(sRowSource) > 0 Then sRowSource = sRowSource & ";"
        sRowSource = sRowSource & sItem(i)
      Next i
    End If
  End If
  GetPrinterList = sRowSource
End Function

Für die Sortierung des Arrays wird auch hier wieder auf den QuickSort-Algorithmus zurückgegriffen:
 QuickSort in VB

Beispiel:
Platzieren Sie auf das Formular ein Kombinationsfeld (cmbPrinters) und fügen folgenden Code in das Form_Load Ereignis ein:

Private Sub Form_Load()
  With cmbPrinters
    .RowSourceType = "Value List"
    .RowSource = GetPrinterList()
  End With
End Sub

Dieser Tipp wurde bereits 12.329 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-2018 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