vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Tastatureingaben Systemweit überprüfen ohne Timer 
Autor: Blackbox
Datum: 06.09.12 21:03

Hallo,

Wenn ich das richtig sehe, willst du etwas aus einem USB-Gerät auslesen. Der Weg über das MSCOMM-Control ist sicher der falsche Weg das zu tun, weil USB-Ports keine hardware Ports darstellen, sie sind Plug and Play-Devices (PnP-Services). Aus VB heraus kann man nicht ohne weiteres auf diese Treiber zugreifen, sondern benötigt eine Brücke dazu. Diese Brücke ist WMI. Windows lädt einen Treiber nach, wenn ein USB-Gerät angefügt wird und daher muss man erst sicher sein, dass der für das USB-Gerät typische Treiber auch geladen ist und als Service auch läuft. Ist man da auf dem sicheren Weg ist die Kommunikation mit dem Gerät eigentlich denkbar einfach über die WinAPI (CreateFile(), ReadFile(), WriteFile()-Funktionen).

Alles in allem ist das m.M.n. kein Einsteiger-Thema. Sofern du keine fertigen ActiveX Klassen dafür findest, hier ein Fingerzeig, wie das funktioniert. Zugriff auf USB über WMI:

Option Explicit
 
Sub PrüfeUSBGerät()
'
'   Code vom 23.03.2007 / EtoP, Hansueli Göldi [ohne Gewähr für irgendwas... 
' ;-)]
'
    Dim strDevName As String
    strDevName = InputBox("Geben Sie den Namen (oder einen Teil)" & vbCrLf & _
                          "des zu suchenden Gerätes an:", "USB Geräte suchen", _
                          "*ListAllUSBDevices*")
    If strDevName = "" Then Exit Sub
    If checkUSBDevice(strDevName) Then
        MsgBox "Das Gerät ist angeschlossen", vbOKOnly + vbInformation, "USB" & _
          "Check"
    Else
        If strDevName <> "*ListAllUSBDevices*" Then _
            MsgBox "Das Gerät ist NICHT angeschlossen", vbOKOnly + _
            vbExclamation, "USB Check"
    End If
End Sub
 
 
Public Function checkUSBDevice(strUSBDeviceName As String) As Boolean
    Dim objWMIService As Object
    Dim objDevice As Object
    Dim objUSBDevice As Object
    Dim arrDeviceNames As Variant
    Dim colUSBDevices As Variant
    Dim colDevices As Variant
    Dim strDevicename As String
 
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colDevices = objWMIService.ExecQuery _
        ("Select * From Win32_USBControllerDevice")
 
    For Each objDevice In colDevices
        arrDeviceNames = Split(Replace(objDevice.Dependent, Chr(34), ""), "=")
        strDevicename = arrDeviceNames(1)
        Set colUSBDevices = objWMIService.ExecQuery _
            ("SELECT * From Win32_PnPEntity Where DeviceID = '" & strDevicename _
            & "'")
        For Each objUSBDevice In colUSBDevices
            If strUSBDeviceName = "*ListAllUSBDevices*" Then MsgBox _
              objUSBDevice.Description
            If InStr(objUSBDevice.Description, strUSBDeviceName) > 0 Then
                checkUSBDevice = True
            End If
        Next
    Next
End Function
das Beispiel stammt aus einem VBA-Forum.

hFile = CreateFile("\\.\" & USBDeviceNAme, ...) dann leitet die Kommunikation ein in dem es ein Handle auf das geöffnete Device zurück gibt. Zur Nutzung der API-Funktionen gibt es hier viele Informationen.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tastatureingaben Systemweit überprüfen ohne Timer2.156xtri06.09.12 12:20
Re: Tastatureingaben Systemweit überprüfen ohne Timer1.245Blackbox06.09.12 21:03

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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