exeファイル名しか知らない場合、Windowsプログラムでプロセスが実行されているかどうかを知るにはどうすればよいですか? 問題のプロセスは、64 ビットの場合は TeamSpeak3 ts3client_win64.exe、32 ビットの場合は ts3client_win32.exe です。
私はC++を使用しています
exeファイル名しか知らない場合、Windowsプログラムでプロセスが実行されているかどうかを知るにはどうすればよいですか? 問題のプロセスは、64 ビットの場合は TeamSpeak3 ts3client_win64.exe、32 ビットの場合は ts3client_win32.exe です。
私はC++を使用しています
関数を使用しCreateToolhelp32Snapshotて現在のプロセス テーブルのスナップショットを作成し、関数Process32Firstと関数を使用しProcess32Nextてスナップショットを繰り返します。構造体のszExeNameフィールドを見ると、各実行可能ファイルの名前を取得できます。PROCESSENTRY32
これらの関数の使用方法のサンプルについては、MSDN の例を参照してください。
このアプローチの利点は、 -EnumProcessesベースのソリューションとは異なり、競合状態に悩まされないことEnumProcessesです。プロセスの列挙が完了した後、プロセスを開く前 (またはプロセスを読み取る前) に、プロセスが破棄される可能性があります。プロセスの実行可能ファイル名)。
EnumProcesses、OpenProcess、およびGetModuleFileNameEx(または、QueryFullProcessImageNameVista 以降の場合)の組み合わせを使用できます。MSDN にも例があります。
Windows NT には、プロセスを列挙するための API がいくつかあります。