Deklaration: Declare Function ConfigurePort Lib "winspool.drv" _ Alias "ConfigurePortA" ( _ ByVal pName As String, _ ByVal hwnd As Long, _ ByVal pPortName As String) As Long Beschreibung: Parameter:
Rückgabewert: Beispiel: Private Declare Function EnumPorts Lib "winspool.drv" _ Alias "EnumPortsA" ( _ ByVal pName As String, _ ByVal Level As Long, _ pPorts As Any, _ ByVal cbBuf As Long, _ pcbNeeded As Long, _ pcReturned As Long) As Long Private Declare Function ConfigurePort Lib "winspool.drv" _ Alias "ConfigurePortA" ( _ ByVal pName As String, _ ByVal hwnd As Long, _ ByVal pPortName As String) As Long Private Declare Function lstrlen Lib "kernel32" _ Alias "lstrlenA" ( _ ByVal lpString As Any) As Long Private Declare Function lstrcpy Lib "kernel32" _ Alias "lstrcpyA" ( _ ByVal lpString1 As Any, _ ByVal lpString2 As Any) As Long Private Type PORT_INFO_2 pPortName As Long pMonitorName As Long pDescription As Long fPortType As Long Reserved As Long End Type ' PORT_INFO_2 fPortType-Konstanten Private Const PORT_TYPE_WRITE = &H1 ' Schreiben auf dem Port ist möglich Private Const PORT_TYPE_READ = &H2 ' Lesen des Ports ist möglich Private Const PORT_TYPE_REDIRECTED = &H4 ' Der Port ist im Offlinedruck, Schema ist aktiviert Private Const PORT_TYPE_NET_ATTACHED = &H8 ' Der Drucker ist ein Netzwerkdrucker ' eine der Standard-Fehlerkonstanten Private Const ERROR_CANCELLED = 1223 Dim Ports() As PORT_INFO_2 ' String anhand eines Pointers ermitteln Private Function PtrToString(ByVal StringPtr As Long) As String Dim TmpStr As String TmpStr = Space(lstrlen(StringPtr)) Call lstrcpy(TmpStr, StringPtr) PtrToString = TmpStr End Function ' Alle Ports ermitteln und Combobox damit füllen Private Sub Form_Load() Dim Retval As Long, BufferSize As Long Dim CountPorts As Long Dim I As Integer ' Anzahl Ports ermitteln Retval = EnumPorts(vbNullChar, 2, ByVal 0&, 0&, BufferSize, CountPorts) ' Puffer erstellen und Portinfos ermitteln ReDim Ports(BufferSize / Len(Ports(0)) + 1) Retval = EnumPorts(vbNullChar, 2, Ports(0), Len(Ports(0)) * _ (UBound(Ports) + 1), BufferSize, CountPorts) ' Name jedes Ports ermitteln For I = 0 To CountPorts - 1 Combo1.AddItem PtrToString(Ports(I).pPortName) Next I If Combo1.ListCount < 0 Then Combo1.ListIndex = 0 Else Command1.Enabled = False End If End Sub ' Port-Infos ausgeben Private Sub Combo1_Click() With Ports(Combo1.ListIndex) Debug.Print "Port: " & PtrToString(.pPortName) Debug.Print "Beschreibung: " & PtrToString(.pDescription) Debug.Print "Monitor: " & PtrToString(.pMonitorName) Debug.Print vbTab & "Schreiben: " & CBool(PORT_TYPE_WRITE And .fPortType) Debug.Print vbTab & "Lesen: " & CBool(PORT_TYPE_READ And .fPortType) Debug.Print vbTab & "Netzwerkport: " & _ CBool(PORT_TYPE_NET_ATTACHED And .fPortType) Debug.Print vbTab & "Offlinedruck: " & CBool(PORT_TYPE_REDIRECTED _ And .fPortType) Debug.Print vbCrLf & "- - - - - - - - - - - - - - - - - - -" End With End Sub ' Anschluss konfigurieren Private Sub Command1_Click() Dim Retval As Long Retval = ConfigurePort(vbNullString, Me.hwnd, Combo1.Text) If Retval = 0 Then If Err.LastDllError = ERROR_CANCELLED Then MsgBox "Der Dialog wurde abgebrochen.", vbInformation, _ "Dialog geschlossen" Else MsgBox "Der Port ist nicht verfügbar.", vbInformation, _ "Fehler " & Err.LastDllError End If End If End Sub Diese Seite wurde bereits 7.877 mal aufgerufen. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |