通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>操作系统>>注册表>>正文 新版上线![旧版]
注:打开慢时请稍等

利用WindowsAPI函数和注册表获取系统信息

http://www.iyit.net  日期:2006-6-28 18:17:44  来源:  点击:
参加讨论】在 开 发 应 用 程 序 时, 增 加 一 项 显 示 计 算 机 系 统 信 息 的 功 能, 例 如 已 安 装 的 软 盘、 硬 盘、 光 驱、 网 络 驱 动 器, 硬 盘 的 容 量 和 剩 余 空 间, 显 示 器 分 辨 率、 键 盘 类 型、 鼠 标 的 键 数, 内 存 大 小、CPU 类 型,Windows 的 版 本 号、 产 品 标 识、 注 册 用 户 单 位 名 和 用 户 名、 当 前 操 作 用 户 名 等( 见 运 行 图 示), 当 然 还 有 更 多 的 信 息, 这 样 会 使 你 的 程 序 更 友 好。 其 实, 有 很 多 应 用 程 序 就 是 这 样 做 的。

  通 过 调 用Windows 的API 函 数 和 访 问Windows 注 册 表, 可 以 获 取 大 量 的 系 统 信 息。Delphi 为 绝 大 多 数Windows API 函 数 提 供 了 调 用 接 口( 可 参 见DELPHI3\SOURCE\RTL\WIN\windows.pas 文 件), 并 提 供 了 一 个 功 能 全 面 的TRegistry 类, 使 我 们 可 以 方 便 的 调 用Windows API 函 数 和 访 问 注 册 表, 例 如: www.xker.com()

  1、function GetDriveType(lpRootPathName: PChar): UINT; 返 回 指 定 驱 动 器 的 类 型。

  2、function GetDiskFreeSpace(lpRootPathName: PChar; var lpSectorsPerCluster, lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; 返 回 指 定 驱 动 器 的 总 簇 数、 剩 余 簇 数 及 每 簇 扇 区 数、 每 扇 区 字 节 数, 从 而 可 以 计 算 出 总 容 量 和 剩 余 空 间。

  3、function GetSystemMetrics(SM_CXSCREEN或 SM_CYSCREEN): Integer; 返 回 显 示 器 分 辨 率。

  4、function GetSystemMetrics(SM_CMOUSEBUTTONS): Integer; 返 回 鼠 标 的 按 键 数 目。

  5、 在windows 注 册 表 的HKEY_LOCAL_MACHINE\ software\microsoft\windows\currentversion \RegisteredOwner 主 键 下 存 放 着Windows 安 装 时 输 入 的 用 户 名, 可 用 以 下 语 句 读 取。

myreg:=Tregistry.Create;
file://必须在程序单元的uses部分加入Registry
myreg.RootKey:=HKEY_LOCAL_MACHINE;
if myreg.openkey('software\microsoft \windows\currentversion',false) then
 memo1.lines.add(' 注册用户名: '+myreg.readstring('RegisteredOwner'));
 myreg.closekey;

  以 上 仅 举 几 例, 获 取 其 他 一 些 信 息 的 方 法 与 此 类 似, 详 见 源 程 序。

  本 程 序 在Pwin95、Delphi3 下 调 试 通 过。

  附: 源 程 序 清 单。

unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Registry;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i,x,y:integer;
ch:char; file://驱动器字符'A'~'Z'
buffer:string;
cpuinfo:TSYSTEMINFO; file://存放系统信息的记录类型,在Windows.pas中查到详细内容。
meminfo:TMemoryStatus; file://存放系统内存信息的记录类型。
computername,username:pchar; file://计算机名称、用户名
spc,bps,nofc,tnoc:longint; file://用于存放磁盘容量的变量
myreg:Tregistry; file://用于访问注册表的TRegistry变量
begin
memo1.Lines.Clear;

for ch:='A' to 'Z' do begin
i:=getdrivetype(pchar(ch+':\'));
buffer:=' '+ch+': ';
case i of
DRIVE_UNKNOWN : buffer:=buffer+'未知类型';
DRIVE_REMOVABLE: buffer:=buffer+'软盘';
DRIVE_FIXED : begin
buffer:=buffer+'硬盘';
if getdiskfreespace(pchar(ch+':\'),spc,bps,nofc,tnoc) then
begin
buffer:=buffer+'总容量: '+inttostr((spc*bps*tnoc) div (1024*1024))+'MB';
buffer:=buffer+'剩余: '+inttostr((spc*bps*nofc) div (1024*1024))+'MB';
end;
end;
DRIVE_REMOTE : buffer:=buffer+'网络驱动器';
DRIVE_CDROM :buffer:=buffer+'CD-ROM驱动器';
DRIVE_RAMDISK:buffer:=buffer+'RAM虚拟驱动器';
end;
if (ch >'D') and (i=1) then break;
if i< >1 then memo1.Lines.Add(buffer);
end;

case getkeyboardtype(0) of file://获取键盘类型
1: buffer:=' 键盘: IBM PC/XT或兼容类型(83键)';
2: buffer:=' 键盘: Olivetti "ICO"(102键)';
3: buffer:=' 键盘: IBM PC/AT(84键)';
4: buffer:=' 键盘: IBM增强型(101或102键)';
5: buffer:=' 键盘: Nokia 1050';
6: buffer:=' 键盘: Nokia 9140';
7: buffer:=' 键盘: Japanese';
end;
memo1.lines.add(buffer);

file://获取键盘功能键数目
memo1.lines.add(' 功能键数目: '+inttostr(getkeyboardtype(2)));

memo1.Lines.add('显示器分辨率: '+inttostr(getsystemmetrics(SM_CXSCREEN)) +'x'+
inttostr(getsystemmetrics(SM_CYSCREEN)));
file://获取鼠标按键数目
memo1.Lines.add(' 鼠标: '+inttostr(getsystemmetrics(SM_CMOUSEBUTTONS))+'键');

globalmemorystatus(meminfo); file://获取系统内存数量
memo1.lines.add(' 物理内存: '+inttostr(meminfo.dwTotalPhys div 1024)+' KB');

i:=getsystemmetrics(SM_CLEANBOOT);
case i of
0:buffer:='系统启动模式:正常模式';
1:buffer:='系统启动模式:保护模式';
2:buffer:='系统启动模式:网络保护模式';
end;
memo1.lines.add(buffer);

x:=getsystemmetrics(SM_ARRANGE);
file://获取系统最小化窗口的起始位置和排列方式
y:=x;
x:=x and 3;
y:=y and 12;
case x of
ARW_BOTTOMLEFT : buffer:=' 最小化窗口:自左下角';
ARW_BOTTOMRIGHT : buffer:=' 最小化窗口:自右下角';
ARW_TOPLEFT : buffer:=' 最小化窗口:自左上角';
ARW_TOPRIGHT : buffer:=' 最小化窗口:自右上角';
end;
case y of
ARW_LEFT : buffer:=buffer+'横向排列';
ARW_UP : buffer:=buffer+'纵向排列';
ARW_HIDE : buffer:=buffer+'隐藏';
end;
memo1.lines.add(buffer);

getmem(computername,255); file://获取计算机名称和用户名
getmem(username,255);
i:=255;
getcomputername(computername,i);
memo1.lines.add(' 计算机名称: '+computername);
getusername(username,i);
memo1.lines.add(' 用户名: '+username);
freemem(computername);
freemem(username);

getsysteminfo(cpuinfo); file://获取CPU类型
case cpuinfo.dwProcessorType of
386 : buffer:=' CPU类型: 386';
486 : buffer:=' CPU类型: 486';
586 : buffer:=' CPU类型: Pentium';
end;
memo1.Lines.add(buffer);

file://从注册表中获取CPU标识,Windows版本,
产品标识,注册单位名称及用户名
myreg:=Tregistry.Create;
myreg.RootKey:=HKEY_LOCAL_MACHINE;
if myreg.OpenKey('hardware\description\
system\centralprocessor\0',false) then
memo1.lines.add(' CPU标识:
'+myreg.ReadString('VendorIdentifier'));
myreg.closekey;
if myreg.openkey('software\microsoft\ windows\currentversion',false) then
begin
memo1.lines.add(' windows版本: '+myreg.ReadString('Version'));
memo1.lines.add(' 版本号: '+myreg.ReadString('VersionNumber')+' '+myreg.ReadString('Subversionnumber'));
memo1.lines.add(' 产品标识: '+myreg.Readstring('ProductID'));
memo1.lines.add('注册单位名称: '+myreg.readstring('RegisteredOrganization'));
memo1.lines.add(' 注册用户名: '+myreg.readstring('RegisteredOwner'));
end;
myreg.CloseKey;
myreg.Free;
end;
end


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:MS-DOS方式下对注册表的编程
下一篇:在VB中使用注册表
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
微软Windows徽标做法一例 xp启动加速 启动优化 想慢都不行 c#写的五子棋程序,供学习WinForms的鼠
如何在C#的WinForm中制作饼状图和柱状图 vb.net的windows窗体实现dos命令 如何用.NET创建Windows服务
C#中调用Windows API的要点 Win中Net命令的另类用法  Windows.NET Server: XML Web 服务
用Swing实现数据表格功能 在Windows NT 4.0下安装Apache+Servlet 在WIN2000下的jsp的安装
在Windows/NT上建立JSP环境 win2k下搭建jsp环境 JSP在win2000下的安装 
在windows环境下安装tomcat 在windows环境下安装tomcat win2k在apache1.3上配置tomcat3.1
Windows下JSP开发环境的配置 win2000server IIS和tomcat5多站点配置 WIN2000+PHP+MYSQL+TOMCAT+JSP完全整合
Windows2000下Apache2.0.46与Tomcat5.0 WIN98/2000下的jsp服务器 win2000下jsp平台搭建的简单过程
最新更新 热点排行 推荐新闻
VB.NET注册表编程
让注册表记住VFP应用程序的使用次数
在VB中使用注册表
利用WindowsAPI函数和注册表获取系统信
MS-DOS方式下对注册表的编程
VB.NET注册表编程
让注册表记住VFP应用程序的使用次数
在VB中使用注册表
利用WindowsAPI函数和注册表获取系统信
MS-DOS方式下对注册表的编程
用注册表给应用程序加口令
对注册表进行编程的“捷径”
用VB函数轻松访问系统注册表
在VB中调用API操作注册表
编程解决注册表问题所需的函数详解
VB.NET注册表编程
让注册表记住VFP应用程序的使用次数
在VB中使用注册表
利用WindowsAPI函数和注册表获取系统信
MS-DOS方式下对注册表的编程
微软将于6月13日发布WORD漏洞补丁
PPLive最新内部版本揭密
移花接木-照片换脸术
CPU降温软件
借助黑龙江网通免费刷取QQ会员
KMPlayer常见问题及解决方法整理
解决局域网不能互相访问之全攻略
用Photoshop替换颜色做漂亮效果图
NERO刻录使用教程
某外企SQL Server面试题
共享软件的十大破解工具推荐
重庆青年建立个人网站 每月固定收入约
没见过 是读卡器也是刻录机!
ASP.NET2.0数据库入门之常见错误
威金蠕虫肆虐互联网 发送病毒链接迅速
流氓软件拉MSN用户征婚 伪装好友发邀请
网际快车1.72完全免费无广告、下载地址
拼音加加VS紫光输入法
给年轻工程师的“十大忠告” 
巧用CSS滤镜做图案文字
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息