获取CPU的温度的方法_第1页
获取CPU的温度的方法_第2页
获取CPU的温度的方法_第3页
获取CPU的温度的方法_第4页
获取CPU的温度的方法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

获取CPU的温度的方法在内存配置较低的计算机中(比如内存32MB,Windows98第二版),CPU的占有率是较高的,一般能够达到50%,这可能是由于系统需要CPU进行许多的运算模拟来弥补资源的不足。下面是收集获取CPU温度的方法,欢迎阅读。作为一个系统级程序员或者编程爱好者,掌握一些系统的高级编程技巧是非常有意义的。本文将介绍如何利用一些高级的编程技巧来实现动态监控。虽然Windows98"系统工具”中的“资源状况”程序能够监视CPU的资源占用状况,但是那些相关的数据却无法传递到我们自己的程序中。为此,笔者用VB6编写了一个具有上述功能的CPU监视软件,它可以实现对CPU资源状况的监视并取得有关数据,并且能够显示到一个精致的图示窗口中。编程原理CPU的资源占用情况真正反映在CMOS中,但是如果我们直接从这里开始编程,那将是一件非常复杂的工作。幸好,Windows98已经帮我们做好了这一步,它的底层技术能够从CMOS中获取CPU的资源占用状况参数并且记录到注册表中“HKEY_DYN_DATA\PerfStats\StatData”的分支“KERNEL\CPUUsage”中,通过周期性地读取该键的键值,并且将参数传递到我们自己制作的监视器界面或者有关变量中,就可以即时获得并反映出CPU的使用状况了。本程序的关键是以通用的方法获取相关键值并反映输出到自制的动态进度监视器上,为了更有利于观察、分析,我们将添加一个简单的趋势分析平均线。通过本文,初学者还将能了解如何从注册表的指定项获取数据和利用Picture控件实现进度指示器的编程技巧。.设计程序界面首先运行VB6中文版,建立一个标准的exe工程,将窗体命名为frmmain,borderstyle属性设为:3-fixed,caption,属性设置为空;接着添加一个frame控件一一"frame1",caption属性设置为空,再添加picturebox控件pctPrg,前景色为绿色,背景色为浅红色;最后添加一个定时器控件一一"timer”,interval设置为100(当然,也可以根据自己的需要设置读取间隔),enabled设置为true,其他的属性采用系统的默认值,调整窗体和控件到适当位置和适当大小即可(参见附图)。2.编写程序代码,双击窗体frmmain并输入以下代码OptionExplicit'变量检查PrivateDeclareFunctionRegQueryValueExLib"advapi32.dll"Alias"RegQueryValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,lpTypeAsLong,lpDataAsAny,lpcbDataAsLong)AsLong'获取一个指定的注册表项的设置值PrivateDeclareFunctionRegOpenKeyLib"advapi32.dll"Alias"RegOpenKeyA"(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong'打开一个指定的的注册表项PrivateDeclareFunctionRegCloseKeyLib"advapi32.dll"(ByValhKeyAsLong)AsLong'关闭系统注册表中的指定项(或指定键)PrivateConstREG_DWORD=4PrivateConstHKEY_DYN_DATA=&&H80000006'这两个常数是读写注册表必须的'以上API函数和常数结合能够实现对注册表任意指定项的访问PrivateAvgAsLong'CPU资源占用参数平均数PrivateSumAsLong'CPU资源占用参数合计数PrivateIndexAsLong'统计次数'窗体级函数、常数和变量声明结束PrivateFunctionGetCPUUsage()AsLongOnErrorResumeNext'忽略可能产生的错误DimDataAsLong,TypAsLong,SizeAsLongDimhKeyAsLongDimhRetAsLonghRet=RegOpenKey(HKEY_DYN_DATA,"PerfStats\StatData",hKey)'打开该主键hRet=RegQueryValueEx(hKey,"KERNEL\CPUUsage",0&&,REG_DWORD,Data,4)'读取主键值GetCPUUsage=Data'为自定义函数赋值hRet=RegCloseKey(hKey)'关闭该主键EndFunctionPrivateSubForm_Load()'初始化标题和提示信息DimhKeyAsLong,DataAsLongApp.Title="CPU监视器占有率:”Me.Caption=App.Title'初始化应用程序标题栏pctPrg.ToolTipText="单击右键退出程序!"RegOpenKeyHKEY_DYN_DATA,"PerfStats\StartStat",hKeyRegQueryValueExhKey,"KERNEL\CPUUsage",0,REG_DWORD,Data,4RegCloseKeyhKey'打开注册表的资源监控标识EndSubPrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)'程序结束前关闭定时器Timer.Enabled=FalseEndSubPrivateSubForm_Unload(CancelAsInteger)End'结束程序EndSubPrivateSubpctPrg_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)'右键单击退出程序IfButton=2ThenUnloadMeEndIfEndSubPrivateSubTimer_Timer()'利用定时器周期性地读取资源状况'本程序每隔0.1秒读取一次数据DimtmpAsLong'CPU资源占用状况参数tmp=GetCPUUsage'获得参数Me.Caption=App.Title&&FormatPercent(tmp/100)''在窗体标题栏用百分比数字形式反映占用率Sum=Sum+tmp'累加统计Index=Index+1'次数统计Avg=Int(Sum/Index)'求平均值pctPrg.Cls'清除图示内容pctPrg.Line(0,0)-(tmp,18),,&&BF'以绿色图示资源占用状况pctPrg.Line(Avg,0)-(Avg,18),&&HFF'以深红色画出平均线pctPrg.Line(Avg+1,0)-(Avg+1,18),&&HFFEndSub'程序结束通过以上步骤,装备精良的CPU监视器就制作完成了。注意事项需要说明的是,在内存配置较低的计算机中(比如内存32MB,Windows98第二版),CPU的占有率是较高的,一般能够达到50%,这可能是由于系统需要CPU进行许多的运算模拟来弥补资源的不足。然而在88MB内存,同样操作系统的机器上,占有率一般只有10%。另外,本文主窗体中定时器运行过程函数中调用的FormatPercent函数是VB6.0新添加的一个函数,它的作用是将一个表达式转化成百分数。用VB5.0开发的读者需要采取其他变通方法,以实现监控CPU功能。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论