Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiagoh

info de hardware

Recommended Posts

PRecisa montar um programa para um trabalho de aula que passe as informações do hardware para um inventério... eu quero saber como capturar as informações de hardware

Compartilhar este post


Link para o post
Compartilhar em outros sites

A empresa LMD Innovative tem um componente chamado TLMDSysInfo que retorna várias informacões sobre hardware e ambiente do windows.

 

Na URL http://www.lmd.de/download/ procure por:

 

LMD-Tools SE 7.00.60

LMD-Tools Freeware Edition

 

E instale a versão de acordo com Delphi que você usa.

 

Espero que isto te ajude.

 

 

Abraços,

 

Barrakuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma B)

 

Se precisar pegar o MAC Address

---------------------------------------

 

function CoCreateGuid(var guid: TGUID): HResult; stdcall; far external 'ole32.dll';function GetMACAddress: string;var  g: TGUID;  i: Byte;begin  Result := '';  CoCreateGUID(g);  for i := 2 to 7 do    Result := Result + IntToHex(g.D4[i], 2);end;

Para pegar o IP da máquina

--------------------------------

 

function LocalIP: String;type  TaPInAddr = Array[0..10] of PInAddr;  PaPInAddr = ^TaPInAddr;var  phe: PHostEnt;  pptr: PaPInAddr;  Buffer: Array[0..63] of Char;  I: Integer;  GInitData: TWSAData;begin  WSAStartup($101, GInitData);  Result := '';  GetHostName(Buffer, SizeOf(Buffer));  phe := GetHostByName(buffer);  if phe = nil then Exit;  pPtr := PaPInAddr(phe^.h_addr_list);  I := 0;  while pPtr^[I] <> nil do   begin    Result := inet_ntoa(pptr^[I]^);    Inc(I);   end;  WSACleanup;end;

Para obter informações sobre o BIOS

-------------------------------------------

 

