Autor Beitrag
Overdosed
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mi 17.08.05 14:26 
Hallo !

Ich versuche per WM_DEVICECHANGE herauszufinden, ob ein bestimmtes USB-Gerät entfernt wird/wurde.
Dazu prüfe ich den WParam auf DBT_DEVICEQUERYREMOVE, nur leider kommt dieses Ereignis nie an.
Die zwei die ich bekomme sind DBT_DEVICEARRIVAL und DBT_DEVICEREMOVECOMPLETE.
Kann mir einer erklären, warum ?


Verarbeitung bei WM_DEVICECHANGE:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
    case Msg.wParam of
      DBT_DEVICEQUERYREMOVE:
      begin
        if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DevTyp_Volume then
        begin
          Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
          if Drive = strProgrammDriveLetter then
          begin
            bolClose := True;
            Application.Terminate;
          end;
        end;
      end;
    end;


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Overdosed Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 19.08.05 00:10 
Ok, nach langem Suchen endlich was gefunden.
Damit die Nächsten nicht den gleichen Stress haben wie ich, sollte man sich mal den Toolbox-Artikel zu Gemüte führen:
www.toolbox-mag.de/d.../tx22005artikel1.pdf

Zitat:
Es hängt wohl
davon ab, wieviel Lust die Treiberentwickler haben, die
Vorgaben von Microsoft zu implementieren.


Schade !

Gruss, Perry