首页  编辑  

获取硬件信息

Tags: /超级猛料/Hardware.硬件相关/其它硬件/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` 几个基本的例子,由此可演化得到许多硬件信息。

结果放在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)。');

       //检测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;