function GetBiosInfo: string;var   p, q: pchar;begin   q := nil;   p := PChar(Ptr($FE000));   repeat     if q <> nil then begin       if not (p^ in [#10, #13, #32..#126, #169, #184]) then begin         if (p^ = #0) and (p - q >= 8) then         begin           Result := Result + TrimRight(String(q)) + #13#10;         end;         q := nil;       end;     end else       if p^ in [#33..#126, #169, #184] then         q := p;     inc(p);   until p > PChar(Ptr($FFFFF));   Result := TrimRight(Result);end;

Para saber se a máquina está conectada à Internet através do Register

----------------------------------------------------------------------------------

 

function InternetConnection: boolean;var   Reg: TRegistry;   RemoteConnection: array [0..3] of byte;   Error: boolean;   HostName: array[0..63] of char;   WSData: TWSAData;begin   Result := False;   Error := False;   Reg := nil;   try      Reg := TRegistry.Create(KEY_QUERY_VALUE);      Reg.RootKey := HKEY_LOCAL_MACHINE;      if Reg.OpenKeyReadOnly('\System\CurrentControlSet\Services\'          + 'RemoteAccess') then begin        try          Reg.ReadBinaryData('Remote Connection', RemoteConnection,            SizeOf(RemoteConnection));          if RemoteConnection[0] = 1 then Result := True;        except          Error := True;        end;        Reg.CloseKey;      end;   except      Error := True;   end;   Reg.Free;   if Error then      if WSAStartup($200, WSData) = 0 then begin        GetHostName(HostName, SizeOf(HostName));        if GetHostByName(HostName) <> nil then Result := True;        WSACleanup;      end;end;

Para obter o número serial do HD IDE Corretamente em W2, XP Wx...

---------------------------------------------------------------------------------

 

function GetIdeDiskSerialNumber : String;type   TSrbIoControl = packed record      HeaderLength : ULONG;      Signature    : Array[0..7] of Char;      Timeout      : ULONG;      ControlCode  : ULONG;      ReturnCode   : ULONG;      Length       : ULONG;    end;    SRB_IO_CONTROL = TSrbIoControl;    PSrbIoControl = ^TSrbIoControl;    TIDERegs = packed record      bFeaturesReg     : Byte;       bSectorCountReg  : Byte;       bSectorNumberReg : Byte;       bCylLowReg       : Byte;       bCylHighReg      : Byte;       bDriveHeadReg    : Byte;       bCommandReg      : Byte;       bReserved        : Byte;     end;    IDEREGS   = TIDERegs;    PIDERegs  = ^TIDERegs;    TSendCmdInParams = packed record      cBufferSize  : DWORD;      irDriveRegs  : TIDERegs;      bDriveNumber : Byte;      bReserved    : Array[0..2] of Byte;      dwReserved   : Array[0..3] of DWORD;      bBuffer      : Array[0..0] of Byte;    end;    SENDCMDINPARAMS   = TSendCmdInParams;    PSendCmdInParams  = ^TSendCmdInParams;    TIdSector = packed record      wGenConfig                 : Word;      wNumCyls                   : Word;      wReserved                  : Word;      wNumHeads                  : Word;      wBytesPerTrack             : Word;      wBytesPerSector            : Word;      wSectorsPerTrack           : Word;      wVendorUnique              : Array[0..2] of Word;      sSerialNumber              : Array[0..19] of Char;      wBufferType                : Word;      wBufferSize                : Word;      wECCSize                   : Word;      sFirmwareRev               : Array[0..7] of Char;      sModelNumber               : Array[0..39] of Char;      wMoreVendorUnique          : Word;      wDoubleWordIO              : Word;      wCapabilities              : Word;      wReserved1                 : Word;      wPIOTiming                 : Word;      wDMATiming                 : Word;      wBS                        : Word;      wNumCurrentCyls            : Word;      wNumCurrentHeads           : Word;      wNumCurrentSectorsPerTrack : Word;      ulCurrentSectorCapacity    : ULONG;      wMultSectorStuff           : Word;      ulTotalAddressableSectors  : ULONG;      wSingleWordDMA             : Word;      wMultiWordDMA              : Word;      bReserved                  : Array[0..127] of Byte;    end;    PIdSector = ^TIdSector;  const    IDE_ID_FUNCTION               = $EC;    IDENTIFY_BUFFER_SIZE          = 512;    DFP_RECEIVE_DRIVE_DATA        = $0007c088;    IOCTL_SCSI_MINIPORT           = $0004d008;    IOCTL_SCSI_MINIPORT_IDENTIFY  = $001b0501;    DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE;    BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize;    W9xBufferSize = IDENTIFY_BUFFER_SIZE+16;  var    hDevice : THandle;    cbBytesReturned : DWORD;    pInData : PSendCmdInParams;    pOutData : Pointer; // PSendCmdOutParams    Buffer : Array[0..BufferSize-1] of Byte;    srbControl : TSrbIoControl absolute Buffer;    procedure ChangeByteOrder( var Data; Size : Integer );    var ptr : PChar;        i : Integer;        c : Char;    begin      ptr := @Data;      for i := 0 to (Size shr 1)-1 do      begin        c := ptr^;        ptr^ := (ptr+1)^;        (ptr+1)^ := c;        Inc(ptr,2);      end;    end;begin    Result := '';    FillChar(Buffer,BufferSize,#0);    if Win32Platform=VER_PLATFORM_WIN32_NT then       begin // Windows NT, Windows 2000, Windows XP         // Get SCSI port handle         hDevice := CreateFile('\\.\Scsi0:',          GENERIC_READ or GENERIC_WRITE,          FILE_SHARE_READ or FILE_SHARE_WRITE,          nil, OPEN_EXISTING, 0, 0);        if hDevice=INVALID_HANDLE_VALUE then Exit;        try          srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);          System.Move('SCSIDISK',srbControl.Signature,8);          srbControl.Timeout      := 2;          srbControl.Length       := DataSize;          srbControl.ControlCode  := IOCTL_SCSI_MINIPORT_IDENTIFY;          pInData := PSendCmdInParams(PChar(@Buffer)                     +SizeOf(SRB_IO_CONTROL));          pOutData := pInData;          with pInData^ do          begin            cBufferSize  := IDENTIFY_BUFFER_SIZE;            bDriveNumber := 0;            with irDriveRegs do            begin              bFeaturesReg     := 0;              bSectorCountReg  := 1;              bSectorNumberReg := 1;              bCylLowReg       := 0;              bCylHighReg      := 0;              bDriveHeadReg    := $A0;              bCommandReg      := IDE_ID_FUNCTION;            end;          end;          if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT,            @Buffer, BufferSize, @Buffer, BufferSize,            cbBytesReturned, nil ) then Exit;        finally          CloseHandle(hDevice);        end;      end    else       begin // Windows 95 OSR2, Windows 98, Windows ME        hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil,          CREATE_NEW, 0, 0 );        if hDevice=INVALID_HANDLE_VALUE then Exit;        try          pInData := PSendCmdInParams(@Buffer);          pOutData := @pInData^.bBuffer;          with pInData^ do          begin            cBufferSize  := IDENTIFY_BUFFER_SIZE;            bDriveNumber := 0;            with irDriveRegs do            begin              bFeaturesReg     := 0;              bSectorCountReg  := 1;              bSectorNumberReg := 1;              bCylLowReg       := 0;              bCylHighReg      := 0;              bDriveHeadReg    := $A0;              bCommandReg      := IDE_ID_FUNCTION;            end;          end;          if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA,            pInData, SizeOf(TSendCmdInParams)-1, pOutData,            W9xBufferSize, cbBytesReturned, nil ) then Exit;        finally          CloseHandle(hDevice);        end;      end;      with PIdSector(PChar(pOutData)+16)^ do      begin        ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber));        SetString(Result,sSerialNumber,SizeOf(sSerialNumber));      end;end;

Espero que isto te ajude!!!

 

Barrakuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.