Detectar Plug and Play: Delphi

Veja nesta Quick como detectar dispositivos Plug and Play

Olá galera, nesta Quick Tips, irei mostra como podemos capturar a detecção de um dispositivo Plug and Play.

Vamos adicionar um ListBox em um form, e salvar este Form como uFrmDisponsitivo.pas Veja a implementação do único método que temos WMDeviceChange

unit uFrmDisponsitivo;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

   TFrmDisponsitivo = class(TForm)

   ListBox1: TListBox;

   private

   { Private declarations }

      procedure WMDeviceChange(var Message: TMessage); message    

                           WM_DEVICECHANGE;

   public

   { Public declarations }

   end;

var

FrmDisponsitivo: TFrmDisponsitivo;

implementation

{$R *.dfm}

{ TFrmDisponsitivo }

   const DBT_DEVICEARRIVAL = $8000;

   const DBT_DEVICEQUERYREMOVE = $800;

   const DBT_DEVICEQUERYREMOVEFAILED = $8002;

   const DBT_DEVICEREMOVEPENDING = $8003;

   const DBT_DEVICEREMOVECOMPLETE = $8004;

   const DBT_DEVICETYPESPECIFIC = $8005;

   const DBT_CONFIGCHANGED = $0008;

procedure TFrmDisponsitivo.WMDeviceChange(var Message: TMessage);

var

   s: string;

begin

{ Veja que utilizamos um case em um integer, para saber se o valor for igual aos valores das contantes uma determinada mensagem será adicionada a variável s, e logo em seguida adicionada no ListBox }  

   case Message.wParam of

      DBT_DEVICEARRIVAL: s := 'Um dispositivo foi inserido e já está disponível ';

      DBT_DEVICEQUERYREMOVE:

      begin

               s := 'Foi solicitado a permissão para remover um dispositivo';

               ListBox1.Items.Add(s);

               Message.Result := integer(true);

               exit;

      end;

      DBT_DEVICEQUERYREMOVEFAILED: s := 'Requisição para remover um dispositivo foi cancelada';

      DBT_DEVICEREMOVEPENDING: s := 'O dispositivo está para ser removido';

      DBT_DEVICEREMOVECOMPLETE: s := 'Dispositivo foi removido';

      DBT_DEVICETYPESPECIFIC: s := 'Evento de dispositivo especifico';

      DBT_CONFIGCHANGED: s := 'A configuração atual foi alterada'

      else

         s := 'Mensagem de dispositivo desconhecida';

      end;

 

   ListBox1.Items.Add(FormatDateTime('dd/mm/yyyy hh:mm:ss',Now) + ' ' + S + ' = ' +    

                                                                        IntToStr(Message.wParam)));

   inherited;

end;

end.

Através de uma mensagem do Sistema operacional podemos detectar o que acontece no Windows em nossas aplicações Delphi, como por exemplo ao colocar um Pen Drive, podemos registrar a hora que ele foi inserido, o usuário que estava logado mantendo assim um controle de segurança, para saber quem esta colocando Pen Drive nos computadores, isso é muito utilizado em empresas que tem documentos importantes que não podem sair de dentro da mesma. Existem maneiras também de impedirmos que um dispositivo seja adicionado no computador, isso tudo via mensagens através do sistema operacional.

 

Fico por aqui ate à próxima Quick Tips.

Um abraço

Wesley Y

Artigos relacionados