Как запустить приложение один из другого в C#?

У меня есть два настольных приложений. После закрытия первого приложения первое приложение запустит второе приложение.

Как запустить второе приложение после завершения первого приложения?

мое первое приложение создает отдельный рабочий стол.

6 ответов


вы можете использовать класс процесса .NET для запуска процесса, как описано другими людьми. Тогда вопрос в том, когда звонить.

в большинстве случаев, с помощью Form.Closing или Form.Closed событие кажется простым выбором.

однако, если кто-то еще может обрабатывать событие и может установить CancelEventArgs.Cancel правда, это может быть не то место, чтобы сделать это. Кроме того,Form.Closing и Form.Closed события не будут подняты, когда Application.Exit() называется. Я не уверен, будет ли какое-либо из событий вызывается при возникновении необработанных исключений. (Также, вы должны решить, хотите ли вы запустить второе приложение в случае Application.Exit() или любое необработанное исключение).

если вы действительно хотите убедиться, что второе приложение (App2) запускается после выхода первого приложения (App1), вы можете сыграть шутку:

  1. создать отдельное приложение (App0)
  2. app0 сегмент маркера запускает приложения app1
  3. app0 сегмент маркера ждет для app1, чтобы выйти с Процесс.WaitExit ()
  4. 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");

используйте .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/