Fórum Pegar informações do micro #294233
01/09/2005
0
Tamanho do HD (Total, Usado e Livre)
Memoria RAM
Velocidade do processador
Nome do micro na rede
Dominio
Número de série do micro
se tiver como preciso de ajuda...agradeço desde já!
valeu galera!!!!
Luiz_aquino
Curtir tópico
+ 0Posts
01/09/2005
Adriano Santos
Cara, são uma série de funções...vou agrupar todas que tenho aqui e te passo ok?
Gostei + 0
02/09/2005
Luiz_aquino
Cara, são uma série de funções...vou agrupar todas que tenho aqui e te passo ok?[/quote:f4f2554e6a]
valeu pela força!!! vc manda por email mesmo?
Gostei + 0
02/09/2005
Adriano Santos
[b:f3e15b0f0a]Dominio[/b:f3e15b0f0a], coloquei uma função, mas aqui não deu certo, dá uma olhada talvez consiga mexer.
[b:f3e15b0f0a]Número de série do micro[/b:f3e15b0f0a], não tenho isso.
Declare a unit WINSOCK.
........
uses
WinSock;
------
function TForm1.GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
try
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh // rdtsc
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh // rdtsc
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);
except
end;
end;
function TForm1.Retorna_IP: string;
var
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
wVersionRequested: WORD;
wsaData: TWSAData;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Result := p2;
WSACleanup;
end;
function TForm1.Retorna_Nome: string;
var
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
wVersionRequested: WORD;
wsaData: TWSAData;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
Result := p^.h_Name;
end;
function TForm1.Retorna_Dominio: string;
var
hProcesso, hTokenAcesso: THandle;
Buffer: PChar;
Usuario: array[0..31] of char;
Dominio: array[0..31] of char;
TamanhoBufferInfo: Cardinal;
TamanhoUsuario: Cardinal;
TamanhoDominio: Cardinal;
snu: SID_NAME_USE;
begin
TamanhoBufferInfo := 1000;
TamanhoUsuario := sizeof(Usuario);
TamanhoDominio := sizeof(Dominio);
hProcesso := GetCurrentProcess;
if OpenProcessToken(hProcesso, TOKEN_READ, hTokenAcesso) then
try
GetMem(Buffer, TamanhoBufferInfo);
try
if GetTokenInformation(hTokenAcesso, TokenUser, Buffer, TamanhoBufferInfo,
TamanhoBufferInfo) then
LookupAccountSid(nil, PSIDAndAttributes(Buffer)^.sid, Usuario,
TamanhoUsuario, Dominio, TamanhoDominio, snu)
else
RaiseLastOSError;
finally
FreeMem(Buffer);
end;
result := Dominio;
finally
CloseHandle(hTokenAcesso);
end
end;
function TForm1.Retorna_Usuario: string;
var
cUser: array[0..144] of Char;
BufferSize: DWord;
cUserName: string;
begin
BufferSize := SizeOf(cUser);
GetUserName(cUser, BufferSize);
cUserName := Trim(StrPas(cUser));
Result := cUserName;
end;
function TForm1.Retorna_Memoria: string;
var
MemoryStatus: TMemoryStatus;
begin
MemoryStatus.dwLength := sizeof(MemoryStatus);
GlobalMemoryStatus(MemoryStatus);
Result := ´Total de memória física : ´ + FormatFloat(´#0,000´,
MemoryStatus.dwTotalPhys);
(*
{typedef struct _MEMORYSTATUS}
DWORD dwLength; // sizeof(MEMORYSTATUS)
DWORD dwMemoryLoad; // percentual de memória em uso
DWORD dwTotalPhys; // bytes de memória física
DWORD dwAvailPhys; // bytes livres de memória física
DWORD dwTotalPageFile; // bytes de paginação de arquivo
DWORD dwAvailPageFile; // bytes livres de paginação de arquivo
DWORD dwTotalVirtual; // bytes em uso de espaço de endereço
DWORD dwAvailVirtual; // bytes livres}
*)
end;
procedure TForm1.FormCreate(Sender: TObject);
var
cpuspeed: string;
begin
cpuspeed := Format(´¬f MHz´, [GetCPUSpeed]);
Label1.Caption := ´Nome máquina: ´ + Retorna_Nome;
Label2.Caption := ´IP: ´ + Retorna_IP;
Label3.Caption := ´Domínio: ´ + Retorna_Dominio;
Label4.Caption := ´Velocidade do CPU: ´ + cpuspeed +
´ (valor aproximado)´;
Label5.Caption := ´Nome do usuário na rede: ´ + Retorna_Usuario;
Label6.Caption := ´Memória RAM: ´ + Retorna_Memoria;
Label8.Caption := ´Tamanho do Disco: ´ + FormatFloat(´#0,000´,DiskSize(0) div 1024);
Label7.Caption := ´Espaço Livre: ´ + FormatFloat(´0,000´,DiskFree(0) div 1024);
end;
Gostei + 0
02/09/2005
Adriano Santos
Pega no meu servidor.
[url=http://www.doiscliques.com/pub/infomicro.zip]Exemplo[/url]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)