AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [Windows 98 SE] Gerät deaktivieren

[Windows 98 SE] Gerät deaktivieren

Ein Thema von FAlter · begonnen am 12. Dez 2007 · letzter Beitrag vom 2. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

[Windows 98 SE] Gerät deaktivieren

  Alt 12. Dez 2007, 18:46
Hi,

weiß jemand, wie ich inter Windows 98 ein Gerät deaktivieren und wieder aktivieren kann? Wie es per Geräte-Manager geht, siehe Anhang, aber per eigenes Programm?

Mfg
FAlter
Miniaturansicht angehängter Grafiken
geraetemanager_168.jpg  
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [Windows 98 SE] Gerät deaktivieren

  Alt 12. Dez 2007, 23:02
Hi,

das müsste mit der Funktion "CM_Disable_DevNode" aus der CFGMGR32.dll gehen. Die Funktion ist auch in der CFGMGR32.dll unter Windows 98 SE vorhanden.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: [Windows 98 SE] Gerät deaktivieren

  Alt 13. Dez 2007, 09:56
Hi,

Danke erstmal für den Tipp, aber das MSDN hilft da nicht
http://msdn2.microsoft.com/en-gb/library/ms790837.aspx
Zitat:
CM_Disable_Devnode

Do not use this function. Use device installation functions instead.
Und diese "device installation functions" sind teilweise erst ab Vista da. Also nicht unter Win98SE. Tja, Win98 ist selbst obsolete

Was ich zu CM_Disable_DevNode finden konnte:
http://www.webtropy.com/articles/dll/h/cfgmgr32.h
Code:
//
// Standardized Return Value data type
//
typedef DWORD       RETURN_TYPE;
typedef RETURN_TYPE CONFIGRET;

//
// Device Instance Handle data type
//
typedef DWORD      DEVNODE, DEVINST;
typedef DEVNODE   *PDEVNODE, *PDEVINST;
...
CMAPI
CONFIGRET
WINAPI
CM_Enable_DevNode(
             IN DEVINST dnDevInst,
             IN ULONG   ulFlags
             );
...
CMAPI
CONFIGRET
WINAPI
CM_Disable_DevNode(
             IN DEVINST dnDevInst,
             IN ULONG   ulFlags
             );
Delphi-Quellcode:
function CM_Disable_DevNode(dnDevInst: DWord; ulFlags: LongWord): DWord; stdcall;
external 'CFGMGR32';

function CM_Enable_DevNode(dnDevInst: DWord; ulFlags: LongWord): DWord; stdcall;
external 'CFGMGR32';
Bleibt die Frage, wie bekomme ich den ersten Parameter her, meinetwegen aus dem Gerätenamen, der angezeigt wird oder so.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [Windows 98 SE] Gerät deaktivieren

  Alt 13. Dez 2007, 10:24
Hi,
Zitat von FAlter:
Und diese "device installation functions" sind teilweise erst ab Vista da. Also nicht unter Win98SE. Tja, Win98 ist selbst obsolete
unter Windows XP habe ich die Funktion erfolgreich getestet und wie schon gesagt, die Funktionen sind auch in der CFGMGR32.dll unter Win 98 SE vorhanden, ich habe selber nachgesehen.

Zitat von FAlter:
Bleibt die Frage, wie bekomme ich den ersten Parameter her, meinetwegen aus dem Gerätenamen, der angezeigt wird oder so.
Mit Hilfe der SetupApi.dll bin ich darangekommen, da ich auch Win 98 SE habe werde ich es heute nochmal selber versuchen, ob der Code auch unter Win 98 SE funktioniert. Für Delphi findest du die Funktionen übrigens hier
Ansonsten soll es auch mit Hilfe der Funktion CM_Locate_DevNodeA möglich sein DevInst zu bekommen.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [Windows 98 SE] Gerät deaktivieren

  Alt 14. Dez 2007, 11:08
Zitat von FAlter:
Tja, Win98 ist selbst obsolete
Hallo,

die Funktionen CM_Disable_DevNode und CM_Enable_DevNode funktionieren auch unter Windows 98 SE, das habe ich jetzt getestet. Allerdings entsteht damit eine Einschränkung, man kann mit der Funktion CM_Enable_DevNode das Gerät wieder aktivieren, nicht jedoch über das Fenster "Eigenschaften", da dort der Button "Gerät aktivieren" dann nicht vorhanden ist. Dafür erscheint der Hinweis:
Zitat:
Das Gerät kann nicht aktiviert werden, da es von einem Windows-Treiber deaktiviert wurde.
(siehe Anhang)
Miniaturansicht angehängter Grafiken
deaktiv_744.png  
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: [Windows 98 SE] Gerät deaktivieren

  Alt 14. Dez 2007, 17:06
Hi,

unter XP funktioniert sowas (übrigens auch, wenn ichs mit dem Compilerschalter für Win98SE compiliere ):

Delphi-Quellcode:
uses
  CfgMgr32;

...

var
  DN: DevNode;
  OK: Boolean;
begin
  OK := false;

  if LoadConfigManagerApi then
  try
    Screen.Cursor := crHourGlass;
    if CM_Locate_DevNode(DN, PChar(Edit1.Text), CM_LOCATE_DEVNODE_NORMAL) = CR_SUCCESS then
      if CM_Disable_DevNode(DN, 0) = CR_SUCCESS then
        OK := true;
  finally
    Screen.Cursor := crDefault;
    UnloadConfigManagerApi;
  end;

  if not OK then
    ShowMessage('Fehler!');
