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