Как запустить приложение один из другого в C#?
У меня есть два настольных приложений. После закрытия первого приложения первое приложение запустит второе приложение.
Как запустить второе приложение после завершения первого приложения?
мое первое приложение создает отдельный рабочий стол.
6 ответов
вы можете использовать класс процесса .NET для запуска процесса, как описано другими людьми. Тогда вопрос в том, когда звонить.
в большинстве случаев, с помощью Form.Closing
или Form.Closed
событие кажется простым выбором.
однако, если кто-то еще может обрабатывать событие и может установить CancelEventArgs.Cancel
правда, это может быть не то место, чтобы сделать это. Кроме того,Form.Closing
и Form.Closed
события не будут подняты, когда Application.Exit()
называется. Я не уверен, будет ли какое-либо из событий вызывается при возникновении необработанных исключений. (Также, вы должны решить, хотите ли вы запустить второе приложение в случае Application.Exit()
или любое необработанное исключение).
если вы действительно хотите убедиться, что второе приложение (App2) запускается после выхода первого приложения (App1), вы можете сыграть шутку:
- создать отдельное приложение (App0)
- app0 сегмент маркера запускает приложения app1
- app0 сегмент маркера ждет для app1, чтобы выйти с Процесс.WaitExit ()
- App0 запускает App2 и выходит из себя
пример консольного приложения, прилагаемый ниже, показывает очень простой случай: мое примерное приложение сначала запускает Блокнот. Затем, когда Блокнот выходит, он запускает 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;
}
}
}
}
использовать класс процесс при выходе из первого приложения.
var p = new Process();
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours.
p.Start();
вы можете просто отправить его, поэтому, когда вы собираетесь выйти из первого приложения, просто запустите второе приложение через:
System.Diagnostics.Process.Start(@"PATH\NAME.EXE");
пример кода:
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/