Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   USB-Ports deaktivieren&aktivieren in Delphi 7 (https://www.delphipraxis.net/163417-usb-ports-deaktivieren-aktivieren-delphi-7-a.html)

sneumann 28. Sep 2011 09:07

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:
http://www.delphipraxis.net/163417-u...elphi-7-a.html
http://entwickler-forum.de/showthrea...781#post257781
http://www.delphi-forum.de/viewtopic...ight=usb+ports
http://www.winhelpline.info/forum/pr...elphi-7-a.html
http://forum.delphi-treff.de/showthr...027#post223027

Luckie 28. Sep 2011 09:20

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von sneumann (Beitrag 1127173)
Muss man dabei in irgendeiner Weise die API Funktionen nutzen?

Da die WinAPI die einzige Programmierschnittstelle zu Windows ist, wird dir nichts anderes übrig bleiben. :?

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.

Luckie 28. Sep 2011 10:14

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.

Bernhard Geyer 28. Sep 2011 10:42

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Im Entwickler-Forum ist der Beitrag schon geschlossen.

hathor 28. Sep 2011 13:03

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Shellhardwareerkennung:
1. Deaktivieren
2. Aktivieren

svchost.exe -k netsvcs (ShellHWDetection)

Der.Kaktus 28. Sep 2011 13:50

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;

Der.Kaktus 28. Sep 2011 19:23

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
mal ne "re" Antwort waere net schlecht..geht/geht nicht 8-)

sneumann 30. Sep 2011 08:09

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1127312)
mal ne "re" Antwort waere net schlecht..geht/geht nicht 8-)

ich bingerade noch am rumprobieren ich teste mal den code dann kommt eine re antwort. Bin noch etwas Unerfahren in der Programmierung mit Delphi deshalb die Zeitverzögerung :roll:
Aber ich denke der Code könnte genau das sein was ich brauche. Dankeschön ich teste es mal

sneumann 30. Sep 2011 09:18

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1127253)
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;



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!!

Luckie 30. Sep 2011 09:21

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
Delphi-Quellcode:
procedure Disable_USB;
Und nach der SetupAPI.pas/dcu kann man googlen.

Also alles keine unlösbaren Probleme.

sneumann 30. Sep 2011 09:58

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Luckie (Beitrag 1127645)
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
Delphi-Quellcode:
procedure Disable_USB;
Und nach der SetupAPI.pas/dcu kann man googlen.

Also alles keine unlösbaren Probleme.

setupati.pas hab ich jetzt gefunden danke..
hauptsächlich geht es mir eigentlich nur da rum, dass ich mit dem code das usb deaktivieren und wieder aktivieren kann. Ich bin mir jetzt nicht sicher. Ich mache gerade wahrscheinlich einen ganz simplen fehler beim aufrufen etc.
Hier ist mein Code: ich habe einfach nur ein neues Formular aufgemacht mit Button1(Geräte anzeigen), button1(aktivieren), button2( deaktivieren), und dann den oben stehenden code in die main eingefügt.

Meine Meldungen :
Erzeugen
[Fehler] main.pas(32): Undefinierter Bezeichner: 'Disable_USB'
[Warnung] main.pas(43): Unsicherer Typ 'HDEVINFO'
[Warnung] main.pas(58): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(58): Konstante 0 wurde zu NIL konvertiert
[Warnung] main.pas(59): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(68): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(70): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(71): Unsicherer Code '@ operator'
[Warnung] main.pas(71): Unsicherer Code '@ operator'
[Fehler] main.pas(71): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] main.pas(78): Undefinierter Bezeichner: '_SP_CLASSINSTALL_HEADER'
[Warnung] main.pas(84): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(84): Unsicherer Code '@ operator'
[Warnung] main.pas(86): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(93): Unsicherer Typ 'hdev: Pointer'
[Fataler Fehler] testusb.dpr(5): Verwendete Unit 'main.pas' kann nicht compiliert werden

Luckie 30. Sep 2011 10:06

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Was hast du gemacht? Warum zeigst du uns nicht einfach den Code?

sneumann 30. Sep 2011 10:49

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Luckie (Beitrag 1127662)
Was hast du gemacht? Warum zeigst du uns nicht einfach den Code?

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, setupapi, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


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;

