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
(または、QueryFullProcessImageName
Vista 以降の場合)の組み合わせを使用できます。MSDN にも例があります。
Windows NT には、プロセスを列挙するための API がいくつかあります。