结果放在Memo1中。
procedure TForm1.Button1Click(Sender: TObject);
var
        systeminfo: SYSTEM_INFO;
        memory: MEMORYSTATUS;
        sector,byte,cluster,free: DWORD;
        freespace,totalspace: longint;
        CDtype: UINT;
        name: CHAR;
        drvname: string;
        volname,filesysname: PCHAR;
        sno,maxl,fileflag: DWORD;
begin
        Memo1.Lines.Clear();
        //获得CPU型号
        GetSystemInfo(systeminfo);
        Memo1.Lines.Add('您的CPU类型是:' + inttostr(systeminfo.dwProcessorType));        //获得内存状态
        memory.dwLength := sizeof(memory); //初始化
        GlobalMemoryStatus(memory);
        Memo1.Lines.Add('您的物理内存是(' + inttostr(integer(memory.dwTotalPhys div 1024 div 1024)) + 'MB)。');
        Memo1.Lines.Add('其中可用内存是(' + inttostr(integer(memory.dwTotalPhys div 1024)) + 'KB)。');        //获得C盘可用空间
        GetDiskFreeSpace('C:', LPDWORD(@sector)^, LPDWORD(@byte)^, LPDWORD(@free)^, LPDWORD(@cluster)^); //获得返回参数
        totalspace := cluster * byte * sector div 1024 div 1024; //计算总容量
        freespace := free * byte * sector div 1024 div 1024; //计算可用空间
        Memo1.Lines.Add('C盘总空间(' + inttostr(integer(totalspace)) + 'MB)。');
        Memo1.Lines.Add('C盘可用空间(' + inttostr(integer(freespace)) + 'MB)。');
end;
 

解决方案 »

  1.   

    //得到主板信息
      uses SHA1, Base64;   function GetHashedBiosInfo: string; 
      var 
        SHA1Context: TSHA1Context; 
        SHA1Digest: TSHA1Digest; 
      begin 
        // Get the BIOS data 
        SetString(Result, PChar(Ptr($F0000)), $10000); 
        // Hash the string 
        SHA1Init(SHA1Context); 
        SHA1Update(SHA1Context, PChar(Result), Length(Result)); 
        SHA1Final(SHA1Context, SHA1Digest); 
        SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest)); 
        // Return the hash string encoded in printable characters 
        Result := B64Encode(Result); 
      end; 
      function GetBiosInfoAsText: 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;   procedure procedure TForm1.Button1Click(Sender: TObject); 
      begin 
        Memo1.Lines.Text := Memo1.Lines.Text+GetBiosInfoAsText; 
      end;  
      

  2.   

    不行,第一、CPU型号不能准确得到,全部是586,不能体现如PIII,PIV,AMD;第二、获取主板型号的代码中SHA1,BASE64是什么东西?是不是需要安装其他控件?总之以上两个答案不成功,不能得分,希望能人继续提供代码。
      

  3.   

    主板ID:
    TCPUIDARRAY=array[1..4] of Longint;
    function GetCPUID : TCPUIDARRAY; assembler;register;
    asm
      PUSH    EBX         {Save affected register}
      PUSH    EDI
      MOV     EDI,EAX     {@Resukt}
      MOV     EAX,1
      DW      $A20F       {CPUID Command}
      STOSD {CPUID[1]}
      MOV     EAX,EBX
      STOSD               {CPUID[2]}
      MOV     EAX,ECX
      STOSD               {CPUID[3]}
      MOV     EAX,EDX
      STOSD               {CPUID[4]}
      POP     EDI {Restore registers}
      POP     EBX
    end;
      

  4.   

    读硬盘序列号:
    http://www.delphibbs.com/delphibbs/dispq.asp?LID=339210