1

現在64ビットマシンで実行されているプロセスを反復しようとしています.EnumProcessModulesは32ビットプログラムでうまく機能しますが、64ビットプログラムではうまくいきません.私が使用しているDevc ++でEnumProcessModulesExを実装しようとしました(visualstudioを持っていません)ができませんでした.ヘッダーファイルを機能させることができません。この質問を参照してください。別の方法があるかどうかを考えていましたか?

私のプログラムでは、特定のexeによって実行されるプロセスが実行されているかどうかを知る必要があります。プロセスは32ビットまたは64ビットの場合があるため、両方を確認する必要があります。

4

1 に答える 1

1

EnumProcessModules実際には、呼び出しプロセスがターゲット プロセスと同じアーキテクチャ (32 ビットと 64 ビット) を使用する必要があります。ただし、ユースケースでは、その機能は必要ありません。

現在のプロセス テーブルのスナップショットを作成し、そのスナップショットを反復してプロセス名を探す方が効率的です (競合状態に悩まされることはありません...)。

  1. CreateToolhelp32Snapshotプロセス テーブルのスナップショットを作成するための呼び出し

  2. と を使用Process32FirstProcess32Nextて、スナップショットを繰り返します。

  3. スナップショットの各要素について、 (構造体szExeFileの) フィールドをチェックして、実行可能ファイル名を取得します。PROCESSENTRY32

Windows のファイル名では大文字と小文字が区別されないため、おそらく大文字と小文字を区別しない名前の比較を行う必要があります。

于 2012-12-21T14:20:32.327 に答える