Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WM_DEVICECHANGE Uses oder was? (https://www.delphipraxis.net/85848-wm_devicechange-uses-oder.html)

hedie 5. Feb 2007 20:13


WM_DEVICECHANGE Uses oder was?
 
Hallo

Ich möchte die message WM_DEVICECHANGE benutzen doch mein Programm bzw Delphi kennt den "befehl" nicht.

Brauch ich dazu den Spezielle Uses oder so?


mein code sieht so aus:

Delphi-Quellcode:
PROCEDURE TForm1.WMDEVICECHANGE(VAR Message: TMessage);
VAR
s: String;
BEGIN
IF Message.wParam = DBT_DEVICEARRIVAL THEN BEGIN
// Gerät wurde hinzugefügt
CASE PDev_Broadcast_Hdr(
Message.LParam).dbch_devicetype OF
DBT_DEVTYP_OEM : s:='OEM-Gerät';
DBT_DEVTYP_DEVNODE : s:='Geräteknoten';
DBT_DEVTYP_VOLUME : s:='Datenträger';
DBT_DEVTYP_PORT : s:='Seriell/Parallele';
DBT_DEVTYP_NET : s:='Netzwerk';
DBT_DEVTYP_DEVICEINTERFACE: s:='Geräteschnittstelle';
DBT_DEVTYP_HANDLE : s:='Dateisystem';
END;
END ELSE IF Message.wParam =
DBT_DEVICEREMOVECOMPLETE THEN BEGIN
// Gerät wurde entfernt
END;
Message.Result:=1;
END;

danke für die hilfe

Klaus01 5. Feb 2007 20:19

Re: WM_DEVICECHANGE Uses oder was?
 
Du brauchst windows und messages.

Vielleicht hilft dieses auch noch weiter:-> http://www.swissdelphicenter.ch/torr...ode.php?id=372

Grüße
Klaus

hedie 5. Feb 2007 21:19

Re: WM_DEVICECHANGE Uses oder was?
 
Hast recht es klappt aber das nicht


DBT_DEVICEARRIVAL

Klaus01 5. Feb 2007 21:27

Re: WM_DEVICECHANGE Uses oder was?
 
Geht es nicht, wenn Du es als Const deklarierst?

DBT_DEVICEARRIVAL = $8000;

Grüße
Klaus

hedie 5. Feb 2007 21:31

Re: WM_DEVICECHANGE Uses oder was?
 
könntest du mir dabei helfen weiss nicht genau wie ich das machen könnte

Klaus01 5. Feb 2007 21:34

Re: WM_DEVICECHANGE Uses oder was?
 
Ich dachte so?

Delphi-Quellcode:
PROCEDURE TForm1.WMDEVICECHANGE(VAR Message: TMessage);
CONST
  DBT_DEVICEARRIVAL = $8000; // system detected a new device
VAR
s: String;

BEGIN
IF Message.wParam = DBT_DEVICEARRIVAL THEN
  BEGIN
    // Gerät wurde hinzugefügt
    CASE PDev_Broadcast_Hdr(Message.LParam).dbch_devicetype OF
       DBT_DEVTYP_OEM : s:='OEM-Gerät';
       DBT_DEVTYP_DEVNODE : s:='Geräteknoten';
       DBT_DEVTYP_VOLUME : s:='Datenträger';
       DBT_DEVTYP_PORT : s:='Seriell/Parallele';
       DBT_DEVTYP_NET : s:='Netzwerk';
       DBT_DEVTYP_DEVICEINTERFACE: s:='Geräteschnittstelle';
       DBT_DEVTYP_HANDLE : s:='Dateisystem';
    END;
  END
ELSE
  IF Message.wParam = DBT_DEVICEREMOVECOMPLETE THEN
    BEGIN
       // Gerät wurde entfernt
    END;
Message.Result:=1;
END;
Grüße
Klaus

hedie 5. Feb 2007 21:43

Re: WM_DEVICECHANGE Uses oder was?
 
Und was ist mit diesen Beiden?

Delphi-Quellcode:
PDev_Broadcast_Hdr
Delphi-Quellcode:
dbch_devicetype
Bis jetzt siehts so aus Stimmt das?

Delphi-Quellcode:
PROCEDURE TForm1.WMDEVICECHANGE(VAR Message: TMessage);
CONST
  DBT_DEVICEARRIVAL = $8000; // system detected a new device
  DBT_DEVTYP_OEM = $00000000;
  DBT_DEVTYP_DEVNODE = $00000001;
  DBT_DEVTYP_VOLUME = $00000002;
  DBT_DEVTYP_PORT = $00000003;
  DBT_DEVTYP_NET = $00000004;
  DBT_DEVTYP_DEVICEINTERFACE = $00000005;
  DBT_DEVTYP_HANDLE = $00000006;

VAR
s: String;

BEGIN
IF Message.wParam = DBT_DEVICEARRIVAL THEN
  BEGIN
    // Gerät wurde hinzugefügt
    CASE PDev_Broadcast_Hdr(Message.LParam).dbch_devicetype OF
       DBT_DEVTYP_OEM : s:='OEM-Gerät';
       DBT_DEVTYP_DEVNODE : s:='Geräteknoten';
       DBT_DEVTYP_VOLUME : s:='Datenträger';
       DBT_DEVTYP_PORT : s:='Seriell/Parallele';
       DBT_DEVTYP_NET : s:='Netzwerk';
       DBT_DEVTYP_DEVICEINTERFACE: s:='Geräteschnittstelle';
       DBT_DEVTYP_HANDLE : s:='Dateisystem';
    END;
  END
ELSE
  IF Message.wParam = DBT_DEVICEREMOVECOMPLETE THEN
    BEGIN
       // Gerät wurde entfernt
    END;
Message.Result:=1;
END;

Christian Seehase 5. Feb 2007 22:10

Re: WM_DEVICECHANGE Uses oder was?
 
Moin Hedie,

Zitat:

Zitat von hedie
Und was ist mit diesen Beiden?

Delphi-Quellcode:
PDev_Broadcast_Hdr
Delphi-Quellcode:
dbch_devicetype

wenn Du die Möglichkeit hast, empfehle ich Dir mal das PSDK bei Microsoft herunterzuladen.
Möglichkeit, weil es ca. 400 MB sind.
Dann hast Du auch die C-Header-Dateien, und kannst Deklarationen die Dein Delphi nicht kennt, ggf. aus diesen herauslesen, ausserdem ist die Dokumentation besser und aktueller als das mitgelieferte SDK.

Probier's mal mit dieser Deklaration:

Delphi-Quellcode:
type // aus dbh.h
  PDEV_BROARDCAST_HDR = ^DEV_BROADCAST_HDR;
  DEV_BROADCAST_HDR = packed record
    dbch_size      : DWORD;
    dbch_devicetype : DWORD;
    dbch_reserved  : DWORD;
  end;

Robert Marquardt 6. Feb 2007 04:45

Re: WM_DEVICECHANGE Uses oder was?
 
Die JVCL installieren. http://jvcl.sf.net
Dort ist common/DBT.pas dabei das die notwendigen Konstanten deklariert. Die sind bei Delphi nicht vorhanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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