procedure TForm1.Button3Click(Sender: TObject);
begin
Disable_USB();
ShowMessage('deaktiviert');
end;

end.
[Warnung] main.pas(31): Unsicherer Typ 'HDEVINFO'
[Warnung] main.pas(46): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(46): Konstante 0 wurde zu NIL konvertiert
[Warnung] main.pas(46): Konstante 0 wurde zu NIL konvertiert
[Warnung] main.pas(47): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(56): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(58): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(59): Unsicherer Code '@ operator'
[Fehler] main.pas(59): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Warnung] main.pas(59): Unsicherer Code '@ operator'
[Fehler] main.pas(59): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] main.pas(66): Undefinierter Bezeichner: '_SP_CLASSINSTALL_HEADER'
[Warnung] main.pas(72): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(72): Unsicherer Code '@ operator'
[Warnung] main.pas(74): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(81): Unsicherer Typ 'hdev: Pointer'
[Fataler Fehler] testusb.dpr(5): Verwendete Unit 'main.pas' kann nicht compiliert werden


*jeder fängt mal klein an* :thumb:

DeddyH 30. Sep 2011 10:54

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Benutz doch bitte Delphi-Tags, dann wird der Code auch lesbar. So macht das ja keinen Sinn.

sneumann 4. Okt 2011 14:19

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Luckie (Beitrag 1127645)
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
Delphi-Quellcode:
procedure Disable_USB;
Und nach der SetupAPI.pas/dcu kann man googlen.

Also alles keine unlösbaren Probleme.


Setup Api hab ich jetzt auch drauf, so jetzt habe ich mal ein neues Project erstellt und wollte das mal ausprobieren kann mir jemand sagen was ich falsch mache? Wahrscheinlich ne ganz simple Geschichte: Es soll folgendermaßen aussehen 1 Formular mit 4 Buttons, einer zum USB Geräte suchen , einer zum deaktivieren von USB und einer zum Aktivieren von USB, und ein Button zum Auflisten der verschiedenen USB-Ports.. !?

Ich habe jetzt in dem Code das auflisten, deaktivieren und aktivieren versucht zu implementieren, mache aber noch irgendeinen Fehler:

Code:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, setupapi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


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;



procedure TForm1.Button1Click(Sender: TObject);
begin

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Disable_USB();
ShowMessage('deaktiviert');
end;

end.

procedure TForm1.Button4Click(Sender: TObject);
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

guinnes 4. Okt 2011 15:05

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Du benutzt da scheinbar eine andere Header-Übersetzung der SetupAPI

sneumann 4. Okt 2011 15:11

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Du benutzt da scheinbar eine andere Header-Übersetzung der SetupAPI
eine andere Header-Übersetzung? hm was kann ich dagegen tun? habe ich die falsche setupapi installiert? welche ist die Richtige? Wie bekomme ich sauber die falsche deinstalliert oder ist das nicht schlimm wenn die weiterhin drauf bleibt?!

Also hier nochmal mein Code mit Fehlermeldungen:
Code:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, setupapi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


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;
procedure TForm1.Button4Click(Sender: TObject);
begin
Disable_USB();
ShowMessage('deaktiviert');
end;

end.

Code:
FEHLERMELDUNGEN:

