// クラス定義
class CEnumApplication{
protected:
HANDLE m_handle;
PROCESSENTRY32 m_process;
public:
CEnumApplication():m_handle(NULL){;}
~CEnumApplication(){Close();}
VOID Close(){
if(m_handle != NULL)CloseHandle(m_handle);
m_handle = NULL;}
PROCESSENTRY32 *First();
PROCESSENTRY32 *Next();
LPSTR GetExeFile(){return m_process.szExeFile;}
DWORD GetProcessID(){return m_process.th32ProcessID;}
DWORD GetModuleID(){return m_process.th32ModuleID;}
};
// メンバ関数
PROCESSENTRY32 *CEnumApplication::First()
{
Close();
if((m_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)) == NULL){
return NULL;
}
ZeroMemory(&m_process,sizeof(PROCESSENTRY32));
m_process.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(m_handle,&m_process)){
return &m_process;
}
return NULL;
}
PROCESSENTRY32 *CEnumApplication::Next()
{
if(Process32Next(m_handle,&m_process)){
return &m_process;
}
return NULL;
}
// アプリケーションの列挙サンプルです。
// 以下は、列挙された中から notepad.exe を探すようにしています。
CEnumApplication app;
if(app.First() != NULL){
do{
if(lstrcmpi(app.GetExeFile,"notepad.exe") == 0){
//
// notepad.exe が見つかった場合
//
}
}while(app.Next() != NULL);
}