web-dev-qa-db-ja.com

C#から別のプロセスを閉じる方法

C#アプリケーションから別のプロセス(Windows Media Encoder)を閉じる必要がありますが、これまでのところ、次の方法で実行できます。

_Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();
_

ただし、Media Encoderアプリケーションがストリーミングまたは記録している場合は、終了時にダイアログが表示されます。

「エンコードを停止してもよろしいですか?」

では、コードから「はい」ボタンに答えるかクリックする方法はありますか?

[編集]多くのユーザーがProcess.kill()で応答していますが、Process.Kill();がすぐに終了するため、これはオプションではありませんWindows Media Encoder、およびWindows Media Encoder書き込み中のファイルをファイナライズしないため、ビデオファイルのインデックスを再作成する必要があります。したがって、Process.Kill();を使用できません。

15
Burimi

これがSO質問と回答の投稿 他のアプリケーションを制御する方法 .NETからです。受け入れられた回答は、4行のコードを使用してウィンドウを取得し、キーを送信しますそのウィンドウの特定のボタンを押してください。アプリケーションを完全に閉じるには、ここで最善の策かもしれません。

4
Paul Sasik
Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
    // now check the modules of the process
    foreach (ProcessModule module in process.Modules)
    {
        if (module.FileName.Equals("MyProcess.exe"))
        {
            process.Kill();
        } else 
        {
         enter code here if process not found
        }
    }
}
4
Alberich Drago