[Fehler] main.pas(32): Undefinierter Bezeichner: 'HDEVINFO'
[Fehler] main.pas(33): Undefinierter Bezeichner: 'TSPDevInfoData'
[Fehler] main.pas(34): Undefinierter Bezeichner: 'TSPDrvInfoDataA'
[Fehler] main.pas(35): Undefinierter Bezeichner: 'TSPPropChangeParams'
[Fehler] main.pas(38): Undefinierter Bezeichner: 'TSPDevInfoListDetailDataA'
[Fehler] main.pas(46): Operator oder Semikolon fehlt
[Fehler] main.pas(47): Undefinierter Bezeichner: 'SetupDiGetClassDevs'
[Fehler] main.pas(47): Undefinierter Bezeichner: 'DIGCF_ALLCLASSES'
[Fehler] main.pas(48): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] main.pas(57): Undefinierter Bezeichner: 'SetupDiEnumDeviceInfo'
[Fehler] main.pas(59): Undefinierter Bezeichner: 'SetupDiGetDeviceRegistryProperty'
[Fehler] main.pas(59): Undefinierter Bezeichner: 'SPDRP_DEVICEDESC'
[Warnung] main.pas(60): Unsicherer Code '@ operator'
[Warnung] main.pas(60): Unsicherer Code '@ operator'
[Fehler] main.pas(66): Operator oder Semikolon fehlt
[Fehler] main.pas(67): Operator oder Semikolon fehlt
[Fehler] main.pas(67): Operator oder Semikolon fehlt
[Fehler] main.pas(67): Undefinierter Bezeichner: '_SP_CLASSINSTALL_HEADER'
[Fehler] main.pas(68): Operator oder Semikolon fehlt
[Fehler] main.pas(68): Operator oder Semikolon fehlt
[Fehler] main.pas(68): Undefinierter Bezeichner: 'DIF_Propertychange'
[Fehler] main.pas(70): Operator oder Semikolon fehlt
[Fehler] main.pas(70): Undefinierter Bezeichner: 'DICS_Disable'
[Fehler] main.pas(71): Operator oder Semikolon fehlt
[Fehler] main.pas(72): Operator oder Semikolon fehlt
[Fehler] main.pas(73): Undefinierter Bezeichner: 'SetupDiSetClassInstallParams'
[Warnung] main.pas(73): Unsicherer Code '@ operator'
[Fehler] main.pas(73): 'THEN' erwartet, aber Bezeichner 'Classinstallheader' gefunden
[Fehler] main.pas(75): Undefinierter Bezeichner: 'SetupDICallClassInstaller'
[Warnung] main.pas(75): Unsicherer Code '@ operator'
[Fehler] main.pas(82): Undefinierter Bezeichner: 'SetupDiDestroyDeviceInfoList'
[Fataler Fehler] usbtest.dpr(5): Verwendete Unit 'main.pas' kann nicht compiliert werden

Dieses Mal mit Fehlermeldung, was fehlt bei mir noch? Damit ich 4 Buttons habe, einen zum Auflisten der USB Ports, einen zum Suchen nach neuen Geräten, einen zum Aktivieren, einen zum Deaktivieren.


Es scheint mir bei den Fehlermeldungen als ob ich eine Komponente nicht richtig installiert habe!? welche ist das?

DeddyH 4. Okt 2011 15:13

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Und wo wird da SetupAPI eingebunden?

sneumann 4. Okt 2011 15:16

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von DeddyH (Beitrag 1128380)
Und wo wird da SetupAPI eingebunden?

achso ja jetzt habe ich noch uses setupapi hinzugefügt trotzdem folgende fehlermeldungen
Code:
[Warnung] main.pas(32): Unsicherer Typ 'HDEVINFO'
[Warnung] main.pas(47): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(47): Konstante 0 wurde zu NIL konvertiert
[Warnung] main.pas(47): Konstante 0 wurde zu NIL konvertiert
[Warnung] main.pas(48): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(57): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(59): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(60): Unsicherer Code '@ operator'
[Fehler] main.pas(60): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Warnung] main.pas(60): Unsicherer Code '@ operator'
[Fehler] main.pas(60): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Fehler] main.pas(67): Undefinierter Bezeichner: '_SP_CLASSINSTALL_HEADER'
[Warnung] main.pas(73): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(73): Unsicherer Code '@ operator'
[Warnung] main.pas(75): Unsicherer Typ 'hdev: Pointer'
[Warnung] main.pas(82): Unsicherer Typ 'hdev: Pointer'
[Fataler Fehler] usbtest.dpr(5): Verwendete Unit 'main.pas' kann nicht compiliert werden

DeddyH 4. Okt 2011 15:21

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Na gut, dann passt die setupapi.pas wohl tatsächlich nicht zum Beispielcode. Du könntest den Kaktus ja einmal bitten, Dir seine verwendete Version zu schicken.

sneumann 4. Okt 2011 15:26

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von DeddyH (Beitrag 1128385)
Na gut, dann passt die setupapi.pas wohl tatsächlich nicht zum Beispielcode. Du könntest den Kaktus ja einmal bitten, Dir seine verwendete Version zu schicken.


okay hab ihm geschrieben,mal sehen, hat denn eventuell jemand noch einen anderen Code parrat mit dem ich 4 buttons machen kann, 1 zum aktivieren , 1 zum deaktivieren, 1 zum geräte suchen, 1 zum auflisten der usb ports ??

