⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_40802.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:40802 发表者:pingping0615 发表日期:2003-05-21 17:08:20
<br>主题:关于cpu的api函数
<br>内容:急球可以检测到cpu利用率的api函数(2000,xp下的)
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:michael 回复日期:2003-05-21 17:18:51
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM_TIME_INFORMATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysTimeInfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM_BASIC_INFORMATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SysBaseInfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbIdleTime;<BR>&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbSystemTime;<BR>&nbsp;&nbsp;&nbsp;&nbsp;LONG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status;<BR>&nbsp;&nbsp;&nbsp;&nbsp;static LARGE_INTEGER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; liOldIdleTime = {0,0};<BR>&nbsp;&nbsp;&nbsp;&nbsp;static LARGE_INTEGER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; liOldSystemTime = {0,0};<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetModuleHandle("ntdll"),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "NtQuerySystemInformation"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!NtQuerySystemInformation)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return S_FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// 得到系统中处理器数<BR>&nbsp;&nbsp;&nbsp;&nbsp;status = NtQuerySystemInformation(SystemBasicInformation,&amp;SysBaseInfo,sizeof(SysBaseInfo),NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (status != NO_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return S_FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// 得到新的系统时间<BR>&nbsp;&nbsp;&nbsp;&nbsp;status = NtQuerySystemInformation(SystemTimeInformation,&amp;SysTimeInfo,sizeof(SysTimeInfo),0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (status!=NO_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return S_FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// 得到新的CPU空闲时间<BR>&nbsp;&nbsp;&nbsp;&nbsp;status = NtQuerySystemInformation(SystemPerformanceInformation,&amp;SysPerfInfo,sizeof(SysPerfInfo),NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (status != NO_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return S_FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// 如果第一次调用跳过<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (liOldIdleTime.QuadPart != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 当前值 = 最新值 - 旧值<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 当前CPU空闲时间 = 空闲时间 / 系统时间<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbIdleTime = dbIdleTime / dbSystemTime;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 当前CPU利用率% = 100 - (当前CPU空闲时间 * 100) / 处理器数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -