请问cpu及内存资源分配情况的函数是什么 想做一个类似windows2k任务管理器的东西,调用什么函数啊?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 获得cpu占用率:=====================================================参考一:// cpusagent.cpp (Windows NT/2000)//// Getting the CPU usage in percent on Windows NT/2000//// (c)2000 Ashot Oganesyan K, SmartLine, Inc// mailto:[email protected], http://www.protect-me.com, http://www.codepile.com#include <windows.h>#include <conio.h>#include <stdio.h>#define SystemBasicInformation 0#define SystemPerformanceInformation 2#define SystemTimeInformation 3#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))typedef struct{DWORD dwUnknown1;ULONG uKeMaximumIncrement;ULONG uPageSize;ULONG uMmNumberOfPhysicalPages;ULONG uMmLowestPhysicalPage;ULONG uMmHighestPhysicalPage;ULONG uAllocationGranularity;PVOID pLowestUserAddress;PVOID pMmHighestUserAddress;ULONG uKeActiveProcessors;BYTE bKeNumberProcessors;BYTE bUnknown2;WORD wUnknown3;} SYSTEM_BASIC_INFORMATION;typedef struct{LARGE_INTEGER liIdleTime;DWORD dwSpare[76];} SYSTEM_PERFORMANCE_INFORMATION;typedef struct{LARGE_INTEGER liKeBootTime;LARGE_INTEGER liKeSystemTime;LARGE_INTEGER liExpTimeZoneBias;ULONG uCurrentTimeZoneId;DWORD dwReserved;} SYSTEM_TIME_INFORMATION;// ntdll!NtQuerySystemInformation (NT specific!)//// The function copies the system information of the// specified type into a buffer//// NTSYSAPI// NTSTATUS// NTAPI// NtQuerySystemInformation(// IN UINT SystemInformationClass, // information type// OUT PVOID SystemInformation, // pointer to buffer// IN ULONG SystemInformationLength, // buffer size in bytes// OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit// // variable that receives// // the number of bytes// // written to the buffer // );typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);PROCNTQSI NtQuerySystemInformation;void main(void){SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;SYSTEM_TIME_INFORMATION SysTimeInfo;SYSTEM_BASIC_INFORMATION SysBaseInfo;double dbIdleTime;double dbSystemTime;LONG status;LARGE_INTEGER liOldIdleTime = {0,0};LARGE_INTEGER liOldSystemTime = {0,0};NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle("ntdll"),"NtQuerySystemInformation");if (!NtQuerySystemInformation)return;// get number of processors in the systemstatus = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);if (status != NO_ERROR)return;printf("\nCPU Usage (press any key to exit): ");while(!_kbhit()){// get new system timestatus = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);if (status!=NO_ERROR)return;// get new CPU's idle timestatus = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);if (status != NO_ERROR)return;// if it's a first call - skip itif (liOldIdleTime.QuadPart != 0){// CurrentValue = NewValue - OldValuedbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);// CurrentCpuIdle = IdleTime / SystemTimedbIdleTime = dbIdleTime / dbSystemTime;// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessorsdbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;printf("\b\b\b\b%3d%%",(UINT)dbIdleTime);}// store new CPU's idle and system timeliOldIdleTime = SysPerfInfo.liIdleTime;liOldSystemTime = SysTimeInfo.liKeSystemTime;// wait one secondSleep(1000);}printf("\n");} http://www.csdn.net/Develop/Read_Article.asp?Id=9226 高手帮忙! 请问操作dbf文件的方法 提问关于CTreeCtrl的复选框的显示问题。 vc6.0如何引入active控件? 请问一个工程有四个文件mfc.h mfc.cpp my.h my.cpp应该怎么编译?才能运行出结果 同步发送超时问题 怎样用CDataBase::open()打开一个Access数据库文件labdata.mdb?就是open()中的参数怎么确定 100分,SQL要怎样写?谢谢 0.5F是什么意思? 求教取得汉字区位码的方法 附窗体给主窗体赋值的问题(在线等!!!) 我想让CListCtrl控件,我想只能选择一行可不可以做到?
=====================================================参考一:
// cpusagent.cpp (Windows NT/2000)
//
// Getting the CPU usage in percent on Windows NT/2000
//
// (c)2000 Ashot Oganesyan K, SmartLine, Inc
// mailto:[email protected], http://www.protect-me.com, http://www.codepile.com#include <windows.h>
#include <conio.h>
#include <stdio.h>#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
// ntdll!NtQuerySystemInformation (NT specific!)
//
// The function copies the system information of the
// specified type into a buffer
//
// NTSYSAPI
// NTSTATUS
// NTAPI
// NtQuerySystemInformation(
// IN UINT SystemInformationClass, // information type
// OUT PVOID SystemInformation, // pointer to buffer
// IN ULONG SystemInformationLength, // buffer size in bytes
// OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit
// // variable that receives
// // the number of bytes
// // written to the buffer
// );
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);PROCNTQSI NtQuerySystemInformation;
void main(void)
{
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
LARGE_INTEGER liOldIdleTime = {0,0};
LARGE_INTEGER liOldSystemTime = {0,0};NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle("ntdll"),
"NtQuerySystemInformation"
);if (!NtQuerySystemInformation)
return;// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
return;printf("\nCPU Usage (press any key to exit): ");
while(!_kbhit())
{
// get new system time
status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
return;// get new CPU's idle time
status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
return;// if it's a first call - skip it
if (liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;printf("\b\b\b\b%3d%%",(UINT)dbIdleTime);
}// store new CPU's idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSystemTime = SysTimeInfo.liKeSystemTime;// wait one second
Sleep(1000);
}
printf("\n");
}