C#アプリケーションから別のプロセス(Windows Media Encoder)を閉じる必要がありますが、これまでのところ、次の方法で実行できます。
_Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();
_
ただし、Media Encoderアプリケーションがストリーミングまたは記録している場合は、終了時にダイアログが表示されます。
「エンコードを停止してもよろしいですか?」
では、コードから「はい」ボタンに答えるかクリックする方法はありますか?
[編集]多くのユーザーがProcess.kill()
で応答していますが、Process.Kill();
がすぐに終了するため、これはオプションではありませんWindows Media Encoder、およびWindows Media Encoder書き込み中のファイルをファイナライズしないため、ビデオファイルのインデックスを再作成する必要があります。したがって、Process.Kill();を使用できません。
これがSO質問と回答の投稿 他のアプリケーションを制御する方法 .NETからです。受け入れられた回答は、4行のコードを使用してウィンドウを取得し、キーを送信しますそのウィンドウの特定のボタンを押してください。アプリケーションを完全に閉じるには、ここで最善の策かもしれません。
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
}
}
}