Cinco dicas de verificações no Delphi
1 - Verificando o seu endereço IP
A fonte do projeto principal ficará algo como:
implementation
uses Winsock;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WSACleanup;
end;
procedure TForm1.BtnIPClick(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;
end.
2 - Verificando o tipo de Drive
O código abaixo implementa uma função para testar qual o tipo de drive da unidade especificada.
Para isto, é necessário utilizar uma função de API do windows chamada GetTypeDrive.
Esta função retorna valores default que indicam o tipo de drive selecionado.(Drive_Removable,Drive_Fixed,Drive_Remote,Drive_CdRom,Drive_RamDisk)
Código Completo:
Function Tipo_Drive(Drive:Char):String;
Const
Drive_Removable = 2;
Drive_Fixed = 3;
Drive_Remote = 4;
Drive_CdRom = 5;
Drive_RamDisk = 6;
var
Tipo: byte;
begin
Tipo := GetDriveType(PChar(Drive + ':\'));
Case Tipo of
0: Result := 'Indeterminado';
1: Result := 'Inexistente ';
2: Result := 'Removível';
3: Result := 'Fixo';
4: Result := 'Rede';
5: Result := 'CD-ROM';
6: Result := 'RAM Disk';
else Result := ' Erro';
End;
end;
3 - Verificando se a impressora está ativa
Na sua unit, faça a chamada abaixo:
While not PrinterOnline() do
begin
MsgBox('Verifique a Impressora!','ATENÇÃO');
end;
Function PrinterOnLine : Boolean;
Const
PrnStInt : Byte = $17;
StRq : Byte = $02;
PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var
nResult : byte;
Begin (* PrinterOnLine*)
Asm
mov ah,StRq;
mov dx,PrnNum;
Int $17;
mov nResult,ah;
end;
PrinterOnLine := (nResult and $80) = $80;
End;
4 - Verificando se há uma cópia em execução
var
Hwnd: Thandle;
begin
Hwnd := FindWindow ('TForm1', 'One Copy');
if Hwnd = 0 then begin
Application.Initialize;
Application.CreateForm(TForm, Form1)
Application.Run;
end
else
begin
MessageDlg ('Este programa já esta aberto' [mbok], 0);
SetForegroundWindow (Hwnd);
end;
5 - Verificando se já estou conectado na Internet
Use o componente TCP para fazer isso.
procedure TForm1.Button1Click(Sender: TObject);
begin
if TCP1.LocalIp = '0.0.0.0' then
ShowMessage('Você não está conectado!');
end;