急!!
解决方案 »
- 如何读RTC(Real Time Clock)时钟中断?
- MFC开发DLL(今日插件)
- 怎么判断剪贴板数据是从哪里来的?
- 何处可以弄到GDI+图形库呀
- 为什么 随机函数rand每次得到的 数据都一样?那个函数是得到不同数的函数?
- 已知一个窗口的HWND,怎样可以在上面加上IE,并阅览某个网页
- 如何得到本局域网上所有主机的ip?如何编程搜索一个ftp站点中的某个文件是否存在?
- 怎样为对话框程序加启动画面?在线等待
- ListCtrl列表头宽度改变的时候用什么消息处理函数?
- WPARAM 和 LPARAM有何区别,小弟刚刚用vc写windows程序
- 关于access数据库的问题
- 高手帮忙!AfxMessageBox怎么样让他有警告,确定取消,等等啊,谁有这个参数!!!
通过wmi或者注册标都可以
你自己看吧,TCHAR computerbuf[256];
DWORD computersize=256;
memset(computerbuf,0,256);
if(!GetComputerName(computerbuf,&computersize))
return false;
computerbuf[computersize]=0;
sysinfo.computer[0]=0;
strcat(sysinfo.computer,"计算机: ");
strcat(sysinfo.computer,computerbuf);
///////get user name/////////
TCHAR userbuf[256];
DWORD usersize=256;
memset(userbuf,0,256);
if(!GetUserName(userbuf,&usersize))
return false;
userbuf[usersize]=0;
sysinfo.user[0]=0;
strcat(sysinfo.user,"用户名: ");
strcat(sysinfo.user,userbuf);
///////get version//////////
sysinfo.os[0]=0;
strcat(sysinfo.os,"操作系统: ");
OSVERSIONINFO osvi;
memset(&osvi,0,sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if(!GetVersionEx(&osvi))
return false;
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if ( osvi.dwMajorVersion <= 4 )
strcat(sysinfo.os,"Microsoft Windows NT ");
if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
strcat(sysinfo.os,"Microsoft Windows 2000 ");
HKEY hKey;
char szProductType[80];
DWORD dwBufLen;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE)szProductType, &dwBufLen);
RegCloseKey(hKey);
if ( lstrcmpi( "WINNT", szProductType) == 0 )
strcat(sysinfo.os,"Professional, " );
if ( lstrcmpi( "LANMANNT", szProductType) == 0 )
strcat(sysinfo.os,"Server, " );
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
strcat(sysinfo.os," Server, " );
if ( osvi.dwMajorVersion <= 4 )
{
char temp[256];
sprintf(temp,"version %d.%d %s (Build %d)\n",
osvi.dwMajorVersion,
osvi.dwMinorVersion,
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
strcat(sysinfo.os,temp);
}
else
{
char temp[256];
sprintf(temp,"%s (Build %d)\n",
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
strcat(sysinfo.os,temp);
}
break;
case VER_PLATFORM_WIN32_WINDOWS:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
strcat(sysinfo.os,"Microsoft Windows 95 ");
if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
strcat(sysinfo.os,"OSR2 " );
} if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
strcat(sysinfo.os,"Microsoft Windows 98 ");
if ( osvi.szCSDVersion[1] == 'A' )
strcat(sysinfo.os,"SE " );
} if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
strcat(sysinfo.os,"Microsoft Windows Millennium Edition ");
}
break;
}
///////////get disk space/////////////
sysinfo.disk[0]=0;
strcat(sysinfo.disk,"磁盘空间: ");
DWORD maskdriver;
ULONGLONG totalspace=0,freespace=0;
//ULONGLONG
ULONGLONG ulltotalspace,ullfreespace,freebyte;
DWORD drivertype;
char driver[10];
if(!(maskdriver=GetLogicalDrives()))
return false;
for(int i=0;i<26;i++)
{
if(!(maskdriver>>i))
break;
if(maskdriver>>i&1)
{
driver[0]=i+'A';
driver[1]=':';
driver[2]='\\';
driver[3]=0;
drivertype=GetDriveType(driver);
if(drivertype!=DRIVE_FIXED)
continue;
if(!GetDiskFreeSpaceEx (driver,
(PULARGE_INTEGER)&freebyte,
(PULARGE_INTEGER)&ulltotalspace,
(PULARGE_INTEGER)&ullfreespace))
return false;
totalspace+=ulltotalspace;
freespace+=ullfreespace;
}
}
DWORD dfreespace=0.0,dtotalspace=0.0,lv;
dfreespace=(DWORD)freespace/(1024*1024*1024);
dtotalspace=(DWORD)totalspace/(1024*1024*1024);
lv=(DWORD)freespace/totalspace*100;
char space[256];
sprintf(space,"总磁盘空间为:%.2fG,剩余磁盘空间为:%.2fG(占%.2f%c)",dtotalspace,dfreespace,lv,'%');
strcat(sysinfo.disk,space);
////////////////get cpu info//////////////////
//通过注册表得到cpu的参数,很牛,呵呵
sysinfo.processor[0]=0;
strcat(sysinfo.processor,"CPU: ");
HKEY hKey;
char szcpuinfo[80];
DWORD dwBufLen=80;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "VendorIdentifier", NULL, NULL,
(LPBYTE)szcpuinfo, &dwBufLen);
szcpuinfo[dwBufLen]=0;
strcat(sysinfo.processor,szcpuinfo);
strcat(sysinfo.processor," ");
memset(szcpuinfo,0,80);
dwBufLen=80;
RegQueryValueEx( hKey, "Identifier", NULL, NULL,
(LPBYTE)szcpuinfo, &dwBufLen);
szcpuinfo[dwBufLen]=0;
strcat(sysinfo.processor,szcpuinfo);
DWORD f;
dwBufLen=8;
RegQueryValueEx( hKey, "~MHz", NULL, NULL,
(LPBYTE)&f, &dwBufLen);
char hz[10];
sprintf(hz," %dMHZ",f);
strcat(sysinfo.processor,hz);
RegCloseKey(hKey);
/////////////get mem size////////////
MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
char membuf[256];
sprintf(membuf,"物理内存: 总物理内存:%dMB,可用内存:%dMB (占%.2f%s)",ms.dwTotalPhys/1024/1024,ms.dwAvailPhys/1024/1024
,(double)ms.dwAvailPhys/ms.dwTotalPhys*100,"%");
sysinfo.mem[0]=0;
strcpy(sysinfo.mem,membuf);
是
-----“cpu 占用率,资源占用率, 内存访问速度, 硬盘访问速度, 网络访问速度”------实时的!!!
有办法得到吗??????
用性能计数器PdhOpenQuery
PdhAddCounter
PdhCollectQueryData
PdhGetFormattedCounterValue
PdhCloseQuery
具体查MSDN
http://www.codeguru.com/system/perfmon.shtml
http://www.codeguru.com/system/PerfMonitorAlerter.shtml
http://www.codeguru.com/system/perfstate.shtml