![]() |
USB-Ports deaktivieren&aktivieren in Delphi 7
Hallo,
folgende Problemstellung: Wir testen und kalibrieren mit einem Mess(Lese)/Geber(Schreibe)-Gerät Leiterplatten hinsichtlich Ihrer Temperatur, ph-Wert, Druck etc. . Die Temperaturen und ph Werte werden sozusagen auf den Leiterplatten eingestellt,abgeglichen also kalibriert. Nun haben wir ein in Delphi 7 geschriebenes Programm implementiert, welches diesen Abgleich, das Kalibrieren der Platten ermöglicht und zur Ausführung dieses Tests/Abgleichs der Temperatur & vom Ph-Wert etc dient. Ich soll für unsere Softwareabteilung dieses Programm, welches zum Test der Platten dient, optimieren. Da der Testabgleich mit Kalibrierung momentan noch etwas zu lange dauert und man sich viel Zeit sparen könnte beim Testen der einzelnen Platten wäre es gut, wenn einige Prozesse automatisch ablaufen würden und nicht jeweils eine Eingabe des Benutzers benötigt wird: Am Anfang muss man die Leiterplatte einmal kurz vom USB-Steckplatz (Verbindung über ein externes Gerät zur Platte[USB- ext. Gerät - Platte]) abziehen und der Benutzer muss mit "OK" bestätigen wenn er USB wieder eingesteckt hat. Diesen Ablauf könnte man zum Beispiel automatiesieren, indem man die USB-Ports kurzzeitig deaktiviert und wieder aktiviert. Eine andere Möglichkeit wäre soweit mir bekannt ist, in dem man einfach nochmal neu nach neuen Geräten sucht!? Liege ich da Richtig? Wie kann ich das deaktivieren und aktivieren bzw. oder das erneute "Suchen nach Geräten" nun in Delphi 7 implementieren, sodass der Benutzer nicht erst ausstecken, einstecken und auf Ok klicken muss? Muss man dabei in irgendeiner Weise die API Funktionen nutzen? Wäre nett, wenn mir jemand ein paar Tipps oder ähnliches geben könnte, dankeschön!! Links zu gleichen Fragestellung: ![]() ![]() ![]() ![]() ![]() |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Zitat:
Um die USB-Ports zu de- und wieder zu aktivieren, brauchst du wahrscheinlich einen Treiber. Damit fällt Delphi schon mal als Entwicklungsumgebung weg. Um die Suche nach neuen Geräten anzustoßen, würde ich mir mal die Setup API angucken, eventuell findet sich da was brauchbares. aber reicht es nicht auf das wiederanstecken zu reagieren? Dazu sollten sich einige Beiträge hier im Forum finden lassen. |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Es ist nichts dagegen einzuwenden, wenn man gleichzeitig in mehreren Foren um Hilfe bitte, aber dann verlinke wem falls die Beiträge auch, damit man nicht alles zwei mal beantwortet.
|
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Im Entwickler-Forum ist der Beitrag schon geschlossen.
|
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Shellhardwareerkennung:
1. Deaktivieren 2. Aktivieren svchost.exe -k netsvcs (ShellHWDetection) |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Hallo,
unter XP habe ich es soo gemacht..obs unter Windows 7 auch so geht..weiss ich nicht genau.
Delphi-Quellcode:
... uses setupapi; procedure Disable_USB; var hdev: HDEVINFO; devinfo: TSPDevInfoData; DriverInfoData: TSPDrvInfoDataA; DriverInstallParams: TSPPropChangeParams; ClassInstallParams:TSPPropChangeParams; ClassInstallParamsSize: DWORD; devInfoListDetail: TSPDevInfoListDetailDataA; buffer:Array [0..1024] of char; buffersize,dataType:DWORD; status,problem:DWORD; i,z:integer; s:string; OK:Longbool; begin devinfo.cbSize:= sizeof(devinfo); hdev:= SetupDiGetClassDevs(0,0,0,DIGCF_ALLCLASSES); if (hdev = NIL ) then begin Showmessage('Unable to enumerate device'); exit; end; i:=0; //Devices listen repeat Buffer[0]:=#0; if not (SetupDiEnumDeviceInfo(hdev,i,devinfo)) then break; if (GetLastError() = ERROR_NO_MORE_ITEMS) then break; if (SetupDiGetDeviceRegistryProperty(hdev,devinfo,SPDRP_DEVICEDESC, @DataType,@Buffer[0],sizeof(Buffer),@BufferSize)) then begin s:=strpas(Buffer); //suchen des speziellen Device if pos('USB Universal Host Controller',s)>0 then begin devInfoListDetail.cbSize:= sizeof(devInfoListDetail); ClassInstallParams.Classinstallheader.cbSize:= sizeof(_SP_CLASSINSTALL_HEADER); ClassInstallParams.Classinstallheader.Installfunction:=DIF_Propertychange; // state disable setzen ClassInstallParams.statechange:=DICS_Disable; ClassInstallParams.Scope:=DICS_FLAG_CONFIGSPECIFIC; ClassInstallParams.HWProfile:=0; if SetupDiSetClassInstallParams(HDEV,@DevInfo,@ClassInstallParams.Classinstallheader,sizeof(ClassInstallParams)) then begin SetupDICallClassInstaller(DIF_PropertyChange,HDEV,@devinfo); end else z:=Getlasterror; end; Buffer[0]:=#0; end; i:=i+1; until false; SetupDiDestroyDeviceInfoList(hdev); end; |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
mal ne "re" Antwort waere net schlecht..geht/geht nicht 8-)
|
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Zitat:
Aber ich denke der Code könnte genau das sein was ich brauche. Dankeschön ich teste es mal |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Zitat:
brauche ich für das setupati.dcu noch komponenten für delphi? Wenn ja wo sind die zu kriegen?? Ich habe Delphi 7 Prof. mit tms,simon und tnt komponenten. Denn er sagt mir beim kompilieren: Datei nicht gefunden : setupati.dcu. Die Prozedur ruf ich dann wie auf? DISABLE_USB; ? oder muss ich erst noch Parameter zum übergeben angeben bei der Deklaration und beim Aufruf? .... var usbstatus: boolean; procedure TForm1.Button1Click(Sender: TObject); begin Disable_USB(true); end; ... procedure Disable_USB(var usbstatus: boolean); var hdev: HDEVINFO; devinfo: TSPDevInfoData; DriverInfoData: TSPDrvInfoDataA; DriverInstallParams: TSPPropChangeParams; ClassInstallParams:TSPPropChangeParams; ClassInstallParamsSize: DWORD; devInfoListDetail: TSPDevInfoListDetailDataA; buffer:Array [0..1024] of char; buffersize,dataType:DWORD; status,problem:DWORD; i,z:integer; s:string; OK:Longbool; begin devinfo.cbSize:= sizeof(devinfo); hdev:= SetupDiGetClassDevs(0,0,0,DIGCF_ALLCLASSES); if (hdev = NIL ) then begin ..... oder liegt das gerade nur an der setupati.dcu?!? danke für die Tipps!! |
AW: USB-Ports deaktivieren&aktivieren in Delphi 7
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
Delphi-Quellcode:
Und nach der SetupAPI.pas/dcu kann man googlen.
procedure Disable_USB;
Also alles keine unlösbaren Probleme. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 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