Fórum Como fazer para detectar novamente a USB? #369033
13/03/2009
0
E aí pessoal, blz?
Eu tenho uma procedure que detecta quando um PenDrive é inserido na USB, funciona certinho, o problema é que só funciona depois que meu aplicativo foi iniciado e a pessoa insere o PenDrive. Eu queria saber como fazer para detectar se a USB foi inserida quando meu aplicativo estiver sendo executado. Se a pessoa inseriu o PenDrive antes e ao executar o aplicativo ele detecte que o mesmo encontra-se plugado.
A procedure é essa:
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
procedure TfrmMain.WMDeviceChange(var Msg: TMessage);
begin
if Msg.wParam = $8000 then
begin
if PDEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype <> 2 then
Exit;
if PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_flags <> 0 then
Exit;
str(ln(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask) / ln(2) + Ord(´A´):2:0,GetLettre);
strUnid := Char(StrToInt(GetLettre)) + ´:´; // Pega a unidade do PenDrive
end;
end;
Grato.
Eu tenho uma procedure que detecta quando um PenDrive é inserido na USB, funciona certinho, o problema é que só funciona depois que meu aplicativo foi iniciado e a pessoa insere o PenDrive. Eu queria saber como fazer para detectar se a USB foi inserida quando meu aplicativo estiver sendo executado. Se a pessoa inseriu o PenDrive antes e ao executar o aplicativo ele detecte que o mesmo encontra-se plugado.
A procedure é essa:
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
procedure TfrmMain.WMDeviceChange(var Msg: TMessage);
begin
if Msg.wParam = $8000 then
begin
if PDEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype <> 2 then
Exit;
if PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_flags <> 0 then
Exit;
str(ln(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask) / ln(2) + Ord(´A´):2:0,GetLettre);
strUnid := Char(StrToInt(GetLettre)) + ´:´; // Pega a unidade do PenDrive
end;
end;
Grato.
Onjahyr
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)