www.pudn.com > MFCtest.rar > CPDH.h
#define UNICODE #define _UNICODE #define LEN sizeof(struct ProcessInfo) #define PRONAME info[0] #define PID info[1] #define PPID info[2] #define TIME info[3] #define THREADCOUNT info[4] #define USERTIME info[5] #define HANDLECOUNT info[6] #define PRIORBASE info[7] #define WORKSET info[8] #include#include #include #include #include #pragma comment(lib,"pdh.lib") #pragma comment(lib,"mpr.lib") struct ProcessInfo { DWORD instanceIndex; TCHAR info[10][16]; ProcessInfo *next; }; class CProcess { private: LPTSTR szMachineName,password,accont; ProcessInfo *head,*p1,*p2; LPTSTR szCounterListBuffer; DWORD dwCounterListSize; LPTSTR szInstanceListBuffer; DWORD dwInstanceListSize; HQUERY hQuery; HCOUNTER hCounter; TCHAR szPathBuffer[MAX_PATH]; DWORD ctrType; PDH_FMT_COUNTERVALUE fmtValue; PDH_STATUS pdhStatus; ProcessInfo *pi,current_pi; TCHAR counterName[9][32]; ProcessInfo *addnew(); bool setInstanceIndex(ProcessInfo *pi); bool ConnIpc(); bool destroyProcessInfo(); public: int num; Process(LPTSTR szMachineName,LPTSTR accont,LPTSTR password); Process(); ~Process(); int processNum(); ProcessInfo *currentProcess(); bool goNextProcess(); bool goFirstProcess(); bool hasNext(); bool getProcessInfo(); }; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; HWND CreateListView (HWND hwnd,Process *pro); bool display(HWND hListView,Process *pro); class CPDH { public: CPDH(); virtual ~CPDH(); };