Installierte Drucker auslesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Installierte Drucker auslesen
von: Michi
Geschrieben am: 27.06.2002 - 10:03:26

Hallo wie kann ich alle installierten Drucker aus einem NT 4.0 Netzwerk auslesen? Die Ports (NE01...) ändert sich ja immer wieder. Habe viele Beiträge darüber gelesen wie man dies lösen kann aber leider nur für VB 6 und VBA neuer als Version 8.0. Kann mir jemand helfen? Vielen Dank.

Michi


nach oben   nach unten

Re: Installierte Drucker auslesen
von: GraFri
Geschrieben am: 27.06.2002 - 11:34:05

Hallo

Bin mir nicht sicher, ob es bei Dir funktioniert. Probier's einfach mal.


Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" (ByVal flags As Long, ByVal name As String, ByVal Level As Long, pPrinterEnum As Long, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Const PRINTER_ENUM_LOCAL = &H2

Private Type PRINTER_INFO_1
   flags As Long
   pDescription As String
   pName As String
   pComment As String
End Type

Private Sub Installierte_Drucker()
    Dim LongBuffer() As Long
    Dim Printinfo() As PRINTER_INFO_1
    Dim NumBytes As Long
    Dim NumNeeded As Long
    Dim NumPrinters As Long
    Dim As Integer, RetVal As Long

    NumBytes = 3076
    ReDim LongBuffer(0 To NumBytes / 4) As Long
    RetVal = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1, LongBuffer(0), NumBytes, NumNeeded, NumPrinters)
    If RetVal = 0 Then
        NumBytes = NumNeeded
        ReDim LongBuffer(0 To NumBytes / 4) As Long
        RetVal = EnumPrinters(PRINTER_ENUM_LOCAL, "", 1, LongBuffer(0), NumBytes, NumNeeded, NumPrinters)
        If RetVal = 0 Then
            Debug.Print "Fehler aufgetretten!"
        End
    End If
    End If

    If NumPrinters <> 0 Then ReDim Printinfo(0 To NumPrinters - 1) As PRINTER_INFO_1
    For c = 0 To NumPrinters - 1
        Printinfo(c).flags = LongBuffer(4 * c)
        Printinfo(c).pDescription = Space(lstrlen(LongBuffer(4 * c + 1)))
        RetVal = lstrcpy(Printinfo(c).pDescription, LongBuffer(4 * c + 1))
        Printinfo(c).pName Space(lstrlen(LongBuffer(4 * c + 2)))
        RetVal = lstrcpy(Printinfo(c).pName, LongBuffer(4 * c + 2))
        Printinfo(c).pComment = Space(lstrlen(LongBuffer(4 * c + 3)))
        RetVal = lstrcpy(Printinfo(c).pComment, LongBuffer(4 * c + 3))
    Next c

    For c = 0 To NumPrinters - 1
        MsgBox Printinfo(c).pName
    Next c
End Sub

mfg, GraFri


nach oben   nach unten

Re: Installierte Drucker auslesen
von: Michi
Geschrieben am: 27.06.2002 - 12:17:32

Danke GraFri

Vielen Dank. Funzt leider nicht. Er zeigt mir nur den letzten Drucker in der Liste an (einziger printer der lokal angehängt ist.)

any idea?


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Installierte Drucker auslesen"