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:
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
Christian S.: Code- durch Delphi-Tags ersetzt.