说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一个小巧精致的CPU监视器 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
一个小巧精致的CPU监视器 -VB资料
我们在运行一些系统占用率比较高的程序时,为了避免出现资源不足而运行失败或者速度非常慢的情况,应该首先确定当前的CPU使用情况。我们一般是使用“系统工具”中的“资源状况”工具,它虽然比较全面和易用,但是自身却又消耗了较多资源,而且它的那些附属的功能都是我们所不需要的,因此,我们可以考虑自己编程实现对CPU资源状况的监视。笔者经过一番探索,开发了一个小巧精致的CPU监视器,它不仅界面友好,而且占用资源极少,确实可以取代windows的“资源状况”程序(见图1)。
  (一)编程原理;
  CPU的资源占用状况被记载在注册表的项目HKEY_DYN_DATA\PerfStats\StatData分支“KERNEL\CPUUsage"中,通过周期性的读取该键的键值,并且将参数传递到我们自己制作的监视器界面中,使之相应的变化,这就可以即时反映出CPU的使用状况了。本文程序中的关键是相关键值的读取和反映输出到监视器上。
  (二)编程实践;
  (1)设计程序界面;
  为了达到较小CPU占有率,必须将应用程序设计的既能够全面反映问题,又能够尽量的小。首先建立一个标准exe工程,将窗体命名为frmmain,borderstyle属性为3-fixed,caption属性为空白,添加一个frame控件“frame1”,caption属性为空白,添加picturebox控件,前景色为绿色,背景色为浅红色,添加一个定时器控件“timer”,interval设置为100,enabled为true,其他的属性采用系统的默认值即可,调整窗体和控件到适当位置和适当大小,效果如图2所示即可。
  双击窗体frmmain,写入以下代码:
  Option Explicit
  Private Const LP-HT-CAPTION = 2
  Private Const WM-NCLBUTTONDOWN = &HA1
  Private Declare Function ReleaseCapture Lib “user32" () As Long
  Private Declare Function SendMessage Lib “user32" Alias“SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  Private CPU As New CPUUsage
  Private Avg As Long
  Private Sum As Long
  Private Index As Long
  Private Sub Form_Load()
  Me.Caption = App.Title ‘初始化应用程序标题栏
  CPU.InitCPUUsage
  End Sub
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ‘程序结束前关闭定时器和释放内存
  Timer.Enabled = False
  Set CPU = Nothing
  Cancel = 0
  End Sub
  Private Sub Frame1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘用左键可以拖动程序
  Call Form_MouseDown(Button, Shift, X, Y)
  End Sub
  Private Sub pctPrg_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘右键单击退出程序
  If Button = 2 Then
  Unload Me
  End
  End If
  Call Form_MouseDown(Button, Shift, X, Y)
  End Sub
  Private Sub Timer_Timer() ‘利用定时器周期性的读取资源状况
  Dim tmp As Long
  tmp = CPU.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), &HFF
  ‘用图式形式反映占用率
  End Sub
  Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘使程序可以被拖动
  Dim rc As Long
  rc = ReleaseCapture
  rc = SendMessage(hwnd, WM-NCLBUTTONDOWN, LP_HT-CAPTION, ByVal 0&)
  End Sub
  (2)编写读取注册表中CPU使用状况的类模块;
  添加一个类模块,命名为“CPUusage”,写入以下代码:
  Option Explicit
  Private Declare Function RegQueryValueEx Lib “advapi32.dll" Alias “RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  Private Declare Function RegOpenKey Lib“advapi32.dll" Alias “RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  Private Declare Function RegCloseKey Lib“advapi32.dll" (ByVal hKey As Long) As Long
  Private Const REG_DWORD = 4
  Private Const HKEY_DYN_DATA = &H80000006
  Public Sub InitCPUUsage()
  Dim Data As Long, Typ As Long, Size As Long
  Dim hKey As Long, hRet As Long
  hRet = RegOpenKey(HKEY-DYN-DATA, “PerfStats\StartStat", hKey)
  hRet = Reg QueryValueEx(hKey, “KERNEL\CPUUsage", 0, REG-DWORD, Data, 4)
  hRet = RegCloseKey(hKey)
  End Sub
  Public Function GetCPUUsage() As Long
  On Error GoTo eee ‘如果注册表错误的话转到eee:
  Dim Data As Long, Typ As Long, Size As Long
  Dim hKey As Long
  Dim hRet As Long
  hRet = RegOpenKey(HKEY-DYN-DATA,“PerfStats\StatData", hKey) ‘打开主键
  hRet = RegQueryValueEx(hKey, “KERNEL\CPUUsage", 0&, REG_DWORD, Data, 4) ‘读取参数
  GetCPUUsage = Data
  hRet = RegCloseKey(hKey)
  Exit Function
  eee:
  MsgBox “注册表参数读取出现了错误!", vbExclamation
  End Function
  好了,一个装备精良的CPU监视器制造完毕,寥寥几行代码确可以完成一项大工作。另外,使用vb5的朋友注意了,本文主窗体中定时器运行过程函数中的FormatPercent函数只能在vb6中使用,它的作用是将一个表达式转化成百分数,你必须采用其他的变通方法,其他代码全部通用。
  对于国内的程序员来说,涉及windows高级编程的相关资料和示例代码非常少,这在一定程度上限制了程序员的开发高级应用程序能力。本文中的示例不仅仅涉及了注册表的读取,而且演示了图示的技巧,希望诸位编程高手能够有所借鉴和斧正。
  (河南 新天)
图象放大镜——实现图象局部放大的原理和方法-Delphi资料 图形的特殊显示效果-Delphi资料 图形整体拉出效果-Delphi资料 一个实用的Delphi屏幕拷贝程序的设计 用Delphi 显示122种图形特效 用Delphi编写DLL实现动态改变分辨率 用Delphi进行OpenGL编程学习心得 用Delphi开发windows95屏幕保护预览程序 用Delphi实现壁纸更换 用DELPHI实现位图显示特技 用DELPHI中Canvas特性开发图形软件 用构件变换法实现动画效果-Delphi资料 在Delphi中使用动态图标 在Delphi中显示Windows图标 在多媒体文件中批量抓取图象-Delphi资料 怎样读出不同格式图形的高和宽-Delphi资料 怎样使用PageUp、PageDown滚动窗体-Delphi资料 怎样制作全透明的窗口-Delphi资料 DELPHI:FormContainer简易手册 Delphi:用FormContainer渐变效果 Delphi4的窗口融合技术 Delphi使用技巧ABC Delphi使用技巧四则 DELPHI中自适应表单的实现 TList的用法-Delphi资料 不规则窗口的实现-Delphi资料 不用标题栏也移动窗体-Delphi资料 窗口建立和关闭时的特效-Delphi资料 窗口中状态行的显示-Delphi资料 动态提示的可视化实现-Delphi资料 动态修改显示器分辨率-Delphi资料 PB 连接 SQL SERVER 2000 问题(多用户无响应!!) 关于Pointer类型数据和自定义的数据类型(Record),TList的保存问题。 请问哪里有《WRITING WINDOWS VXD AND DEVICE DRIVER》下载,中英文皆可,作者KAREN HAZZAH 还是#pragma的问题请教高手 用鼠标选定图形应该怎么做? !!!超长数字,大家猜猜,欢迎灌水!!!! 关于localhost不能直接连接的问题 请问一个很简单的问题,做了一个查询功能,如果没有查到记录,怎样做才能提示:没有满足条件的记录!的这样的信息呢?很菜的问题! 如何在浏览器客户端上载一个文件,传送到SERVER数据库? 关于求余和with语句 各位各位,小弟有新发现哦,爽。 我想学GIS (dos高手的挑战!!!)如何在dos下对声卡编程选通CD-IN通道,实现CD播放 jdbc连接oracle8i的问题?急。 如何用<logic:iterate>与<html:radio>配合将<logic:iterate>的列出多项列表项,从中选定一项,并对该项进行操作?如何联系?谢谢!急用! 哪有jbuilder中文版文档 请问怎样将整个屏幕拷贝到一个Image对象? 如何在vbscript中获取javascript取得的下拉菜单所选择的值?(急,在线等) 在聊天室中服务器的socket怎么和多个客户端的socket建立连接? 如何在Post以后保存Post之前的值 史上最恐怖的10个鬼故事!!! j2ee中的EAR 和war是怎么生成的,具体用什么工具,怎么生成的 紧急降落求救(在线等待)…………谁能告诉这个水晶报表的问题04, 图形如何和数据库关联? 积分运算? 急!!! 怎样在RowFilter中用函数表达式, 如SubString, ToString等? VB中的WINSOCK在哪里?我打开VB找了半天没找到这个控件,真衰 请教.... 能否在autoexec.bat的内容里: path ......... 加上 ;c:\windows \.....之类的? tomcat 4 中配置JDBCRealm的问题。急啊!! mysql怎么用money类型的数据? 会用FileGateway的进来 服务器配置(jdk1.3+tomcat或jswdk) 关于dreamweaver mx的font preference设置 redhat9.0的安装问题 如何获取文件上传者的IP地址?(马上给分)万分感激,在线等待. 各位大侠帮帮忙!急!!!有高分! 如何删除用户控件 请问我将汉字写入一个HTML文件,但显示出来是乱码..有没有解决办法 请教各位前辈,继续提问关于《Visual basic 与RSC232/485串行通信》的问题 高分求救---如何把wma文件转成mp3文件 200分求购自动动生成的缩略图的代码???不够有分加 struts中的分页问题? 在delphi如何中为web中的数据与程序通信... 按web页查看时出的问题!!请高手帮助 一天一小问,请教请教,今天问连接数据库问题! 郁闷中,哪们大哥帮帮我! 正式接到SCJD Assignment, 进入努力状态中. :) 我用的是2000系统,最近老是弹出信使服务的窗口 ,怎么样才能拒绝这样的消息? 关于逗号表达式值的问题 菜的问题,请指教 有下列五个命题,其中正确的是 ①{x|x2+4x-5=0}表示二次方程x2+4x-5=0的解集字有些草 请见谅 在三角形ABC中,顶点A,B和内心坐标分别为A(9,1)B(3.4)I(4,1),求C点坐标.除了设C(x,y),列距离相等方程还有其他方法么? 欢乐斗地主里面的倍数是怎么算的 因式分解(1)a^5b-16ab^5 (2)x²-y²+4y-4 已知△ABC的三个顶点A(4,0),B(8,10),C(0,6)求过B点且与A,C距离相等的直线方程 HELP ME 1."山重水复疑无路,柳暗花明又一村"是出自___的2.野艾_______________(是解释意思哦,我怀疑野艾是一种植物.)3.阅读:发现 (闻一多)我来了,我喊一声,迸着血泪,"这不是我的中华,不对,不对!"我 证明命题:“存在一个实数x,使得x2-4x+5<=0”为假命题 2006*20052006-2005*20062005的简便计算过程 能不能用伟岸形容女人, 急::>__ f(x)=1/3*x^3-a/2*x^2+(2-b)x-2,a,b∈R,已知f(x)在区间(1,2)内存在两个极值点,求证:0 六年级下册语文冲刺一百分第二单元答案,由回答的人说要多少分,30分左右, 谁有因成绩子女与父母发生隔阂的作文 设x=1,x=2是f(x)=ax³+bx²+6x+1的两个极值点.求(1)a,b (2)求f(x)的单调区间设x=1,x=2是f(x)=ax³+bx²+6x+1的两个极值点.求(1)a,b(2)求f(x)的单调区间 《哀溺》中,那人被淹死的直接原因是——;根本原因是——.(用自己话回答)请语文天才们帮帮忙!这是原文:永之氓咸善游.一日,水暴甚,有五、六氓乘小船绝湘水.中济,船破,皆游.其一氓尽 黄河颂 主旨课文黄河颂的主旨 求抛物线y=-1/2x^2-x+3/2顶点坐标与对称轴,当x取何值时,y随x的增大而增大?,当x取何值时,y随x的减小而减小? 13.14.15题 y=-x^2+2x+3 当x取什么值时y随x的增大而减小 2005+2006乘20052005减2005乘20062006加1得几多?一定要下过程啊! 50的倍数一定是2的倍数,对还是错 谁有子女与父母发生隔阂的作文 2005乘20062006减2006乘20052005等于多少? 50/0.2=250,所以说50是0.2的倍数,0.2是50的因数.对还是错. 抛物线Y=A[X+2]的平方-1交x轴ab两点a在b的左边且ab=2求抛物线解析式急, 已知两点A(-8,0),B(2,0),以AB为直径的半圆与y轴正半轴交于点C.求经过A、B、C三点的抛物线的解析 学神快来,help~ 已知抛物线的顶点是从(1,16)且与x轴交于A/B两点(A在B的左边)若AB=8,求该抛物线的解析式 如图,抛物线的图象经过A(-1,0)、B(4,0)、C三点,点C在Y轴的正版轴上,且AB=OC.(1)求点C的坐标(2)求这个抛物线的解析式及此二次函数的最大值. 学神们,Who can help me? 已知弧长3557mm 高为1160mm 弦长2300mm 求弧形面积.公式也给我 1.计算:∫上限1下限0 x(根号(1-x^2) dx 2.∫上线pi/2下线0 cosx^3sinx dX 第一次用作业帮提问,学神们,help help , 弧形面积!弦长1464mm弦高290mm. 已知抛物线y=x²+bx+c经过点(2,-1)和(4,3) 求这个抛物线的解析式 上帝啊 让学霸help me吧 已知弧长为1478.12mm,高为180mm,弦长1417.96,求弧形的面积! 21题,学霸help help谢谢 神们~help! 高中人教版英语基础知识总结,help me! 三颗纽扣的房子告诉了人们什么道理 一道数字推理题~Help!4,3,8,6,12,12,(),()后面两个空填什么啊?答案是16,24,可是我怎么也找不出规律,Thans very much!我没有分,但是我有一颗真挚的心♡♡♡♡♡♡♡♡b 头盔的英文是什么?help 四年级上册中文章三颗纽扣的房子的问题(四年级的回答)看来问题不在于小房子,而在于心 这句话是怎样理解的 我会用数学那题,请学霸help me 求不积分:!)∫[e^(2x)-1]/(e^x+1) dx 2)∫(1+x+x^2)/x(1+x^2) dx3)∫(tanx+cotx)^2 dx 4)∫[1/(sinx)^2.(cosx)^2] dx 美国动漫讲述了一个小女孩在屋子里发现了一个小门然后钻进去了来到一个布偶世界 还有女巫那扣子缝眼睛美国动漫讲述了一个小女孩在屋子里发现了一个小门然后钻进去了来到一个布偶世 二次函数y=ax^2+bx+c 的图像与X轴的负半轴相交于点A,与X轴的正半轴相交于点B,与T轴交于点C,C点的坐标为(0,-3),且BO=CO, 请问:休谟关于“事实推不出价值”的原理是怎样论证的? 若命题p交q为真,-p为真,则 欢乐斗地主 200倍场倍数的问题想问下,为什么,同样的倍数,别人赢我是20万,我赢别人却只10万,还有个就是,有些人怎么要牌之后还可以明牌啊,那是怎么搞的啊 请问休谟认为简单观念与复杂观念有什么区别啊?能不能各举个例子说明一下啊? 一个 巨难 的英语句子结构的分析---务必高手帮忙(1)“Most of the infections(感染)we think of as human infections started in other animals,” says Stephen Morse, director of the Center for Public Health Preparedness at Col 初二语文问题(HELP!)1.楼因诗显,岳阳楼因范仲淹的文而名垂千古,写出让长江另外两座楼文明的诗人,标题及诗句.2.先天下之忧而忧,后天下之乐而乐,战国初期孟子说过的类似的两句话是( 休谟在《道德原理研究》中时怎么解释正义的? 我现在是初一,这题不会做,大家帮帮忙 欢乐斗地主里的倍数是怎么算的 【因式分解】x(x+y)(x-y)-x(x+y)²进行分解因式因式分解我实在不熟 请无论如何把这道题的过程写的仔细点行吗? 三角形ABC中,顶点A(9,1) B(3,4) 内心D(4,1),则顶点C的坐标什么? 从括号内的句子中提炼成语公元383年,苻坚征调各族人民,组成78万人的军队南下进攻东晋.因为根据情报,东晋只有十多万兵力,所以苻坚很狂妄地说:"(我的大军只要把马鞭扔进河里,就能让河断 直击“机动-5号”实兵演习:势均力敌朝鲜完成军方人事布局 举行2万人连级人社部:机关事业单位将建职业年金海军三大舰队首次在西太平洋预定海区展杭州临安警方破获特大涉毒涉枪案 缴获德国高层代表团将赴美 跟进默克尔被窃世界最高大狗去世 站立高度达2.2米新航停飞新加坡-纽约航线 史上最长航南亚6.75亿人仍露天排便杭州市领导为杭州国内经济合作洽谈会“旧金山瞄上中国投资者多米尼加时装周 “眼睛姐”秀“电眼”非洲何时“粮食自主”?金价年内仍会维持短期强势中俄联手经贸升级版中新广州知识城主题推介会在新加坡举行世界最高大狗去世 站立高度达2.2米世界浙商大会召开执委会会议 王辉忠出记者称卡扎菲曾绑架强奸数十名女子并性前美国国安局长“私聊”遭“直播”日本新保密法引政治纷争 被称是修宪的打造沿海沿江先进装备制造产业带视力突降警惕多发性硬化症“未来医院”令人期待巴勒斯坦结束7年内部分裂打造沿海沿江先进装备制造产业带全国10城市启动雾化治疗地图项目为建设美丽广东建言谋策省直老年人竞技麻将赛闭幕海丰龙舟邀请赛尼日利亚遇袭 酒吧18人身亡创新促办“微实事” 构建多元“新体系家庭教育立法建议稿有望年内出台父为大义长沙起义 子避内战辞职读书海丰龙舟邀请赛法国核心或错过世界杯勒夫:我们带着自信去巴西冯海宁:老业主反对楼盘降价无意义张贵峰:家庭困难岂能成吃空饷借口“无掌”男子急盼“援手”医患怎样才能“化敌为友”?形成与全球投资贸易规则衔接的营商环境
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