-1

API関数のみを使用して、Windowsで名前でプロセスを強制終了するにはどうすればよいですか?

4

4 に答える 4

1

kill が極度の偏見を持って終了することを意味する場合、TerminateProcess が常に存在します。別の方法 (メイン ウィンドウに WM_CLOSE を投稿するなど) を見つけることができる場合は、使用しないことをお勧めします。TerminateProcess を呼び出すと、ロードされた DLL が適切にアンロードされず、使用されたリソースが解放されない可能性があるためです。

本当の問題は、名前からプロセス ID を取得する方法です。これには通常、

EnumProcesses()
EnumProcessModules()
GetModuleFileNameEx()
GetModuleBaseName()

結果の基本モジュール名を探しているものと比較します。ただし、システム上で実行されているモジュール名のインスタンスが複数存在する場合があります。この状況でインスタンスをどのように区別しますか?

于 2011-02-01T12:37:24.503 に答える
1
killall yourprocess

http://en.wikipedia.org/wiki/Killall (OS を指定していないため、これは Linux にのみ適用されることに注意してください)

于 2011-02-01T12:39:54.047 に答える
-1

Windows を意味すると仮定すると、ZwQuerySystemInformationTerminateProcessを使用します。詳細なサンプルについては、こちらを参照してください:名前を指定してプロセスを強制終了する方法

于 2011-02-01T12:41:02.593 に答える