特定のアプリが起動中かどうか調べるには?

解決


TM  2004-08-03 04:54:07  No: 54114

VC6、MFCダイアログベースの製作を行っています。

特定の実行ファイル(.exe)が起動中かどうか知るためには
どのような記述をすればいいのかわかりません。

起動中で、ウィンドウがなくタスクトレイに入っている実行
ファイル(.exe)にも対応した記述を書きたいのですが、さっ
ぱりわかりません。

わかる方、ご教授お願いいたします。


シャノン  2004-08-03 06:11:53  No: 54115

exe ファイル名がわかっているのなら、現在コンピュータ上で実行されているすべての exe(プロセス)を調べてやることで可能です。
詳しくは、MSDNで「Win32 でアプリケーションを列挙する方法」を参照してください。


TM  2004-08-04 07:31:44  No: 54116

返答ありがとうございます。

検索、検索、検索をし、勉強したところ以下のようなコードを書き、解決しました。ありがとうございました。

BOOL CMyClass::GetExeProcess(const CString &exename)
{
    HANDLE hSnapShot; //スナップショット
    PROCESSENTRY32 pEntry; //プロセスエントリ
    CString buf;
  
    //システムのスナップショットを取得
    hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    //プロセスントリの前処理(Process32Firstを呼ぶために必要)
    pEntry.dwSize =sizeof(pEntry);
    //最初のプロセスの取得(Process32Nextを呼ぶために必要)
    Process32First (hSnapShot,&pEntry); 

    while(1){
        //プロセスの取得
        BOOL hRes = Process32Next (hSnapShot,&pEntry);

        // プロセスが取得できなかったらLoopを抜ける
        if(hRes == FALSE)return FALSE;

        //Exeファイル名
        buf = pEntry.szExeFile;
        if( exename == buf )return TRUE;
    }
}


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加