如何从 c# 关闭另一个进程
本文关键字:另一个 进程 | 更新日期: 2023-09-27 17:56:43
我需要从C#应用程序关闭另一个进程(Windows Media Encoder),到目前为止,我可以使用:
Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow();
但是,如果媒体编码器应用程序正在流式传输或录制,则会在退出时显示一个对话框:
"你确定要停止编码吗?"
那么有没有办法回答或单击代码中的"是"按钮?
[编辑]许多用户用Process.kill()
回答,但这不是一个选项,因为Process.Kill();
会立即终止Windows媒体编码器,而Windows媒体编码器不会完成正在写入的文件,这迫使我重新索引视频文件。所以不,我不能使用进程.杀戮();
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
}
}
}
遍历 ProcessModule.filename 触发了"拒绝访问"异常,但是以下代码工作正常。
Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
if (process.ProcessName == PROC_NAME)
process.CloseMainWindow();
}