C# 使用wpf应用程序关闭.exe文件并单击按钮
我想关闭电脑上使用WPF编程运行的可执行文件(.EXE),我已通过以下方式成功启动此.EXE文件:C# 使用wpf应用程序关闭.exe文件并单击按钮,c#,process,system.diagnostics,kill-process,C#,Process,System.diagnostics,Kill Process,我想关闭电脑上使用WPF编程运行的可执行文件(.EXE),我已通过以下方式成功启动此.EXE文件: if (_MyPath != "") { Process StartApp = new Process(); string str = @_MyPath; StartApp.StartInfo.FileName = str; StartApp.Start(); } else { MessageBox.Show("Path Empty", "Error", Messag
if (_MyPath != "")
{
Process StartApp = new Process();
string str = @_MyPath;
StartApp.StartInfo.FileName = str;
StartApp.Start();
}
else
{
MessageBox.Show("Path Empty", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
现在,我的目的是通过单击按钮来关闭此.EXE文件的进程?首先,您需要使用process.getprocesss来查找有问题的进程 或者甚至可以按名称获取进程: 一旦被发现,你就杀人。以下是一些文档:
首先,您需要使用process.GetProcesses查找有问题的流程 或者甚至可以按名称获取进程: 一旦被发现,你就杀人。以下是一些文档:
首先,您需要使用process.GetProcesses查找有问题的流程 或者甚至可以按名称获取进程: 一旦被发现,你就杀人。以下是一些文档:
首先,您需要使用process.GetProcesses查找有问题的流程 或者甚至可以按名称获取进程: 一旦被发现,你就杀人。以下是一些文档:
保存进程的引用,当您想要停止它时,调用Kill方法:
StartApp.Kill();
保存进程的引用,如果要停止它,请调用Kill方法:
StartApp.Kill();
保存进程的引用,如果要停止它,请调用Kill方法:
StartApp.Kill();
保存进程的引用,如果要停止它,请调用Kill方法:
StartApp.Kill();
将流程实例存储在字段中,并对其调用或 CloseMainWindow向应用程序发送一条window close消息,让应用程序在关闭前询问用户,执行任何必需的操作,甚至决定忽略该请求 另一方面,Kill要求操作系统立即终止目标进程,可能会导致数据丢失。它也是一个异步调用,这意味着您必须调用以等待进程结束 在这两种情况下,如果目标进程在调用Kill或CloseMainWindow之前终止,或者正在终止,或者操作系统根本无法终止它(可能是由于安全限制),则需要处理可能引发的异常 为了避免某些异常,您可以通过调用 您可以尝试以下方法:
Process _childApp;
private void SpawnProcess()
{
...
if (_MyPath != "")
{
_childApp= new Process();
string str = @_MyPath;
_childApp.StartInfo.FileName = str;
_childApp.Start();
}
else
{
MessageBox.Show("Path Empty", "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
}
...
}
private void StopProcess()
{
if (_childApp.HasExited)
return;
try
{
_childApp.Kill();
if (!_childApp.WaitForExit(5000))
{
MessageBox.Show("Closing the app takes too long","Warning",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
catch(Exception exc)
{
MessageBox.Show(exc.ToString(),"Failed to close app",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
将流程实例存储在字段中,并对其调用或 CloseMainWindow向应用程序发送一条window close消息,让应用程序在关闭前询问用户,执行任何必需的操作,甚至决定忽略该请求 另一方面,Kill要求操作系统立即终止目标进程,可能会导致数据丢失。它也是一个异步调用,这意味着您必须调用以等待进程结束 在这两种情况下,如果目标进程在调用Kill或CloseMainWindow之前终止,或者正在终止,或者操作系统根本无法终止它(可能是由于安全限制),则需要处理可能引发的异常 为了避免某些异常,您可以通过调用 您可以尝试以下方法:
Process _childApp;
private void SpawnProcess()
{
...
if (_MyPath != "")
{
_childApp= new Process();
string str = @_MyPath;
_childApp.StartInfo.FileName = str;
_childApp.Start();
}
else
{
MessageBox.Show("Path Empty", "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
}
...
}
private void StopProcess()
{
if (_childApp.HasExited)
return;
try
{
_childApp.Kill();
if (!_childApp.WaitForExit(5000))
{
MessageBox.Show("Closing the app takes too long","Warning",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
catch(Exception exc)
{
MessageBox.Show(exc.ToString(),"Failed to close app",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
将流程实例存储在字段中,并对其调用或 CloseMainWindow向应用程序发送一条window close消息,让应用程序在关闭前询问用户,执行任何必需的操作,甚至决定忽略该请求 另一方面,Kill要求操作系统立即终止目标进程,可能会导致数据丢失。它也是一个异步调用,这意味着您必须调用以等待进程结束 在这两种情况下,如果目标进程在调用Kill或CloseMainWindow之前终止,或者正在终止,或者操作系统根本无法终止它(可能是由于安全限制),则需要处理可能引发的异常 为了避免某些异常,您可以通过调用 您可以尝试以下方法:
Process _childApp;
private void SpawnProcess()
{
...
if (_MyPath != "")
{
_childApp= new Process();
string str = @_MyPath;
_childApp.StartInfo.FileName = str;
_childApp.Start();
}
else
{
MessageBox.Show("Path Empty", "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
}
...
}
private void StopProcess()
{
if (_childApp.HasExited)
return;
try
{
_childApp.Kill();
if (!_childApp.WaitForExit(5000))
{
MessageBox.Show("Closing the app takes too long","Warning",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
catch(Exception exc)
{
MessageBox.Show(exc.ToString(),"Failed to close app",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
将流程实例存储在字段中,并对其调用或 CloseMainWindow向应用程序发送一条window close消息,让应用程序在关闭前询问用户,执行任何必需的操作,甚至决定忽略该请求 另一方面,Kill要求操作系统立即终止目标进程,可能会导致数据丢失。它也是一个异步调用,这意味着您必须调用以等待进程结束 在这两种情况下,如果目标进程在调用Kill或CloseMainWindow之前终止,或者正在终止,或者操作系统根本无法终止它(可能是由于安全限制),则需要处理可能引发的异常 为了避免某些异常,您可以通过调用 您可以尝试以下方法:
Process _childApp;
private void SpawnProcess()
{
...
if (_MyPath != "")
{
_childApp= new Process();
string str = @_MyPath;
_childApp.StartInfo.FileName = str;
_childApp.Start();
}
else
{
MessageBox.Show("Path Empty", "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
}
...
}
private void StopProcess()
{
if (_childApp.HasExited)
return;
try
{
_childApp.Kill();
if (!_childApp.WaitForExit(5000))
{
MessageBox.Show("Closing the app takes too long","Warning",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
catch(Exception exc)
{
MessageBox.Show(exc.ToString(),"Failed to close app",
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
你需要找到有问题的过程,一旦找到,你就杀了@Ahmedilya因为OP已经有了一个对流程对象的引用是的,我重新阅读了它,之前错过了它。很抱歉你需要找到有问题的过程,一旦找到,你就杀了@Ahmedilya因为OP已经有了一个对流程对象的引用是的,我重新阅读了它,之前错过了它。很抱歉你需要找到有问题的过程,一旦找到,你就杀了@Ahmedilya因为OP已经有了一个对流程对象的引用是的,我重新阅读了它,之前错过了它。很抱歉你需要找到有问题的过程,一旦找到,你就杀了@Ahmedilya因为OP已经有了一个对流程对象的引用是的,我重新阅读了它,之前错过了它。很抱歉当你已经有了一个对itAgreed@PanagiotisKanavos的引用时,就不需要搜索这个过程了——我重新阅读了它,并找到了答案。但如果他们真的这么做了,我会采取更多的解决方案