web-dev-qa-db-fra.com

Comment lancer l'application l'une à partir de l'autre en C #?

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é.

17
Suriyan Suresh

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:

  1. Créer une application séparée (App0)
  2. App0 lance App1
  3. App0 attend que App1 se ferme avec Process.WaitExit ()
  4. App0 lance App2 et se ferme tout seul

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;
            }
        }
    }
}
15
Chansik Im

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();
16
JP Alioto

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");
3
Quintin Robinson

Utilisez la classe Process class de .NET.

1
Mitch Wheat

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();
}
0
blockangular

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/

0
huse.ckr