16

我需要从 C# 应用程序中关闭另一个进程(Windows Media Encoder),到目前为止我可以这样做:

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

但如果媒体编码器应用程序正在流式传输或录制,它会在退出时显示一个对话框:

“您确定要停止编码吗?”

那么有没有办法从代码中回答或单击“是”按钮?

[编辑] 许多用户都在回答Process.kill(),但这不是一个选项,因为Process.Kill();会立即终止Windows Media Encoder,并且Windows Media Encoder不会完成正在写入的文件,这迫使我重新索引视频文件。所以不,我不能使用 Process.Kill();

4

2 回答 2

6
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
        }
    }
}
于 2018-03-12T23:06:20.987 回答
1

遍历 ProcessModule.filename 触发了“拒绝访问”异常,但是以下代码运行良好。

Process[] runningProcesses = Process.GetProcesses();
foreach (Process process in runningProcesses)
{
    if (process.ProcessName == PROC_NAME)
        process.CloseMainWindow();
}
于 2021-05-03T19:06:10.430 回答