- 2014-3-18
- Visual C++
プログラムで現状、端末で動いている、プロセスの一覧を取得する。
今回取得するのは、実行ファイルそのもの。
何だか、必要になって作ったのでサンプル。
こんな感じ
void CProcessSnapDlg::OnBnClickedOk()
{
HANDLE hSnap = (HANDLE)-1; // スナップのハンドル
BOOL bResult = FALSE; // APIの戻り値
PROCESSENTRY32 pe; // プロセス一覧取得用構造体
char szSnap[ _MAX_PATH ] = { NULL };
CEdit* pEditSnap = (CEdit*)GetDlgItem(IDC_EDT_SNAP);
// スナップショットのハンドルを取得する
hSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if(hSnap == (HANDLE)-1)
{
// スナップショット生成の失敗
// エラー処理
return;
}
pe.dwSize = sizeof( pe );
bResult = Process32First( hSnap, &pe );
// PID を探索
while( bResult )
{
sprintf_s( szSnap, "%s\r\n", pe.szExeFile );
// 現状セルの状態は考慮しない
pEditSnap->ReplaceSel( szSnap );
bResult = Process32Next( hSnap, &pe );
}
// スナップハンドル解放
if( hSnap != (HANDLE)-1 )
{
CloseHandle( hSnap );
}
//CDialogEx::OnOK();
}








