- 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(); }