我有两个桌面应用程序。关闭第一个应用程序后,第一个应用程序将启动第二个应用程序。
完成第一次申请后如何开始第二次申请?
我的第一个应用程序创建了一个单独的桌面。
我有两个桌面应用程序。关闭第一个应用程序后,第一个应用程序将启动第二个应用程序。
完成第一次申请后如何开始第二次申请?
我的第一个应用程序创建了一个单独的桌面。
退出第一个应用程序时使用Process 类。
var p = new Process();
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours.
p.Start();
您可以使用 .NET 的 Process Class 来启动其他人描述的进程。那么问题是什么时候打电话。
在大多数情况下,使用 anyForm.Closing
或Form.Closed
event 似乎是一个简单的选择。
但是,如果其他人可以处理该事件并且可以设置CancelEventArgs.Cancel
为 true,那么这可能不是执行此操作的正确位置。此外,Form.Closing
调用时Form.Closed
不会引发事件 。Application.Exit()
如果发生任何未处理的异常,我不确定是否会引发任何一个事件。(此外,您必须决定是否要启动第二个应用程序以防出现Application.Exit()
或任何未处理的异常)。
如果你真的想确保第二个应用程序 (App2) 在第一个应用程序 (App1) 退出后启动,你可以玩一个技巧:
下面附加的示例控制台应用程序显示了一个非常简单的案例:我的示例应用程序首先启动记事本。然后,当记事本退出时,它会启动 mspaint 并自行退出。
如果要隐藏控制台,只需在项目属性的“应用程序”选项卡下将“输出类型”属性从“控制台应用程序”设置为“Windows 应用程序”即可。
示例代码:
using System;
using System.Diagnostics;
namespace ProcessExitSample
{
class Program
{
static void Main(string[] args)
{
try
{
Process firstProc = new Process();
firstProc.StartInfo.FileName = "notepad.exe";
firstProc.EnableRaisingEvents = true;
firstProc.Start();
firstProc.WaitForExit();
//You may want to perform different actions depending on the exit code.
Console.WriteLine("First process exited: " + firstProc.ExitCode);
Process secondProc = new Process();
secondProc.StartInfo.FileName = "mspaint.exe";
secondProc.Start();
}
catch (Exception ex)
{
Console.WriteLine("An error occurred!!!: " + ex.Message);
return;
}
}
}
}
您可以直接使用它,因此当您即将退出第一个应用程序时,只需通过以下方式启动第二个应用程序:
System.Diagnostics.Process.Start(@"PATH\NAME.EXE");
使用 .NET 的Process
类。
一些示例代码:
try
{
stateMainLayout b = new stateMainLayout();
b.Location = Screen.AllScreens[1].WorkingArea.Location;
b.ShowDialog();
}
catch
{
stateMainLayout b = new stateMainLayout();
b.ShowDialog();
}
CSharp/PowerShell 调用另一个程序并发送/接收数据: https ://huseyincakir.wordpress.com/2014/12/23/sending-input-from-csharppowershell-to-another-program/
在某些情况下,有必要将 工作目录添加 到您的代码中,以使应用程序完美运行。特别是当应用程序依赖于 DLL 和其他资源时。
TestProcess.StartInfo.FileName = "notepad.exe";
TestProcess.StartInfo.WorkingDirectory = @"C:\\blah\blah\Directory of notepad.exe\";
TestProcess.Start();
这里 ProcName 是你要启动的应用程序的名称,但它只能启动系统应用程序和其他一些应用程序
public void Startapp(String ProcName)
{
try
{
Process firstProc = new Process();
firstProc.StartInfo.FileName = ProcName;
firstProc.EnableRaisingEvents = true;
firstProc.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}