2

exeファイル名しか知らない場合、Windowsプログラムでプロセスが実行されているかどうかを知るにはどうすればよいですか? 問題のプロセスは、64 ビットの場合は TeamSpeak3 ts3client_win64.exe、32 ビットの場合は ts3client_win32.exe です。

私はC++を使用しています

4

3 に答える 3

5

関数を使用しCreateToolhelp32Snapshotて現在のプロセス テーブルのスナップショットを作成し、関数Process32Firstと関数を使用しProcess32Nextてスナップショットを繰り返します。構造体のszExeNameフィールドを見ると、各実行可能ファイルの名前を取得できます。PROCESSENTRY32

これらの関数の使用方法のサンプルについては、MSDN の例を参照してください。

このアプローチの利点は、 -EnumProcessesベースのソリューションとは異なり、競合状態に悩まされないことEnumProcessesです。プロセスの列挙が完了した後、プロセスを開く前 (またはプロセスを読み取る前) に、プロセスが破棄される可能性があります。プロセスの実行可能ファイル名)。

于 2012-12-21T14:44:16.113 に答える
1

EnumProcessesOpenProcess、およびGetModuleFileNameEx(または、QueryFullProcessImageNameVista 以降の場合)の組み合わせを使用できます。MSDN にもがあります。

于 2012-12-01T09:05:22.307 に答える
1

Windows NT には、プロセスを列挙するための API がいくつかあります。

  1. EnumProcesses
  2. ツールヘルプ
  3. NtQuerySystemInformation (非推奨)
  4. WMI のWin32_Process (リモートで動作)
于 2012-12-01T09:10:25.353 に答える