Deklaration: 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 Beschreibung: Parameter:
flags Konstanten: Const PRINTER_ENUM_CONNECTIONS = &H4 ' (Win NT) PRINTER_INFO_4-Konstante für Informationen über Netzwerkdrucker Const PRINTER_ENUM_DEFAULT = &H1 ' (Win 9x) Ermittelt Informationen über den Standarddrucker des Systems Const PRINTER_ENUM_LOCAL = &H2 ' Ermittelt alle Lokalen Drucker Const PRINTER_ENUM_NAME = &H8 ' Ermittelt alle Drucker anhand des Netzwerknamens (Name-Variable der Funktion) Const PRINTER_ENUM_NETWORK = &H40 ' (Win NT) PRINTER_INFO_4-Konstante. Ermittelt alle Netzwerkdrucker einer Domain Const PRINTER_ENUM_REMOTE = &H10 ' (Win NT) PRINTER_INFO_4-Konstante. Ermittelt alle Netzwerkdrucker einer Domain Const PRINTER_ENUM_SHARED = &H20 ' Ermittelt alle Drucker mit eingeschränktem Zugriff Rückgabewert: Beispiel: 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 Private Declare Sub MoveMemory Lib "kernel32" _ Alias "RtlMoveMemory" ( _ pDst As Any, _ pSrc As Any, _ ByVal ByteLen As Long) Private Declare Function lstrlen Lib "kernel32" _ Alias "lstrlenA" ( _ ByVal lpString As Any) As Long Private Const ACL_REVISION = (2) ' AclRevision-Konstante Private Type ACL AclRevision As Byte Sbz1 As Byte AclSize As Integer AceCount As Integer Sbz2 As Integer End Type Private Type SECURITY_DESCRIPTOR Revision As Byte Sbz1 As Byte Control As Long Owner As Long Group As Long Sacl As ACL Dacl As ACL End Type Private Const CCHFORMNAME = 32 ' Pufferlänge-Konstante Private Const CCHDEVICENAME = 32 ' Pufferlänge-Konstante Private Type DEVMODE dmDeviceName As String * CCHDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCHFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Private Type PRINTER_INFO_2 pServerName As String pPrinterName As String pShareName As String pPortName As String pDriverName As String pComment As String pLocation As String pDevMode As DEVMODE pSepFile As String pPrintProcessor As String pDatatype As String pParameters As String pSecurityDescriptor As SECURITY_DESCRIPTOR Attributes As Long Priority As Long DefaultPriority As Long StartTime As Long UntilTime As Long Status As Long cJobs As Long AveragePPM As Long End Type ' PRINTER_INFO_2 Attributes-Konstanten Private Const PRINTER_ATTRIBUTE_DEFAULT = &H4 ' Der Drucker ist der 'Standarddrucker Private Const PRINTER_ATTRIBUTE_DIRECT = &H2 ' Der Drucker hat eine direkte ' Verbindung mit dem System Private Const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = &H200 ' Erledigt die Ausdrucke (Jobs) ' per "First Serve Basis" Private Const PRINTER_ATTRIBUTE_ENABLE_BIDI = &H800 ' Aktiviert BDI Private Const PRINTER_ATTRIBUTE_ENABLE_DEVQ = &H80 ' Aktiviert DEVQ Private Const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = &H100 ' Der Drucker hält Informationen von ' den Ausdrucken (Jobs) Private Const PRINTER_ATTRIBUTE_QUEUED = &H1 ' Der Drucker unterstützt eine ' Ausdruckwarteliste Private Const PRINTER_ATTRIBUTE_SHARED = &H8 ' Der Drucker ist ein Netzwerkdrucker Private Const PRINTER_ATTRIBUTE_WORK_OFFLINE = &H400 ' Der Drucker kann offline arbeiten ' PRINTER_INFO_2 Status-Konstanten Private Const PRINTER_STATUS_BUSY = &H200 ' Der Drucker ist nicht bereit Private Const PRINTER_STATUS_DOOR_OPEN = &H400000 ' Die Klappe des Druckers ist geöffnet Private Const PRINTER_STATUS_ERROR = &H2 ' Es liegt ein Druckerfehler vor Private Const PRINTER_STATUS_INITIALIZING = &H8000 ' Der Drucker wird initialisiert Private Const PRINTER_STATUS_IO_ACTIVE = &H100 ' Eine Datenkommunikation mit ' dem Drucker findet statt Private Const PRINTER_STATUS_MANUAL_FEED = &H20 ' Der Drucker ladet Papier ' mit manuellen Papiereinzug nach Private Const PRINTER_STATUS_NO_TONER = &H40000 ' Der Drucker hat keine Farbe mehr Private Const PRINTER_STATUS_NOT_AVAILABLE = &H1000 ' Es kann nicht auf den ' Drucker zugegriffen werden Private Const PRINTER_STATUS_OFFLINE = &H80 ' Der Drucker ist offline Private Const PRINTER_STATUS_OUT_OF_MEMORY = &H200000 ' Der Drucker hat nicht genügend Speicher ' zum Fortsetzen der letzten Aktion Private Const PRINTER_STATUS_OUTPUT_BIN_FULL = &H800 ' Das Papierausgabefach ist voll Private Const PRINTER_STATUS_PAGE_PUNT = &H80000 ' Der Druck wurde wegen zu ' hoher Komplexität abgebrochen Private Const PRINTER_STATUS_PAPER_JAM = &H8 ' Das Druckerpapier kann nicht ' nachgezogen werden Private Const PRINTER_STATUS_PAPER_OUT = &H10 ' Das Druckerpapier ist leer Private Const PRINTER_STATUS_PAPER_PROBLEM = &H40 ' Es liegt ein Problem mit ' der Papierzufuhr vor Private Const PRINTER_STATUS_PAUSED = &H1 ' (Win NT) Der Drucker befindet ' sich in einer Pause-Phase Private Const PRINTER_STATUS_PENDING_DELETION = &H4 ' (Win NT) Die Ausdrucke ' in der Warteschleife werden gelöscht Private Const PRINTER_STATUS_PRINTING = &H400 ' Der Drucker druckt Private Const PRINTER_STATUS_PROCESSING = &H4000 ' Der Drucker erhält Informationen Private Const PRINTER_STATUS_TONER_LOW = &H20000 ' Die Farbpatronen des ' Druckers gehen zur Neige Private Const PRINTER_STATUS_USER_INTERVENTION = &H100000 ' Der Benutzer hat in die ' Druckeraktion eingegriffen Private Const PRINTER_STATUS_WAITING = &H2000 ' Der Drucker wartet Private Const PRINTER_STATUS_WARMING_UP = &H10000 ' Der Drucker wärmt sich auf ' EnumPrinters flags-Konstanten Private Const PRINTER_ENUM_CONNECTIONS = &H4 ' (Win NT) PRINTER_INFO_4-Konstante ' für Informationen über Netzwerkdrucker Private Const PRINTER_ENUM_DEFAULT = &H1 ' (Win 9x) Ermittelt Informationen ' über den Standarddrucker des Systems Private Const PRINTER_ENUM_LOCAL = &H2 ' Ermittelt alle Lokalen Drucker Private Const PRINTER_ENUM_NAME = &H8 ' Ermittelt alle Drucker anhand des ' Netzwerknamens (Name-Variabel der Funktion) Private Const PRINTER_ENUM_NETWORK = &H40 ' (Win NT) PRINTER_INFO_4-Konstante. ' Ermittelt alle Netzwerkdrucker einer Domain Private Const PRINTER_ENUM_REMOTE = &H10 ' (Win NT) PRINTER_INFO_4-Konstante. ' Ermittelt alle Netzwerkdrucker einer Domain Private Const PRINTER_ENUM_SHARED = &H20 ' Ermittelt alle Drucker mit ' eingeschränktem Zugriff ' Enumeriert alle verfügbaren Drucker Private Sub Command1_Click() Dim Retval As Long, Printers() As PRINTER_INFO_2 Dim TmpBuffer() As Long, BuffSizeNeed As Long, NumPrinters As Long ' Alle Druckerinformationen ermitteln ReDim TmpBuffer(0) Retval = EnumPrinters(PRINTER_ENUM_LOCAL, vbNullString, 2, _ TmpBuffer(0), (UBound(TmpBuffer) + 1) * 4, BuffSizeNeed, NumPrinters) ReDim TmpBuffer(BuffSizeNeed / 4) Retval = EnumPrinters(PRINTER_ENUM_LOCAL, vbNullString, 2, _ TmpBuffer(0), (UBound(TmpBuffer) + 1) * 4, BuffSizeNeed, NumPrinters) ' Die Druckerinformationen manuell in die Strukturen kopieren ReDim Printers(NumPrinters - 1) For i = 0 To NumPrinters - 1 With Printers(i) CopyStrVar .pServerName, TmpBuffer(i * 21) CopyStrVar .pPrinterName, TmpBuffer(i * 21 + 1) CopyStrVar .pShareName, TmpBuffer(i * 21 + 2) CopyStrVar .pPortName, TmpBuffer(i * 21 + 3) CopyStrVar .pDriverName, TmpBuffer(i * 21 + 4) CopyStrVar .pComment, TmpBuffer(i * 21 + 5) CopyStrVar .pLocation, TmpBuffer(i * 21 + 6) MoveMemory .pDevMode, TmpBuffer(i * 21 + 7), Len(.pDevMode) CopyStrVar .pSepFile, TmpBuffer(i * 21 + 8) CopyStrVar .pPrintProcessor, TmpBuffer(i * 21 + 9) CopyStrVar .pDatatype, TmpBuffer(i * 21 + 10) CopyStrVar .pParameters, TmpBuffer(i * 21 + 11) If TmpBuffer(i * 21 + 12) << 0 Then MoveMemory _ .pSecurityDescriptor, ByVal TmpBuffer(i * 21 + 12), Len(.pSecurityDescriptor) .Attributes = TmpBuffer(i * 21 + 13) .Priority = TmpBuffer(i * 21 + 14) .DefaultPriority = TmpBuffer(i * 21 + 15) .StartTime = TmpBuffer(i * 21 + 16) .UntilTime = TmpBuffer(i * 21 + 17) .Status = TmpBuffer(i * 21 + 18) .cJobs = TmpBuffer(i * 21 + 19) .AveragePPM = TmpBuffer(i * 21 + 20) ' Druckerinformationen ausgeben If CBool(.Attributes And PRINTER_ATTRIBUTE_DEFAULT) = True Then Debug.Print "Drucker: " & .pPrinterName & " (Standarddrucker)" Else Debug.Print "Drucker: " & .pPrinterName End If Debug.Print "Port: " & .pPortName Debug.Print "Treiber: " & .pDriverName Debug.Print "Bemerkung: " & .pComment Debug.Print "Leistung: " & .AveragePPM & " Seiten pro Minute" Debug.Print "- - - - - - - - - - " & vbCrLf End With Next i End Sub ' Kopiert einen String anhand eines Pointers in eine String-Variable Private Function CopyStrVar(ByRef StrDest As String, ByRef VarSrc As Long) StrDest = Space(lstrlen(VarSrc)) MoveMemory ByVal StrDest, ByVal VarSrc, Len(StrDest) End Function Diese Seite wurde bereits 13.206 mal aufgerufen. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Buchempfehlung Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||||||||||
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. |