AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi USB-Ports deaktivieren&aktivieren in Delphi 7
Thema durchsuchen
Ansicht
Themen-Optionen

USB-Ports deaktivieren&aktivieren in Delphi 7

Ein Thema von sneumann · begonnen am 28. Sep 2011 · letzter Beitrag vom 11. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2      
hathor
(Gast)

n/a Beiträge
 
#1

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 28. Sep 2011, 13:03
Shellhardwareerkennung:
1. Deaktivieren
2. Aktivieren

svchost.exe -k netsvcs (ShellHWDetection)

Geändert von hathor (28. Sep 2011 um 13:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 28. Sep 2011, 13:50
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;
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 28. Sep 2011, 19:23
mal ne "re" Antwort waere net schlecht..geht/geht nicht
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#4

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 08:09
mal ne "re" Antwort waere net schlecht..geht/geht nicht
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
Aber ich denke der Code könnte genau das sein was ich brauche. Dankeschön ich teste es mal
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#5

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 09:18
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,dataTypeWORD;
status,problemWORD;
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!!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 09:21
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
procedure Disable_USB; Und nach der SetupAPI.pas/dcu kann man googlen.

Also alles keine unlösbaren Probleme.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (30. Sep 2011 um 09:23 Uhr)
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#7

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 09:58
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 10:06
Was hast du gemacht? Warum zeigst du uns nicht einfach den Code?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#9

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 30. Sep 2011, 10:49
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*

Geändert von Luckie (30. Sep 2011 um 10:59 Uhr) Grund: Delphi Tags ergänzt. beim nächsten mal bitte selber machen!
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#10

AW: USB-Ports deaktivieren&aktivieren in Delphi 7

  Alt 4. Okt 2011, 14:19
Wie viele Parameter hat die Prozedur? Und welche Datentypen haben sie?
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;

Geändert von sneumann ( 4. Okt 2011 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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