抱歉!!!问题没有输全。在Win2000下获取各种系统硬件信息。硬盘序列号。主板序列号CPU序列号等

解决方案 »

  1.   

    一、 用GetDriveType函数获取磁盘信息 
      Lbl_DriveType:Tlabel;
      DriveType:WORD; //定义驱动器类型变量
      DriveType:=GetDriveType(RootPathName); //获得RootPathName所对应的磁盘驱动器信息
      case DriveType of
      DRIVE_REMOVABLE:Lbl_DriveType.Caption:= '软盘驱动器';
      DRIVE_FIXED : Lbl_DriveType.Caption:= '硬盘驱动器';
      DRIVE_REMOTE: Lbl_DriveType.Caption:= '网络驱动器';
      DRIVE_CDROM: Lbl_DriveType.Caption:= '光盘驱动器';
      DRIVE_RAMDISK: Lbl_DriveType.Caption:= '内存虚拟盘';
      end; //将该磁盘信息显示在Lbl_DriveType中
      二、 用GlobalMemoryStatus函数获取内存使用信息
      MemStatus: TMEMORYSTATUS; //定义内存结构变量
      Lbl_Memory:Tlabel;
      MemStatus.dwLength := size of(TMEMORYSTATU
    S);
      GlobalMemoryStatus(MemStatus); //返回内存使用信息
       Lbl_Memory.Caption := format('共有内存: %d KB 可用内存: %dKB',[MemStatus.dwAvailPhys div 1024,MemStatus.dwTotalPhys div 1024]);
      //将内存信息显示在Lbl_Memory中
      三、 用GetSystemInfo函数获取CPU信息
      SysInfo: TSYSTEMINFO;
      Lbl_CPUName:Tlabel;
      GetSystemInfo(SysInfo);//获得CPU信息
      case SysInfo.dwProcessorType of
      PROCESSOR_INTEL_386:Lbl_CPUName.Caption:=format('%d%s',[SysInfo.dwNumber Of Processors,'Intel80386']);
      PROCESSOR_INTEL_486:Lbl_CPUName.Caption:=format('%d%s',[SysInfo.dwNumber Of Processors, 'Intel 80486']);
      PROCESSOR_INTEL_PENTIUM:Lbl_CPUName.Caption:=format('%d%s',[SysInfo.dwNum
    berOfProcessors, 'Intel Pentium']);
      PROCESSOR_MIPS_R4000:Lbl_CPUName.Caption:=format('%d%s',[SysInfo.dwNumberOfProcessors, 'MIPS R4000']);
      PROCESSOR_ALPHA_21064:Lbl_CPUName.Caption:=format('%d%s',[SysInfo.dwNumberOfProcessors, 'ALPHA 21064']);
      end;//把CPU信息显示在Lbl_CPUName中。
      

  2.   

    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)。');        //检测CD-ROM,是否有光盘
            GetMem(volname, 255);
            GetMem(filesysname, 100);
            for name :='C' to 'Z'  do//循环检测A~Z
            begin
                    drvname := name + ':';
                    CDtype := GetDriveType(PCHAR(@drvname[1])); //获得磁盘类型
                    if (CDtype = DRIVE_CDROM) then
                    begin
                            Memo1.Lines.Add('您的光驱盘符为[' + drvname + ']');
                            volname^ := Chr(0);
                            filesysname^ := Chr(0);
                            if ( not (GetVolumeInformation(PCHAR(@drvname[1]), volname, 250, LPDWORD(@sno), LPDWORD(@maxl)^, LPDWORD(@fileflag)^, filesysname,100))) then
                                    Memo1.Lines.Add(drvname + '驱中没有发现光盘') //如果返回值为假
                            else //如果返回值为真
                            begin
                                    Memo1.Lines.Add (drvname + '驱中光盘卷标为: [' + String(volname) + ']');
                                    Memo1.Lines.Add (drvname + '驱中光盘序号为: [' + inttostr(sno) + ']');
                            end;
                    end;
            end;
            FreeMem(volname);
            FreeMem(filesysname)
    end;
      

  3.   

    硬盘的这里有,其它的不知道
    function GetHDSerialNumber: LongInt;
    {$IFDEF WIN32}
    var
      pdw : pDWord;
      mc, fl : dword;
    {$ENDIF}
    begin
      {$IfDef WIN32}
      New(pdw);
      GetVolumeInformation(nil,nil,0,pdw,mc,fl,nil,0);
      Result := pdw^;
      dispose(pdw);
      {$ELSE}
      Result := GetWinFlags;
      {$ENDIF}
    end;
      

  4.   

    Hard disk serial number
    Question
    Is there anyone who knows how to obtain the hard disk serial number?
    Answer
    I have an unit to get the Hd Name and the Hd Serial number for Borland
    Pascal 7.0. I don't know if it's working with Delphi and the other thing is
    that it is in dutch and I don't have time to translate it in englisch. Mayby
    you can use it, otherwise drop it out of the window.
    Unit HardDisk;
    INTERFACE
    FUNCTION  GetHardDiskNaam  : STRING;
    FUNCTION  GetHardDiskSerieNummer        : STRING;
    FUNCTION  GetHardDiskControlleNummer    : STRING;
    PROCEDURE GetHardDiskGegevens;
    CONST
      CodeerTabel : ARRAY[0..24] OF BYTE =
    (3,1,2,1,4,1,3,2,6,4,6,5,1,2,6,4,2,6,3,4,6,2,4,1,2);
    TYPE
      CharArray = ARRAY[0..24] OF CHAR;
    VAR
      HardDiskGegevens          : ARRAY[1..256] OF INTEGER;
      HardDiskNaam  : CharArray;
      SerieNummer  : CharArray;
      ControlleNummer          : CharArray;
      C_HardDiskNaam: STRING;
      C_HardDiskSerieNummer    : STRING;
      C_HardDiskControlleNummer : STRING;
      C_LicentieNaam: STRING;
    IMPLEMENTATION
    FUNCTION GetHardDiskNaam : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskNaam := '';
        Teller := 1;
        FOR Lus := 1 TO 18 DO
        BEGIN
          HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] DIV 256 ));
          Inc(Teller);
          HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskNaam := HardDiskNaam;
    END;
    FUNCTION GetHardDiskSerieNummer : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskSerieNummer := '';
        Teller := 1;
        FOR Lus := 1 TO 8 DO
        BEGIN
          SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] DIV 256 ));
          Inc(Teller);
          SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskSerieNummer := SerieNummer;
    END;
    FUNCTION GetHardDiskControlleNummer : STRING;
    VAR
      Teller : INTEGER;
      Lus    : INTEGER;
    BEGIN
        GetHardDiskControlleNummer := '';
        Teller := 1;
        FOR Lus := 1 TO 3 DO
        BEGIN
          ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] DIV 256 ));
          Inc(Teller);
          ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] MOD 256 ));
          Inc(Teller);
        END;
        GetHardDiskControlleNummer := ControlleNummer;
    END;
    PROCEDURE GetHardDiskGegevens;
    VAR
      Lus    : INTEGER;
    BEGIN
      WHILE ( Port[$1f7] <> $50) DO ;
      Port[$1F6] := $A0 ;
      Port[$1F7] := $EC ;
      WHILE ( Port[$1f7] <> $58 ) DO ;
      FOR Lus := 1 TO 256 DO
      BEGIN
        HardDiskGegevens[Lus] := Portw[$1F0] ;
      END;
    END;
    END.
      

  5.   

    我是试试CSDN论坛助手好不好用来着的~~ :-)================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  6.   

    我说怎么这么多人给它做广告呢?
    原来是自动添加的呀?嘿嘿~~我要考虑考虑是否继续使用它了 :-)免得无效文字泛滥~~~
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  7.   

    在Win2000下获取各种系统硬件信息。硬盘序列号。主板序列号CPU序列号等
      

  8.   

    这和操作系统有关系吗?和操作系统不兼容,多是由于各种WINDOWS的API函数不相同造成的!我曾经写过个系统信息查看程序,有些信息是从寄存器中读取,而非API!但硬盘序列号我调了个smartvsd.vxd文件!建议去ASM版问问!
      

  9.   

    To CoolSlob()
    ChinaOK写的这个东西不错,后面的是签名,可以在软件里改,也可以不用签名!
      

  10.   

    Win2000 不能直接读写内存地址