![]() |
USB Devices suchen, editieren
Hallo,
Problem: wir suchen seit einiger Zeit eine Möglichkeit festzustellen mit wem eine serielle Schnittstelle verbunden ist. Da uns diese nicht gelungen ist habe ich jetzt einen anderen Ansatz gefunden. Frage: Gibt es irgendeine Möglichkeit alle vorhandenen USB Devices anzuzeigen bzw. zu ändern oder zu löschen? Mir kommt es hautsächlich auf die Devices an, die momentan nicht angeschlossen sind. Beispiel: Wir schliessen einen USB seriell Konverter an den PC an. Com9 ist im Gerätemanager zu sehen. Entfernen wir das Gerät verschwindet die Schnittstelle aus dem Gerätemanger sie ist aber nach wie vor besetzt. Suchen in der Registry bringt nichts. ( Alle Com9 Einträge wurden bei einer WinXP Schrottinstallation gelöscht. Com9 immer noch da). Wir möchten das Problem mit D7 oder RAD Studio lösen. Vielen Dank im Vorraus! Rainer |
Re: USB Devices suchen, editieren
Hallo,
Hatte einen ähnlichen Anwendungsfall. Es gibt von JEDI eine USBView Demo. Das ist sehr aufschlussreich. Ich habe es dann so gemacht:
Delphi-Quellcode:
Funktioniert eigentlich recht gut.
function GetNumberOfConnectedBFs(): Byte;
const ConnectorGUID = '{AB03120F-995C-4A47-9BB6-9549EC8945D2}'; var GUID : PGUID; Buffer : array[0..1023] of TCHAR; Descriptionstr : string; PnPHandle : HDEVINFO; DevData : TSPDevInfoData; DeviceInterfaceData : TSPDeviceInterfaceData; Success : LongBool; BufSize : DWORD; DevNumber : Integer; begin Result := 0; LoadSetupApi; LoadConfigManagerApi; GetMem(GUID, SizeOf(TGUID)); GUID^ := StringToGUID(ConnectorGUID); SetupDiGetClassDescription(GUID^, @Buffer[0], Length(Buffer), BufSize); Descriptionstr := PTSTR(@Buffer[0]); PnPHandle := SetupDiGetClassDevs(GUID, nil, 0, DIGCF_PRESENT); if PnPHandle = Pointer(INVALID_HANDLE_VALUE) then begin FreeMem(GUID); Exit; end; DevNumber := 0; repeat DeviceInterfaceData.cbSize := SizeOf(TSPDeviceInterfaceData); DevData.cbSize := SizeOf(DevData); Success := SetupDiEnumDeviceInfo(PnPHandle, DevNumber, DevData); if Success then begin Inc(DevNumber); end; until not Success; SetupDiDestroyDeviceInfoList(PnPHandle); UnloadConfigManagerApi; UnloadSetupApi; Result := DevNumber; end; Müsstest eigentlich nur die entsprechende ConnectorGUID einfügen... |
Re: USB Devices suchen, editieren
Hallo,
vielen Dank für die Antwort. Leider nützt mir das überhaupt nichts weil ich das Gerät nicht kenne. Ich muss alle Devices suchen, auflisten und sie eventuell auch "killen" können. Grüsse Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz