急!!

解决方案 »

  1.   


    通过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);
      

  2.   

    楼上的高手,我非求这些

    -----“cpu 占用率,资源占用率, 内存访问速度, 硬盘访问速度, 网络访问速度”------实时的!!!
    有办法得到吗??????
      

  3.   

    有办法
    用性能计数器PdhOpenQuery
    PdhAddCounter
    PdhCollectQueryData
    PdhGetFormattedCounterValue
    PdhCloseQuery
    具体查MSDN
      

  4.   

    这里有例子:
    http://www.codeguru.com/system/perfmon.shtml
    http://www.codeguru.com/system/PerfMonitorAlerter.shtml
    http://www.codeguru.com/system/perfstate.shtml
      

  5.   

    http://www.codeguru.com/system/sysinfo.html