目前有一个程序可以打开另一个程序。如果该程序关闭,我需要执行一个动作。我对C#很陌生,所以可以帮助我指点正确的方向。
编辑:所以我能够获取当前表单以打开外部程序。然后需要关闭此表单,并且如果loader.exe关闭,则另一个表单需要具有执行操作的功能。这就是我在第一种形式中所拥有的。如何编写其他表单以了解该程序是否已结束。
public static class Program
{
public static bool OpenManager { get; set; }
public static int DeskNumber { get; set; }
/// The main entry point for the application.
[STAThread]
static void Main(string[] arguments)
{
/// Do not move this!
OpenManager = false;
MYvariable = 0;
/// ----------------
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Loader());
if (OpenManager)
{
if (MYvariable == 1)
{
System.Diagnostics.Process startProgram = System.Diagnostics.Process.Start("loader.exe", "-r 52");
startProgram.EnableRaisingEvents = true;
Application.Run(new Manager());
答案 0 :(得分:2)
假设您使用Process
class启动其他程序,您可以订阅Process
实例的Exited
事件:
Process myProcess = Process.Start("myprogram.exe", "arguments");
myProcess.EnableRaisingEvents = true;
myProcess.Exited += (sender, e) =>
{
// Do what you want to do when the process exited.
}
或者,为了更明确地执行它,声明一个在进程完成时调用的显式事件处理程序:
public void OnProcessExited(object sender, EventArgs e)
{
// Do what you want to do when the process exited.
}
public void StartProcess()
{
Process myProcess = Process.Start("myprogram.exe", "arguments");
myProcess.EnableRaisingEvents = true;
myProcess.Exited += OnProcessExited;
}
答案 1 :(得分:0)
如果您使用c#中的Process类打开并保持已打开程序的跟踪,您可以像这样处理其退出事件:
App.Exited += AppOnExited;
private static void AppOnExited(object sender, EventArgs eventArgs)
{
// Do your action here
}
App是您的过程对象的名称。
不要忘记你可能需要在完成后删除处理程序:
App.Exited -= AppOnExited;
答案 2 :(得分:0)
如果应用程序返回int
代码,您可以使用:
Process P = Process.Start("App.exe");
P.WaitForExit();
int code = P.ExitCode;
具有return
的应用程序:
public static int Main(string[] args)
{
return (int);
}
关闭时会将P.ExitCode
设置为返回值。