end;
Eingabe in der Form:
ROOT\<gerät>\<nummer>, siehe "Instanzkennung" unter Geräte-Manager Eigenschaften Details. Hoffentlich findet man das unter W98 auch so leicht. Werds gleich mal unter W98SE testen.

[edit]
Unter Win98 sieht der Gerätenamen ungefähr so aus:
USB\VID_0CF2&PID_6220\606569746801
Finden kann man ihn dort leider nicht so leicht; ich fand ihn unter HKEY_DYN_DATA\ConfigManager\Enum in der Registry - durch Suche nach "USB" uns ausprobieren, welches Gerät deaktiviert wird. Beim Nachmachen bitte vorsicht walten lassen. Das falsche Gerät zu deaktivieren kann vorhersehbare, aber schlimme Folgen haben.

Es funktioniert! Danke für die Hilfe.
[/edit]

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
sneumann
(Gast)

n/a Beiträge
 
#7

AW: Re: [Windows 98 SE] Gerät deaktivieren

  Alt 11. Okt 2011, 07:31
Hi,

unter XP funktioniert sowas (übrigens auch, wenn ichs mit dem Compilerschalter für Win98SE compiliere ):

Delphi-Quellcode:
uses
  CfgMgr32;

...

var
  DN: DevNode;
  OK: Boolean;
begin
  OK := false;

  if LoadConfigManagerApi then
  try
    Screen.Cursor := crHourGlass;
    if CM_Locate_DevNode(DN, PChar(Edit1.Text), CM_LOCATE_DEVNODE_NORMAL) = CR_SUCCESS then
      if CM_Disable_DevNode(DN, 0) = CR_SUCCESS then
        OK := true;
  finally
    Screen.Cursor := crDefault;
    UnloadConfigManagerApi;
  end;

  if not OK then
    ShowMessage('Fehler!');
end;
Eingabe in der Form:
ROOT\<gerät>\<nummer>, siehe "Instanzkennung" unter Geräte-Manager Eigenschaften Details. Hoffentlich findet man das unter W98 auch so leicht. Werds gleich mal unter W98SE testen.

[edit]
Unter Win98 sieht der Gerätenamen ungefähr so aus:
USB\VID_0CF2&PID_6220\606569746801
Finden kann man ihn dort leider nicht so leicht; ich fand ihn unter HKEY_DYN_DATA\ConfigManager\Enum in der Registry - durch Suche nach "USB" uns ausprobieren, welches Gerät deaktiviert wird. Beim Nachmachen bitte vorsicht walten lassen. Das falsche Gerät zu deaktivieren kann vorhersehbare, aber schlimme Folgen haben.

Es funktioniert! Danke für die Hilfe.
[/edit]

Mfg
FAlter

muss ich jetzt oben die funktionsdeklaration auch benutzen oder funktioniert der untere Code einfach so wenn ich ihn rein kopier?
wo muss ich meinen USB\VID_090C&PID_1000\LFBMMTURIAEMUNL3 einfügen? bei mir sagt er wenn ich kompiliere unsicherer Typ Pchar und [Fehler] : Undefinierter Bezeichner: 'Edit1'.
wenn ich es deaktiviert habe wie aktivier ich es dann wieder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Re: [Windows 98 SE] Gerät deaktivieren

  Alt 11. Okt 2011, 07:43
wenn ich es deaktiviert habe wie aktivier ich es dann wieder?
Wenn die Funktion zum Deaktivieren CM_Disable_DevNode heißt, wie könnte dann die zum Aktivieren heißen (abgesehen davon, dass sie weiter oben sogar bereits genannt wird)?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

AW: [Windows 98 SE] Gerät deaktivieren

  Alt 11. Okt 2011, 12:22
@sneumann: Wenn du direkt auf einen Beitrag antwortest ist es nicht notwendig (auch nicht gewünscht) das du den kompletten vorangegangenen Beitrag zitierst. Wenn du auf einzelne Passagen eingehen willst das natürlich kein Problem. Aber den kompletten vorangegangenen Beitrag zu zitieren macht das ganze nur unnötige unübersichtlich. Bitte zukünftig versuchen zu vermeiden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Re: [Windows 98 SE] Gerät deaktivieren

  Alt 11. Okt 2011, 13:22
muss ich jetzt oben die funktionsdeklaration auch benutzen oder funktioniert der untere Code einfach so wenn ich ihn rein kopier?
wo muss ich meinen USB\VID_090C&PID_1000\LFBMMTURIAEMUNL3 einfügen? bei mir sagt er wenn ich kompiliere unsicherer Typ Pchar und [Fehler] : Undefinierter Bezeichner: 'Edit1'.
was bitte ist "oben" und was ist "unten"?
Wenn Du etwas "rein kopierst" wird wahrscheinlich nichts funktionieren.
Wenn Dir "Edit1" fehlt, dann könntest Du
a)Edit1 entfernen,
b)Edit1 anlegen,
c)einen Ersatz für Edit1 anlegen.

Übrigens Bei Google suchencm_locate_devnode hilft Dir vielleicht auch etwas weiter.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:56 Uhr.
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