Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 22-05-2011
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Poder: 23
santiago14 Va por buen camino
Smile

Cita:
Empezado por seoane Ver Mensaje
Al codigo anterior todavia le podemos dar otra vuelta de tuerca, si tenemos una lista de las unidades que hay en cada momento sera muy sencillo saber cual es la que se acaba de insertar.

Código Delphi [-]
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Lista: set of Char;
    procedure CrearLista;
    procedure WMDEVICECHANGE(var Msg: TMessage); message WM_DEVICECHANGE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  DBT_DEVICEARRIVAL = $8000;

procedure TForm1.CrearLista;
var
  Letra: Char;
begin
  Lista:= [];
  for Letra:= 'C' to 'Z' do
    if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE  then
      Lista:= Lista + [Letra];
end;

procedure TForm1.WMDEVICECHANGE(var Msg: TMessage);
var
  Letra: Char;
begin
  if Msg.WParam = DBT_DEVICEARRIVAL  then
  begin
    for Letra:= 'C' to 'Z' do
      if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE  then
      begin
        if not (Letra in Lista) then
        begin
          ShowMessage('Este es un disco removible '+Letra+':\');
        end;
      end;
  end;
  CrearLista;
  inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CrearLista;
end;

Perdon por poner dos respuestas, pero se me van ocurrinedo ideas sobre la marcha
Varios años después le podemos dar una vuelta mas a la tuerca, en realidad una pequeña corrección.
Así como estaba el evento TForm1.WMDEVICECHANGE, no mostraba nada cuando se insertaba un disp. USB, con este pequeñísimo arreglito va mejor.
Pongo en rojo las modificaciones.
Ah, para que fuera mas gráfico, le puse un listbox donde aparecen y desaparecen las unidades USB.
Código Delphi [-]
type
  TForm1 = class(TForm)
    lst1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Lista: set of Char;
    procedure CrearLista;
    procedure WMDEVICECHANGE(var Msg: TMessage); message WM_DEVICECHANGE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  DBT_DEVICEARRIVAL = $8000;
  DBT_DEVICEREMOVAL = $8004;     // El dispositivo sale

procedure TForm1.CrearLista;
var
  Letra: Char;
begin
  Lista:= [];
  lst1.Clear;
  for Letra:= 'C' to 'Z' do
  begin
    if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE  then
    begin
      Lista:= Lista + [Letra];
      lst1.Items.Add(Letra + ':\');
    end;
  end;
end;

procedure TForm1.WMDEVICECHANGE(var Msg: TMessage);
var
  Letra: Char;
begin
  if Msg.WParam = DBT_DEVICEARRIVAL  then
  begin
    for Letra:= 'C' to 'Z' do
    begin
      if GetDriveType(Pchar(Letra + ':\')) = DRIVE_REMOVABLE  then
      begin
        if not (Letra in Lista) then
        begin
          ShowMessage('Este es un disco removible ' + Letra + ':\');
        end;
      end;
    end;
    CrearLista;
  end;
  if Msg.WParam = DBT_DEVICEREMOVAL then
  begin
    CrearLista;
  end;
  //CrearLista;
  inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CrearLista;
end;

end.
Gracias. Este código, junto con otros que encontré me sirvieron de mucho.

Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 22-05-2011 a las 19:00:12.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Detectar la Unidad de CD Tonio Varios 13 04-03-2013 22:49:01
unidad A joHn je@N API de Windows 4 25-06-2005 02:31:09
Compilar una Unidad Esau Varios 3 12-09-2004 19:48:03
Detección de navegador WEB aerosB4 Internet 5 08-03-2004 17:27:10
Detección de Carga de un programa craven Varios 3 24-11-2003 16:10:46


La franja horaria es GMT +2. Ahora son las 09:56:37.


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