怎样得到一个线程的CPU使用率阿?加急,弟兄们帮忙啊
解决方案 »
- delphi 如何调用webservice
- MdEdit 控件!!
- 请好心的朋友帮忙写个com组件程序
- delphi网络编程与数据库编程哪个较难一些?
- 我用delphi、oracle数据库、本地库sqlanywhere,ADO连接数据库,怎样把oracle的表和数据复制到本地库sqlanywhere上??
- 菜鸟问题。
- TDBNavigator 中 nbRefresh 对应功能的代码是什么?
- 一个简单问题,Ctrl+MouseDown 触发不了
- 请教一下各位!这样的界面用什么控件来做好?
- 求教:两个程序间返送接收消息,并能传递参数
- 关于ListView中多个ListItem切换时触发OnChanging的问题 >>>>>
- 请教:ACCESS中“数字”类型显示的精度控制!
{
//os version information structure
OSVERSIONINFO OsVersionInfo;
OsVersionInfo.dwOSVersionInfoSize= sizeof(OSVERSIONINFO);
//get os version
GetVersionEx(&OsVersionInfo);
//only run in win2000/nt OS
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
{
// MessageBox("Only run in Win2K/NT,\\nYour OS is not Win2000/NT!","prompt:");
return false;
} //Get NtQuerySystemInformation Address from ntdll.dll
NtQuerySystemInformation =(NTQSI)GetProcAddress(
GetModuleHandle("ntdll.dll"),
"NtQuerySystemInformation" ); if (!NtQuerySystemInformation)
{
// MessageBox("no this function");
return false;
} // get num of processors
status = NtQuerySystemInformation(0,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
{
// MessageBox("failed to query basic info(num of processors)");
return false;
}
return true;
}
double GetCPUUsage()
{
// get system time
status = NtQuerySystemInformation(3,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
{
// MessageBox("failed to get system time!");
return ret_error;
} // get cpu idle time
status = NtQuerySystemInformation(2,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
{
// MessageBox("failed to get cpu time");
return ret_error;
}
if (liOldIdleTime.QuadPart != 0)
{
// new cpu Time = NewTime - OldTime
dbCpuIdleTime =LI64ToDouble(SysPerfInfo.liIdleTime)-LI64ToDouble(liOldIdleTime);
dbSysTime =LI64ToDouble(SysTimeInfo.liKeSystemTime)-LI64ToDouble(liOldSysTime); //get cpu usage
unCpuUsage=100 - 100*(dbCpuIdleTime/dbSysTime)/(double)SysBaseInfo.bKeNumberProcessors+0.5;
} // store new cpu idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSysTime = SysTimeInfo.liKeSystemTime; return unCpuUsage;
}
{Handle hJob=CreateJobOjbect(NULL,NULL);
AssignProcessToJobObject(hjob,proc.hProcess,NULL,0,0);
QueryInformationJobOjbect(hJob,Info)
closeHandle(hjob);
}typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
{
LARGE_INTEGER TotalUserTime;
LARGE_INTEGER TotalKernelTime;
LARGE_INTEGER ThisPeriodTotalUerTime
LARGE_INTEGER thisPeriodTotalKernelTime;
DWORD TotalPageFaultCount
DWORD TotalProcess
DWORD ActiveProcesses
DWORD TotalTerminatedProcesses;
}_JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*_JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
请提交FAQ