C++ 怎么实现获取当前PC 硬盘 内存的大小以及已使用大小,加上CPU使用率
我用的是VC6.0哪位能够实现的麻烦给我说一下,最好是能够给我一个小程序(不能够给我大的),只要实现了提取以上数据就可以了,我可以再加分对不起哈还有硬盘的我现在才发现其实...
我用的是VC6.0 哪位能够实现的麻烦给我说一下,最好是能够给我一个小程序(不能够给我大的) ,只要实现了提取以上数据就可以了,我可以再加分
对不起哈 还有硬盘的 我现在才发现 其实你完全可以给我说在哪儿去找这些API 找到之后我就完全可以自己写了,谢谢 假如能够给我说的话,至于CPU,我已经自己实现了,是用的固定时间内的空闲时间来实现的,还是很感谢你,我再等一下 展开
对不起哈 还有硬盘的 我现在才发现 其实你完全可以给我说在哪儿去找这些API 找到之后我就完全可以自己写了,谢谢 假如能够给我说的话,至于CPU,我已经自己实现了,是用的固定时间内的空闲时间来实现的,还是很感谢你,我再等一下 展开
4个回答
展开全部
可以通过编程实现,源代码如下:
// Sample output:
// There is 51 percent of memory in use.
// There are 2029968 total KB of physical memory.
// There are 987388 free KB of physical memory.
// There are 3884620 total KB of paging file.
// There are 2799776 free KB of paging file.
// There are 2097024 total KB of virtual memory.
// There are 2084876 free KB of virtual memory.
// There are 0 free KB of extended memory.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
// Use to convert bytes to KB
#define DIV 1024
// Specify the width of the field in which to print the numbers.
// The asterisk in the format specifier "%*I64d" takes an integer
// argument and uses it to pad and right justify the number.
#define WIDTH 7
void _tmain()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
_tprintf (TEXT("There is %*ld percent of memory in use.\n"),
WIDTH, statex.dwMemoryLoad);
_tprintf (TEXT("There are %*I64d total KB of physical memory.\n"),
WIDTH, statex.ullTotalPhys/DIV);
_tprintf (TEXT("There are %*I64d free KB of physical memory.\n"),
WIDTH, statex.ullAvailPhys/DIV);
_tprintf (TEXT("There are %*I64d total KB of paging file.\n"),
WIDTH, statex.ullTotalPageFile/DIV);
_tprintf (TEXT("There are %*I64d free KB of paging file.\n"),
WIDTH, statex.ullAvailPageFile/DIV);
_tprintf (TEXT("There are %*I64d total KB of virtual memory.\n"),
WIDTH, statex.ullTotalVirtual/DIV);
_tprintf (TEXT("There are %*I64d free KB of virtual memory.\n"),
WIDTH, statex.ullAvailVirtual/DIV);
// Show the amount of extended memory available.
_tprintf (TEXT("There are %*I64d free KB of extended memory.\n"),
WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
运行后结果就能获取当前PC的硬盘大小、已使用大小和CPU的使用率。
// Sample output:
// There is 51 percent of memory in use.
// There are 2029968 total KB of physical memory.
// There are 987388 free KB of physical memory.
// There are 3884620 total KB of paging file.
// There are 2799776 free KB of paging file.
// There are 2097024 total KB of virtual memory.
// There are 2084876 free KB of virtual memory.
// There are 0 free KB of extended memory.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
// Use to convert bytes to KB
#define DIV 1024
// Specify the width of the field in which to print the numbers.
// The asterisk in the format specifier "%*I64d" takes an integer
// argument and uses it to pad and right justify the number.
#define WIDTH 7
void _tmain()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
_tprintf (TEXT("There is %*ld percent of memory in use.\n"),
WIDTH, statex.dwMemoryLoad);
_tprintf (TEXT("There are %*I64d total KB of physical memory.\n"),
WIDTH, statex.ullTotalPhys/DIV);
_tprintf (TEXT("There are %*I64d free KB of physical memory.\n"),
WIDTH, statex.ullAvailPhys/DIV);
_tprintf (TEXT("There are %*I64d total KB of paging file.\n"),
WIDTH, statex.ullTotalPageFile/DIV);
_tprintf (TEXT("There are %*I64d free KB of paging file.\n"),
WIDTH, statex.ullAvailPageFile/DIV);
_tprintf (TEXT("There are %*I64d total KB of virtual memory.\n"),
WIDTH, statex.ullTotalVirtual/DIV);
_tprintf (TEXT("There are %*I64d free KB of virtual memory.\n"),
WIDTH, statex.ullAvailVirtual/DIV);
// Show the amount of extended memory available.
_tprintf (TEXT("There are %*I64d free KB of extended memory.\n"),
WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
运行后结果就能获取当前PC的硬盘大小、已使用大小和CPU的使用率。
追问
尼玛回答的太及时了吧,才那么短短五六年你就抢着回答了
展开全部
您好~要用win API,
BOOL CSystemInfoDialog::OnInitDialog()
//对话框的初始化函数
{ CString DisplayString;
SYSTEM_INFO SystemInfo;
//检测CPU的类型
::GetSystemInfo(&&SystemInfo);
//WinAPI函数,用以取得系统信息
if (SystemInfo.wProcessorArchitecture = =
PROCESSOR_ARCHITECTURE_INTEL)
{ switch (SystemInfo.wProcessorLevel) {
//本程序只演示取得Intel系列CPU的方法
……
//省略对386及486机器的检测
case 5:
DisplayString= "Pentium";
break;
case 6:
DisplayString ="Pentium (II/Pro)";
break; }
}
m_CpuType.SetWindowText(DisplayString);
//变量m_CpuType是一个CStatic框
//检测内存状态
MEMORYSTATUS MemoryStatus;
//内存的现行状态结构
MemoryStatus.dwLength=sizeof(MEMORYSTATUS);
//填充结构的大小
::GlobalMemoryStatus(&&MemoryStatus);
//取得内存的状态
char buffer[20];
wsprintf(buffer,"%d bytes",MemoryStatus.dwTotalPhys);
//dwTotalPhys指示物理内存字节
m_Memory.SetWindowText(buffer);
//变量m_Memory是一个CStatic框
linux用
getrusage~
关于补充:
硬盘使用
GetDiskFreeSpace()
或者
GetDiskFreeSpaceEx()
您应该安装一个msdn~
或者到在线的msdn上查找~:
http://msdn.microsoft.com/zh-cn/default.aspx
BOOL CSystemInfoDialog::OnInitDialog()
//对话框的初始化函数
{ CString DisplayString;
SYSTEM_INFO SystemInfo;
//检测CPU的类型
::GetSystemInfo(&&SystemInfo);
//WinAPI函数,用以取得系统信息
if (SystemInfo.wProcessorArchitecture = =
PROCESSOR_ARCHITECTURE_INTEL)
{ switch (SystemInfo.wProcessorLevel) {
//本程序只演示取得Intel系列CPU的方法
……
//省略对386及486机器的检测
case 5:
DisplayString= "Pentium";
break;
case 6:
DisplayString ="Pentium (II/Pro)";
break; }
}
m_CpuType.SetWindowText(DisplayString);
//变量m_CpuType是一个CStatic框
//检测内存状态
MEMORYSTATUS MemoryStatus;
//内存的现行状态结构
MemoryStatus.dwLength=sizeof(MEMORYSTATUS);
//填充结构的大小
::GlobalMemoryStatus(&&MemoryStatus);
//取得内存的状态
char buffer[20];
wsprintf(buffer,"%d bytes",MemoryStatus.dwTotalPhys);
//dwTotalPhys指示物理内存字节
m_Memory.SetWindowText(buffer);
//变量m_Memory是一个CStatic框
linux用
getrusage~
关于补充:
硬盘使用
GetDiskFreeSpace()
或者
GetDiskFreeSpaceEx()
您应该安装一个msdn~
或者到在线的msdn上查找~:
http://msdn.microsoft.com/zh-cn/default.aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
获取硬盘空间,使用:
GetDiskFreeSpace或GetDiskFreeSpaceEx
获取内存状态,使用:
GlobalMemoryStatus或GlobalMemoryStatusEx
获取CPU使用率,使用:
NtQuerySystemInformation查询关于处理器性能(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)
GetDiskFreeSpace或GetDiskFreeSpaceEx
获取内存状态,使用:
GlobalMemoryStatus或GlobalMemoryStatusEx
获取CPU使用率,使用:
NtQuerySystemInformation查询关于处理器性能(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上csdn里一大把。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询