Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2006
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 08-08-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 08-08-2006
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Emulador cd (virtual drive) DarKraZY Varios 0 24-01-2006 10:17:53
pen drive problemas... Vivi Varios 8 08-11-2005 15:55:01
Virtual Drive Crandel Varios 8 14-08-2005 07:38:56
Crear un Virtual Drive lalogrosz API de Windows 0 11-03-2005 20:12:37
Permisos para escribir en Pen drive Casimiro Notevi Linux 2 04-03-2005 10:45:33


La franja horaria es GMT +2. Ahora son las 11:12:16.


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
Copyright 1996-2007 Club Delphi