mache ich vielleicht auch einen falschen Aufruf?

Der.Kaktus 4. Okt 2011 16:31

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von sneumann (Beitrag 1128387)
Zitat:

Zitat von DeddyH (Beitrag 1128385)
Na gut, dann passt die setupapi.pas wohl tatsächlich nicht zum Beispielcode. Du könntest den Kaktus ja einmal bitten, Dir seine verwendete Version zu schicken.


okay hab ihm geschrieben,mal sehen, hat denn eventuell jemand noch einen anderen Code parrat mit dem ich 4 buttons machen kann, 1 zum aktivieren , 1 zum deaktivieren, 1 zum geräte suchen, 1 zum auflisten der usb ports ??

mache ich vielleicht auch einen falschen Aufruf?

SetupAPI ist Teil der JCL (Jedi-VCL)..

des weiteren hast Du etwas falsch verstanden!!!..ich schrieb

Delphi-Quellcode:
...
Uses SetupAPI;
das ... sollte heissen...nach !!! dem Programm-Kopf(header)

also nach
Delphi-Quellcode:
Program test1;
uses System, Forms........;

var
  Form1: TForm1;

implementation

{$R *.dfm}


Uses SetupAPI;
Auch war es nur ein Beispiel!!! um die Art und Weise zu erklaeren...deshalb auch die Kommentare

Delphi-Quellcode:
// state disable setzen
...
// Devices listen


ein bisschen musst Du schon noch nachdenken..sorry!!!!

P.S.: ich habe ebenfalls D7 und es funktioniert Prima

Die Geraetebezeichnung "Universal Host Controller" entsprach auch damals meinem Problem..muesstest Du kontrollieren, ob es unter Windows 7 auch so heisst!!

DeddyH 4. Okt 2011 16:38

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Moin Kaki,
*räusper* JCL <> JVCL ;)
Meine Vermutung ist, dass die Unit im Laufe der Zeit überarbeitet wurde und mit Deinem Code nicht mehr ohne Weiteres kompatibel ist. Deshalb mein Vorschlag, dass Du ihm Deine Version schicken sollst (oder hier anhängen, Attachments in PMs gehen ja nicht mehr).

Der.Kaktus 4. Okt 2011 16:47

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von DeddyH (Beitrag 1128401)
Moin Kaki,
*räusper* JCL <> JVCL ;)
Meine Vermutung ist, dass die Unit im Laufe der Zeit überarbeitet wurde und mit Deinem Code nicht mehr ohne Weiteres kompatibel ist. Deshalb mein Vorschlag, dass Du ihm Deine Version schicken sollst (oder hier anhängen, Attachments in PMs gehen ja nicht mehr).

OK OK JVCL..Sorry


wollte ich tun..ABER "Dein Seitenaufruf konnte aufgrund eines fehlenden Securitytokens nicht verarbeitet werden.

"

hier die Version (nur Namen) die geht "JVCL333CompleteJCL1101-Build2725"
evtl. mal googeln;-)

guinnes 4. Okt 2011 16:53

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Ich habe ne Übersetzung von Robert Marquart genommen von 1999, 3 Änderungen in Kaki's Quelltext gemacht und bei mir gehts ( Sogar noch mit Delphi 5 )

Der.Kaktus 4. Okt 2011 16:59

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von guinnes (Beitrag 1128407)
Ich habe ne Übersetzung von Robert Marquart genommen von 1999, 3 Änderungen in Kaki's Quelltext gemacht und bei mir gehts ( Sogar noch mit Delphi 5 )

Huii, Danke fuer den Test :-)

sneumann 5. Okt 2011 08:57

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1128404)
Zitat:

Zitat von DeddyH (Beitrag 1128401)
Moin Kaki,
*räusper* JCL <> JVCL ;)
Meine Vermutung ist, dass die Unit im Laufe der Zeit überarbeitet wurde und mit Deinem Code nicht mehr ohne Weiteres kompatibel ist. Deshalb mein Vorschlag, dass Du ihm Deine Version schicken sollst (oder hier anhängen, Attachments in PMs gehen ja nicht mehr).

OK OK JVCL..Sorry


wollte ich tun..ABER "Dein Seitenaufruf konnte aufgrund eines fehlenden Securitytokens nicht verarbeitet werden.

"

