Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Detectar Pend Drive (https://www.clubdelphi.com/foros/showthread.php?t=34381)

Delphius 08-08-2006 05:10:44

Detectar Pend Drive
 
Espero sepan disculpar si el tema fue tratado. He hecho una búsqueda pero no encontré lo que yo estoy investigando.

El problema es que necesito detectar cuando se inserta o se desconecta un Pen Drive (memoria USB, o como le llamen), y logicamente... la unidad asociada al mismo (por ejemplo: F, D).

Otra duda es que si también eso dependerá del SO, pues... como para versiones de windows 9x hay que instalar drivers para que se detecte mientras que para windows 2000, no hay problemas.

Si es posible realizar esto, le agadrecería que me den alguna orientación.
Desde ya, muchas gracias.

roman 08-08-2006 05:40:21

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

Delphius 08-08-2006 05:47:45

Gracias
 
Que más puedo decirte,... muuuuuuuchas gracias. No esperaba tener una respuesta tan pronto. Veré tu componente y me pondré a investigar las funciones (que parecen ser del API) que recalcas...

Nuevamente, muchas gracias.


La franja horaria es GMT +2. Ahora son las 07:28:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi