• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            牽牛散步
            仗劍走天涯

            #include <Ice/Ice.h>
            #include <iostream>
            #include <GetWinSysState.h>
            #include <Winbase.h>
            #include <conio.h>
            #include <stdio.h>
            #include <fstream>
            #include <iostream>
            #include <string>
            #include <direct.h>

            #define SystemBasicInformation?????? 0
            #define SystemPerformanceInformation 2
            #define SystemTimeInformation??????? 3

            #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
            //ICE預(yù)編譯語句

            #ifdef _DEBUG
            #pragma comment(lib, "iced.lib")
            #pragma comment(lib, "iceutild.lib")
            #else
            #pragma comment(lib, "ice.lib")
            #pragma comment(lib, "iceutil.lib")
            #endif

            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;

            /*
            ? 功能:得到CPU使用狀態(tài)
            ? 參數(shù):無
            ? 返回值:內(nèi)存占用率
            ? 作者:牽牛散步
            */
            int GetCpuStat()
            {
            ?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};
            ?int UsageCpu = 0;
            ??? NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
            ??GetModuleHandle("ntdll"),
            ??"NtQuerySystemInformation"
            ??);
            ?
            ??? if (!NtQuerySystemInformation)
            ??????? return 0;
            ?
            ??? status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
            ??? if (status != NO_ERROR)
            ??????? return 0;
            ????
            ?for( int t = 0 ; t < 2 ; t++ )
            ??? {
            ??status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
            ??????? if (status!=NO_ERROR)
            ??????????? return 0;
            ??
            ??????? status = NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
            ??????? if (status != NO_ERROR)
            ??????????? return 0;
            ??
            ??if (liOldIdleTime.QuadPart != 0)
            ??{
            ??????????? dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
            ??????????? dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
            ???
            ??????????? dbIdleTime = dbIdleTime / dbSystemTime;
            ???

            ??????????? dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
            ???UsageCpu = (int)dbIdleTime;

            ??}
            ??
            ??????? // store new CPU's idle and system time
            ??????? liOldIdleTime = SysPerfInfo.liIdleTime;
            ??????? liOldSystemTime = SysTimeInfo.liKeSystemTime;
            ??
            ??????? // wait one second
            ??????? Sleep(500);
            ??? }
            ?return UsageCpu;
            ?
            }


            /*
            ? 功能:得到內(nèi)存使用狀態(tài)
            ? 參數(shù):無
            ? 返回值:內(nèi)存信息結(jié)構(gòu)體[包括總的物理內(nèi)存,還可使用內(nèi)存,虛擬內(nèi)存,單位為K]
            ? 作者:牽牛散步
            */
            MemoryInf MemorySta()
            {
            ?MemoryInf tmp;//在ICE SLICE里定義的信息結(jié)構(gòu)體
            ?MEMORYSTATUS memStatus;
            ?GlobalMemoryStatus(&memStatus);
            ?DWORD tom=memStatus.dwTotalPhys/1024;
            ?DWORD mem=memStatus.dwAvailPhys/1024;
            ?DWORD res=memStatus.dwAvailVirtual/1024;
            ?tmp.TotalMem = (int)tom;
            ?tmp.ValidMem = (int)mem;
            ?tmp.VirtualMem = (int)res;
            ?return tmp;
            }


            /*
            ?功能:得到硬盤使用情況
            ?參數(shù):無
            ?返回值:硬盤信息結(jié)構(gòu)體
            ?作者:牽牛散步
            */
            DiskInf GetDiskSta()
            {
            ?ULARGE_INTEGER FreeAvailable,TotalNum,TotalFreeNum;

            ?char p[3];
            ?bool b_flag;
            ?DiskInf tmp;//ICE SLICE里定義的硬盤信息結(jié)構(gòu)體
            ?tmp.TotalSpace = 0;
            ?tmp.FreeSpace = 0;
            ?//得到有效的驅(qū)動(dòng)器名,即盤符
            ?for( int drive = 1; drive <= 26; drive++ )
            ?{
            ??if( !_chdrive( drive ) )
            ??{
            ???memset( p , 0 , sizeof(p));
            ???p[0] = drive + 'A' - 1;
            ???p[1] = ':';
            ???p[2] = '\0';
            ???b_flag = GetDiskFreeSpaceEx( p ,&FreeAvailable,&TotalNum,&TotalFreeNum );
            ???if( b_flag )
            ???{
            ????tmp.TotalSpace += (int)(TotalNum.QuadPart/(1024*1024));
            ????tmp.FreeSpace += (int)(FreeAvailable.QuadPart/(1024*1024));
            ???}
            ??}
            ?}
            ?return tmp;
            }

            int main()
            {
            ???return 1;
            }

            posted on 2006-04-14 11:35 牽牛散步 閱讀(10698) 評(píng)論(3)  編輯 收藏 引用 所屬分類: C++學(xué)習(xí)資料
            Comments
            • # re: C++編程中,利用WINDOWS API獲得系統(tǒng)狀態(tài)信息[CPU占用率,硬盤使用情況,內(nèi)存使用情況]
              javaer
              Posted @ 2007-03-30 18:40
              #include <Ice/Ice.h>
              #include <GetWinSysState.h>

              我想問你一下,缺這兩個(gè)庫,怎么辦?那里有?  回復(fù)  更多評(píng)論   
            • # re: C++編程中,利用WINDOWS API獲得系統(tǒng)狀態(tài)信息[CPU占用率,硬盤使用情況,內(nèi)存使用情況]
              SHI
              Posted @ 2007-12-24 16:10
              GetWinSysState.h這個(gè)找不到怎么辦
                回復(fù)  更多評(píng)論   
            • # re: C++編程中,利用WINDOWS API獲得系統(tǒng)狀態(tài)信息[CPU占用率,硬盤使用情況,內(nèi)存使用情況]
              好看網(wǎng)
              Posted @ 2010-08-05 11:19
              總的虛擬內(nèi)存大小不知道怎么獲得 哎。

              那結(jié)構(gòu)體 里的 TOTALMEMORY已經(jīng)不是虛擬內(nèi)存了。

              在windows核心編程里面寫的。  回復(fù)  更多評(píng)論   
             
            久久久久18| 国内精品九九久久精品| 精品九九久久国内精品| 久久91精品综合国产首页| 久久e热在这里只有国产中文精品99 | 久久性精品| 亚洲欧美伊人久久综合一区二区| 亚洲国产日韩综合久久精品| 亚洲AV日韩AV天堂久久| 蜜桃麻豆www久久| 国产精品99久久久久久宅男小说| 国产精品久久影院| 性做久久久久久免费观看| 国产精品18久久久久久vr | 国内精品久久久久久99| 国内精品久久久久久久涩爱 | 青青草国产成人久久91网| 久久人人爽人人爽AV片| 亚洲级αV无码毛片久久精品| 99热精品久久只有精品| 丰满少妇高潮惨叫久久久| 狠狠色综合网站久久久久久久高清| 国产精品久久久久国产A级| 久久伊人精品一区二区三区 | 久久精品国产免费观看三人同眠| 亚洲乱亚洲乱淫久久| 国内精品久久久久久野外| 久久综合亚洲欧美成人| 2021国产精品久久精品| 久久国产影院| 九九久久精品国产| 久久99精品久久久久久野外| 国产精品一区二区久久国产| 色偷偷久久一区二区三区| 久久综合亚洲鲁鲁五月天| 欧美色综合久久久久久| 日本精品一区二区久久久| 久久精品国产99久久久香蕉| 久久久91人妻无码精品蜜桃HD| 国产一区二区三区久久精品| 久久人人爽人人爽人人片av高请|