hier die Version (nur Namen) die geht "JVCL333CompleteJCL1101-Build2725"
evtl. mal googeln;-)

Habs installiert aber weiter geholfen hats mir noch nicht so richtig ich lese mich nochmal ein bisschen durch :
Um nochmal mein Problem zu verdeutlichen:

Ich möchte die Serielle Schnittstelle ansprechen den COM5. habe da ein Messgerät über SERIAL-to-USB angeschlossen dem ich Befehle übergeben möchte: Anweisungen aus dem Handbuch des Geräts über Delphi an das Gerät senden über COM5:

Beispielbefehle aus dem Handbuch des Geräts:
CONFigure:TEMPerature:TCOuple<parameter> Temperatur configurieren
DISPlay:BACKlight? Abfragen ob Hintergrundbeleuchtung an ist rückgabe 1 oder 0

solche befehle möchte ich über Delphi realisieren und an die Schnittstelle senden und auslesen

Code:
http://www.delphi-forum.de/viewtopic.php?t=107280&highlight=serielle+schnittstelle
link zu gleichem problem anderer Code

sneumann 5. Okt 2011 10:00

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von guinnes (Beitrag 1128407)
Ich habe ne Übersetzung von Robert Marquart genommen von 1999, 3 Änderungen in Kaki's Quelltext gemacht und bei mir gehts ( Sogar noch mit Delphi 5 )

kannste deinen code mal posten?! wäre nett danke!!

guinnes 5. Okt 2011 10:24

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von sneumann (Beitrag 1128522)
kannste deinen code mal posten?! wäre nett danke!!

Wie gesagt, ich habe nur 3 Stellen verändert : Hier 2 Mal das @ rausgeworfen
Delphi-Quellcode:
      if (SetupDiGetDeviceRegistryProperty(hdev,devinfo,SPDRP_DEVICEDESC,
                  DataType,@Buffer[0],sizeof(Buffer),BufferSize)) then
und hier den 1. Unterschrich entfernt :
Delphi-Quellcode:
          ClassInstallParams.Classinstallheader.cbSize:= sizeof(SP_CLASSINSTALL_HEADER);

p.s.: Grade nochmal ein Build gemacht, jetzt hagelt es bei mir auch Fehler ( alle im Bereich WINNT )

sneumann 5. Okt 2011 10:57

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von guinnes (Beitrag 1128532)
Zitat:

Zitat von sneumann (Beitrag 1128522)
kannste deinen code mal posten?! wäre nett danke!!

Wie gesagt, ich habe nur 3 Stellen verändert : Hier 2 Mal das @ rausgeworfen
Delphi-Quellcode:
      if (SetupDiGetDeviceRegistryProperty(hdev,devinfo,SPDRP_DEVICEDESC,
                  DataType,@Buffer[0],sizeof(Buffer),BufferSize)) then
und hier den 1. Unterschrich entfernt :
Delphi-Quellcode:
          ClassInstallParams.Classinstallheader.cbSize:= sizeof(SP_CLASSINSTALL_HEADER);

p.s.: Grade nochmal ein Build gemacht, jetzt hagelt es bei mir auch Fehler ( alle im Bereich WINNT )


jetzt hab ich nur noch folgende fehlermeldung popupfenster
"Im Projekt usbtest.exe ist eine Excepton der Klasse EAccess Violation aufgetreten. Meldung: Zugriffverletzung bei Adresse 00000000. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen"
bei folgendem Code
Code:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SetupAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


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;
procedure TForm1.Button4Click(Sender: TObject);
begin
Disable_USB();
ShowMessage('deaktiviert');
end;

end.
dann klcike ich ok und garnix passiert

DeddyH 5. Okt 2011 10:59

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Dann setz mal einen Haltepunkt, steppe zeilenweise durch und teile uns mit, in welcher Zeile der Fehler auftritt.

guinnes 5. Okt 2011 12:03

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Ins Formcreate gehört noch ein LoadSetupAPI und ins FormDestroy ein UnloadSetUpAPI. Sorry, hatt ich noch vergessen :oops:

Du bist aber recht mutig, einfach irgendwelche Treiber abzuschalten. Wäre es nicht besser, erst mal sich alles nur anzeigen zu lassen ?

