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.