La Web del Programador: Comunidad de Programadores
 
    Pregunta:  24931 - COMO SABER SI LA BANDEJA DEL CD ESTá AFUERA O ADENTRO
Autor:  Melvin Sánchez González
Esto en cualquier momento, como un test que retorne el estado de la bandeja.

  Respuesta:  Jorge Luis Guzman Abreu
Es fácil si capturamos el mensaje WM_DEVICECHANGE:

-Pon esta linea en la parte private de la declaración de tu form:

private
{ Private declarations }
{Esta Linea/This line}
procedure WMDeviceChange(var Msg: TMessage);message WM_DEVICECHANGE;

(Con esto capturamos el mensaje, enviándolo a nuestra propia procedure de tratamiento)

-Pon esta procedure en la implementation de tu form:

procedure TForm1.WMDeviceChange(var Msg: TMessage);
const
CD_METIDO = $8000;
CD_SACADO = $8004;
var
Aviso : String;
begin
inherited;
case Msg.wParam of
CD_METIDO : Aviso := 'CD Insertado';
CD_SACADO : Aviso := 'CD Sacado';
end;
ShowMessage(Aviso);
end;