J'ai deux applications de bureau. Après la fermeture de la première application, la première application démarrera la deuxième application.
Comment démarrer la deuxième application après avoir terminé la première application?
Ma première application crée un bureau séparé.
Vous pouvez utiliser la classe de processus .NET pour démarrer un processus comme décrit par les autres personnes. Alors la question est quand appeler.
Dans la plupart des cas, l’utilisation des événements Form.Closing
ou Form.Closed
semble être un choix facile.
Cependant, si quelqu'un d'autre peut gérer l'événement et peut définir CancelEventArgs.Cancel
sur true, ce n'est peut-être pas le bon endroit pour le faire. De plus, les événements Form.Closing
et Form.Closed
ne seront pas déclenchés lorsque Application.Exit()
est appelé. Je ne sais pas si l'un ou l'autre des événements sera déclenché si des exceptions non gérées se produisent. (En outre, vous devez décider si vous souhaitez lancer la deuxième application en cas de Application.Exit()
ou de toute exception non gérée).
Si vous voulez vraiment vous assurer que la deuxième application (App2) se lance après la première application (App1), vous pouvez jouer un tour:
L'exemple d'application de la console joint ci-dessous illustre un cas très simple: mon exemple d'application lance le bloc-notes en premier. Ensuite, lorsque le bloc-notes se ferme, il lance mspaint et se ferme.
Si vous souhaitez masquer la console, vous pouvez simplement définir la propriété 'Type de sortie' de 'Application console' sur 'Application Windows' sous l'onglet 'Application' de la propriété du projet.
Exemple de code:
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;
}
}
}
}
Utilisez la classe Process lorsque vous quittez votre première application.
var p = new Process();
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours.
p.Start();
Vous pouvez simplement Shell, alors quand vous êtes sur le point de quitter la première application, démarrez simplement la deuxième application via:
System.Diagnostics.Process.Start(@"PATH\NAME.EXE");
Utilisez la classe Process
class de .NET.
Quelques exemples de code:
try
{
stateMainLayout b = new stateMainLayout();
b.Location = Screen.AllScreens[1].WorkingArea.Location;
b.ShowDialog();
}
catch
{
stateMainLayout b = new stateMainLayout();
b.ShowDialog();
}
CSharp/PowerShell Appel d'un autre programme et envoi/réception de données: https://huseyincakir.wordpress.com/2014/12/23/sending-input-from-csharppowershell-toanother-program/