У меня два настольных приложения. После закрытия первого приложения первое приложение запустит второе приложение.
Как запустить второе приложение после завершения первого приложения?
Мое первое приложение создает отдельный рабочий стол.
У меня два настольных приложения. После закрытия первого приложения первое приложение запустит второе приложение.
Как запустить второе приложение после завершения первого приложения?
Мое первое приложение создает отдельный рабочий стол.
Вы можете использовать .NET Process Class для запуска процесса, как описано другими людьми. Тогда возникает вопрос, когда звонить.
В большинстве случаев использование события Form.Closing
или Form.Closed
представляется простым выбором.
Однако, если кто-то еще может обработать событие и может установить CancelEventArgs.Cancel
в true, это может оказаться неправильным местом для этого. Кроме того, события Form.Closing
и Form.Closed
не будут возникать при вызове Application.Exit()
. Я не уверен, возникнет ли какой-либо из событий, если возникнут какие-либо необработанные исключения. (Кроме того, вам нужно решить, хотите ли вы запустить второе приложение в случае Application.Exit()
или любого необработанного исключения).
Если вы действительно хотите, чтобы второе приложение (App2) запускалось после выхода первого приложения (App1), вы можете сыграть трюк:
Пример приложения консоли, приведенный ниже, показывает очень простой случай: мое приложение-образец сначала запускает блокнот. Затем, когда блокнот выходит, он запускает mspaint и выходит из себя.
Если вы хотите скрыть консоль, вы можете просто установить свойство "Тип вывода" из "Консольного приложения" в "Приложение Windows" на вкладке "Приложение" в Project Property.
Пример кода:
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/
в некоторых случаях необходимо добавить рабочий каталог в ваш код, чтобы приложение работало идеально. особенно когда приложение имеет зависимость от 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);
}
}