VCでプロセスの一覧を取得する

  • デル株式会社
  • プログラムで現状、端末で動いている、プロセスの一覧を取得する。
    今回取得するのは、実行ファイルそのもの。
    何だか、必要になって作ったのでサンプル。

    こんな感じ

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

    snap

    関連記事

    ページ上部へ戻る