У меня есть два настольных приложения. После закрытия первого приложения первое приложение запустит второе приложение.
Как запустить второе приложение после завершения первого приложения?
Мое первое приложение создает отдельный рабочий стол.
У меня есть два настольных приложения. После закрытия первого приложения первое приложение запустит второе приложение.
Как запустить второе приложение после завершения первого приложения?
Мое первое приложение создает отдельный рабочий стол.
Вы можете использовать класс процесса .NET, чтобы запустить процесс, как описано другими людьми. Тогда вопрос, когда звонить.
В большинстве случаев использование события Form.Closing
или Form.Closed
кажется простым выбором.
Однако, если кто-то другой может обработать событие и установить для 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;
}
}
}
}
Используйте класс Process при выходе из своего первого приложения. .
var p = new Process();
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours.
p.Start();
Closing
), так как процесс запускается асинхронно, и это не помешает вашему приложению продолжать делать то, что оно должно делать, включая завершение работы.
- person Pavel Minaev; 11.07.2009
Вы можете просто отказаться от него, поэтому, когда вы собираетесь выйти из первого приложения, просто запустите второе приложение через:
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/
В некоторых случаях необходимо добавить в код Рабочий каталог, чтобы приложение работало идеально. особенно когда приложение зависит от 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);
}
}