Hola, en
mi página, en la sección de componentes, puedes encontrar una que se llama TCDChange. Esta componente detecta cuando se inserta o extrae un CD.
Ahora bien, en el código de detección (unidad CdChange.pas), encontrarás:
Código Delphi
[-]
procedure TCdChange.WndProc(var Msg: TMessage);
var
Drive: Char;
begin
if Msg.Msg = WM_DEVICECHANGE then
with TWMDeviceChange(Msg) do
if
((Event = DBT_DEVICEARRIVAL) or (Event = DBT_DEVICEREMOVECOMPLETE)) and
(Header.DeviceType = DBT_DEVTYP_VOLUME) and
(PDevBroadcastVolume(Header).Flags and DBTF_MEDIA <> 0)
then
begin
Drive := GetDriveFromMask(PDevBroadcastVolume(Header).UnitMask);
case Event of
DBT_DEVICEARRIVAL:
if Assigned(FOnCdInserted) then FOnCdInserted(Self, Drive);
DBT_DEVICEREMOVECOMPLETE:
if Assigned(FOnCdRemoved) then FOnCdRemoved(Self, Drive);
end;
end;
end;
Si omites la condición marcada en rojo, entonces también detectará las memorias usb, al menos detecta la mía
. Claro que entonces seguirá detectando los cd. Quizá evites esto si en lugar de omitir la condición, la cambias a
= 0.
// Saludos