Der.Kaktus 5. Okt 2011 13:49

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von sneumann
Habs installiert aber weiter geholfen hats mir noch nicht so richtig ich lese mich nochmal ein bisschen durch :
Um nochmal mein Problem zu verdeutlichen:

Ich möchte die Serielle Schnittstelle ansprechen den COM5. habe da ein Messgerät über SERIAL-to-USB angeschlossen dem ich Befehle übergeben möchte: Anweisungen aus dem Handbuch des Geräts über Delphi an das Gerät senden über COM5:

Beispielbefehle aus dem Handbuch des Geräts:
CONFigure:TEMPerature:TCOuple<parameter> Temperatur configurieren
DISPlay:BACKlight? Abfragen ob Hintergrundbeleuchtung an ist rückgabe 1 oder 0

solche befehle möchte ich über Delphi realisieren und an die Schnittstelle senden und auslesen

Code:
http://www.delphi-forum.de/viewtopic.php?t=107280&highlight=serielle+schnittstelle
link zu gleichem problem anderer Code



Was lese ich gerade? Du willst nur COM5 Daten schreiben und lesen?..Da brauchst Du kein USB zu disablen. Du sprichst den Port doch ueber serielle Schnittstelle an nicht ueber USB.

hathor 5. Okt 2011 13:50

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Liste der Anhänge anzeigen (Anzahl: 1)
@sneumann:

Das Programm USBVIEW ist von Microsoft.

Ein unvollständiger "Nachbau" mit SourceCode ist im Anhang.

sneumann 5. Okt 2011 18:44

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1128579)
Zitat:

Zitat von sneumann
Habs installiert aber weiter geholfen hats mir noch nicht so richtig ich lese mich nochmal ein bisschen durch :
Um nochmal mein Problem zu verdeutlichen:

Ich möchte die Serielle Schnittstelle ansprechen den COM5. habe da ein Messgerät über SERIAL-to-USB angeschlossen dem ich Befehle übergeben möchte: Anweisungen aus dem Handbuch des Geräts über Delphi an das Gerät senden über COM5:

Beispielbefehle aus dem Handbuch des Geräts:
CONFigure:TEMPerature:TCOuple<parameter> Temperatur configurieren
DISPlay:BACKlight? Abfragen ob Hintergrundbeleuchtung an ist rückgabe 1 oder 0

solche befehle möchte ich über Delphi realisieren und an die Schnittstelle senden und auslesen

Code:
http://www.delphi-forum.de/viewtopic.php?t=107280&highlight=serielle+schnittstelle
link zu gleichem problem anderer Code



Was lese ich gerade? Du willst nur COM5 Daten schreiben und lesen?..Da brauchst Du kein USB zu disablen. Du sprichst den Port doch ueber serielle Schnittstelle an nicht ueber USB.

ups nein sorry das war der nächste sSchritt den COM5 anzusprechen! das gehörte in die andere Rubrik! hier gehts vorerst immer noch um usb deaktivieren und abschalten bzw auch Geräte suchen und anzeigen zu lassen

Der.Kaktus 5. Okt 2011 21:39

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
OK, dann wuerde ich Dir empfehlen..nimm das Tool von Hathor ;-)

sneumann 6. Okt 2011 07:15

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von hathor (Beitrag 1128581)
@sneumann:

Das Programm USBVIEW ist von Microsoft.

Ein unvollständiger "Nachbau" mit SourceCode ist im Anhang.

Das Programm zeigt die Geräte aber nur an richtig?

hathor 6. Okt 2011 07:34

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Leider ja.

sneumann 11. Okt 2011 07:37

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Zitat:

Zitat von Luckie (Beitrag 1127177)
Zitat:

Zitat von sneumann (Beitrag 1127173)
Muss man dabei in irgendeiner Weise die API Funktionen nutzen?

Da die WinAPI die einzige Programmierschnittstelle zu Windows ist, wird dir nichts anderes übrig bleiben. :?

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.

man soll ja garnicht erst wieder reinstecken müssen... also es soll automatisch ein bestimmter USB PORT (zb COM4)deaktiviert und wieder aktiviert werden ...

hathor 11. Okt 2011 08:26

AW: USB-Ports deaktivieren&aktivieren in Delphi 7
 
Versteht die Hardware keinen RESET-Befehl?

Für die Hardware wäre es das Gleiche wie USB-Stecker rein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz