Bonjour,
J'essaye de gérer l'évènement WM_DEVICECHANGE pour détecter l'ouverture ou la fermeture d'un lecteur CD/DVD.
Je dispose de plusieurs solutions pour gérer l'évènement :
1) Ajout d'une procédure qui gère l'évènement WM_DEVICECHANGE du genre :
procedure WMDeviceChange(var Msg:TMessage); message WM_DEVICECHANGE;
2) Surcharge de la procedure DefaultHandler
3) Ajout du contrôle ApplicationEvents
Dans une application standard (TForm) seules les deux premières solutions fonctionnent.
Dans une application ActiveX (TActiveForm) aucune ne fonctionnent.
Est-ce normal ?
Exemple de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TForm1.ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean); var m: TMessage; begin if ( Msg.message = WM_DEVICECHANGE) then begin // Ne fonctionne pas ShowMessage('ApplicationEventsMessage : WM_DEVICECHANGE'); end; if ( Msg.message = WM_LBUTTONDBLCLK) then begin // Fonctionne ShowMessage('ApplicationEventsMessage : WM_LBUTTONDBLCLK'); end; end;
Merci.
Partager