#ifndef _COMMON_PROCESSENTRY_HPP_ #define _COMMON_PROCESSENTRY_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_TOOLHELP32_HPP_ #include #endif class ProcessEntry : private PROCESSENTRY32 { public: ProcessEntry(void); ProcessEntry(const ProcessEntry &processEntry); ProcessEntry(const PROCESSENTRY32 &processEntry32); virtual ~ProcessEntry(); ProcessEntry &operator=(const ProcessEntry &processEntry); ProcessEntry &operator=(const PROCESSENTRY32 &processEntry32); BOOL operator==(const ProcessEntry &processEntry)const; BOOL operator==(const PROCESSENTRY32 &processEntry32)const; DWORD referenceCount(void)const; DWORD processID(void)const; DWORD heapID(void)const; DWORD moduleID(void)const; DWORD threads(void)const; DWORD parentProcessID(void)const; LONG priorityClassBase(void)const; DWORD flags(void)const; String strExeFile(void)const; PROCESSENTRY32 &getProcessEntry(void); private: void referenceCount(DWORD referenceCount); void processID(DWORD processID); void heapID(DWORD heapID); void moduleID(DWORD moduleID); void threads(DWORD threads); void parentProcessID(DWORD parentProcessID); void priorityClassBase(LONG priorityClassBase); void flags(DWORD flags); void strExeFile(const String &strExeFile); void setZero(void); }; inline ProcessEntry::ProcessEntry(void) { setZero(); } inline ProcessEntry::ProcessEntry(const ProcessEntry &processEntry) { *this=processEntry; } inline ProcessEntry::ProcessEntry(const PROCESSENTRY32 &processEntry32) { *this=processEntry32; } inline ProcessEntry::~ProcessEntry() { } inline ProcessEntry &ProcessEntry::operator=(const ProcessEntry &processEntry) { referenceCount(processEntry.referenceCount()); processID(processEntry.processID()); heapID(processEntry.heapID()); moduleID(processEntry.moduleID()); threads(processEntry.threads()); parentProcessID(processEntry.parentProcessID()); priorityClassBase(processEntry.priorityClassBase()); flags(processEntry.flags()); strExeFile(processEntry.strExeFile()); return *this; } inline ProcessEntry &ProcessEntry::operator=(const PROCESSENTRY32 &processEntry32) { referenceCount(processEntry32.cntUsage); processID(processEntry32.th32ProcessID); heapID(processEntry32.th32DefaultHeapID); moduleID(processEntry32.th32ModuleID); threads(processEntry32.cntThreads); parentProcessID(processEntry32.th32ParentProcessID); priorityClassBase(processEntry32.pcPriClassBase); flags(processEntry32.dwFlags); strExeFile(processEntry32.szExeFile); return *this; } inline BOOL ProcessEntry::operator==(const ProcessEntry &processEntry)const { return (referenceCount()==processEntry.referenceCount()&& processID()==processEntry.processID()&& heapID()==processEntry.heapID()&& moduleID()==processEntry.moduleID()&& threads()==processEntry.threads()&& parentProcessID()==processEntry.parentProcessID()&& priorityClassBase()==processEntry.priorityClassBase()&& flags()==processEntry.flags()&& strExeFile()==processEntry.strExeFile()); } inline BOOL ProcessEntry::operator==(const PROCESSENTRY32 &processEntry32)const { return (referenceCount()==processEntry32.cntUsage&& processID()==processEntry32.th32ProcessID&& heapID()==processEntry32.th32DefaultHeapID&& moduleID()==processEntry32.th32ModuleID&& threads()==processEntry32.cntThreads&& parentProcessID()==processEntry32.th32ParentProcessID&& priorityClassBase()==processEntry32.pcPriClassBase&& flags()==processEntry32.dwFlags&& strExeFile()==processEntry32.szExeFile); } inline DWORD ProcessEntry::referenceCount(void)const { return PROCESSENTRY32::cntUsage; } inline void ProcessEntry::referenceCount(DWORD referenceCount) { PROCESSENTRY32::cntUsage=referenceCount; } inline DWORD ProcessEntry::processID(void)const { return PROCESSENTRY32::th32ProcessID; } inline void ProcessEntry::processID(DWORD processID) { PROCESSENTRY32::th32ProcessID=processID; } inline DWORD ProcessEntry::heapID(void)const { return PROCESSENTRY32::th32DefaultHeapID; } inline void ProcessEntry::heapID(DWORD heapID) { PROCESSENTRY32::th32DefaultHeapID=heapID; } inline DWORD ProcessEntry::moduleID(void)const { return PROCESSENTRY32::th32ModuleID; } inline void ProcessEntry::moduleID(DWORD moduleID) { PROCESSENTRY32::th32ModuleID=moduleID; } inline DWORD ProcessEntry::threads(void)const { return PROCESSENTRY32::cntThreads; } inline void ProcessEntry::threads(DWORD threads) { PROCESSENTRY32::cntThreads=threads; } inline DWORD ProcessEntry::parentProcessID(void)const { return PROCESSENTRY32::th32ParentProcessID; } inline void ProcessEntry::parentProcessID(DWORD parentProcessID) { PROCESSENTRY32::th32ParentProcessID=parentProcessID; } inline LONG ProcessEntry::priorityClassBase(void)const { return PROCESSENTRY32::pcPriClassBase; } inline void ProcessEntry::priorityClassBase(LONG priorityClassBase) { PROCESSENTRY32::pcPriClassBase=priorityClassBase; } inline DWORD ProcessEntry::flags(void)const { return PROCESSENTRY32::dwFlags; } inline void ProcessEntry::flags(DWORD flags) { PROCESSENTRY32::dwFlags=flags; } inline String ProcessEntry::strExeFile(void)const { return PROCESSENTRY32::szExeFile; } inline void ProcessEntry::strExeFile(const String &strExeFile) { if(strExeFile.length()>=sizeof(PROCESSENTRY32::szExeFile))return; ::strcpy(PROCESSENTRY32::szExeFile,(char*)(String&)strExeFile); } inline void ProcessEntry::setZero(void) { PROCESSENTRY32::dwSize=sizeof(PROCESSENTRY32); PROCESSENTRY32::cntUsage=0; PROCESSENTRY32::th32ProcessID=0; PROCESSENTRY32::th32DefaultHeapID=0; PROCESSENTRY32::th32ModuleID=0; PROCESSENTRY32::cntThreads=0; PROCESSENTRY32::th32ParentProcessID=0; PROCESSENTRY32::pcPriClassBase=0; PROCESSENTRY32::dwFlags=0; PROCESSENTRY32::szExeFile[0]=0; } inline PROCESSENTRY32 &ProcessEntry::getProcessEntry(void) { return (PROCESSENTRY32&)*this; } #endif