Ver Mensaje Individual
  #4  
Antiguo 09-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
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
Responder Con Cita