Pregunta

Tengo dos aplicaciones de escritorio. Después de cerrar la primera aplicación, la primera aplicación se iniciará la segunda aplicación.

¿Cómo inicio de la segunda aplicación después de terminar la primera aplicación?

Mi primera aplicación crea un escritorio independiente.

¿Fue útil?

Solución

Puede utilizar la clase de proceso de .NET para iniciar un proceso que otras personas describen. Entonces la pregunta es cuándo llamar.

En la mayoría de los casos, ya sea usando Form.Closing o evento Form.Closed parece ser una elección fácil.

Sin embargo, si otra persona puede controlar el evento y se puede fijar a CancelEventArgs.Cancel cierto, esto puede no ser el lugar adecuado para hacer esto. Además, los eventos Form.Closing y Form.Closed no serán levantados cuando Application.Exit() se llama. No estoy seguro de si alguno de los eventos serán levantados si se producen excepciones no controladas. (También, usted tiene que decidir si desea iniciar la segunda aplicación en el caso de Application.Exit() o cualquier excepción no controlada).

Si realmente quiere asegurarse de que la segunda aplicación (App2) se inicia después de la primera aplicación (App1) salió, puede jugar un truco:

  1. Crea una solicitud por separado (APP0)
  2. APP0 lanza App1
  3. APP0 espera App1 para salir con Process.WaitExit ()
  4. APP0 lanza App2 y sale de sí

La aplicación de consola de ejemplo se adjunta a continuación muestra un caso muy simple: mi aplicación de la muestra pone en marcha la primera libreta. Entonces, cuando se cierra la libreta, se pone en marcha y la propia mspaint salidas.

Si desea ocultar la consola, sólo tiene que establecer la propiedad 'Tipo de salida' de 'aplicación de consola' a 'Aplicación de Windows' en la pestaña de propiedades de Proyecto 'Aplicación'.

Código de ejemplo:

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;
            }
        }
    }
}

Otros consejos

Utilice la clase Process Al salir su primera aplicación.

var p = new Process();
p.StartInfo.FileName   = "notepad.exe";  // just for example, you can use yours.
p.Start();

Se podía sin caparazón a él, para que cuando esté a punto de salir de la primera aplicación acaba de comenzar la segunda aplicación a través de:

System.Diagnostics.Process.Start(@"PATH\NAME.EXE");

El uso de .NET Process clase.

Algunos código de ejemplo:

try
{
  stateMainLayout b = new stateMainLayout();
 b.Location = Screen.AllScreens[1].WorkingArea.Location;
 b.ShowDialog();
 }
catch
{
 stateMainLayout b = new stateMainLayout();
b.ShowDialog();
}

CSharp / PowerShell Para llamar a otra del programa y enviar / Recieve datos: https: //huseyincakir.wordpress. com / 2014/12/23 / envío de entradas-de-csharppowershell-a-otra-programa /

En algunos casos su necesario añadir Directorio de trabajo  a su código con el fin de hacer que la aplicación funciona perfectamente. especialmente cuando la aplicación tiene la dependencia a la DLL y otros recursos.

 TestProcess.StartInfo.FileName = "notepad.exe"; 
 TestProcess.StartInfo.WorkingDirectory = @"C:\\blah\blah\Directory of notepad.exe\";
 TestProcess.Start();

Aquí NombreProc significa el nombre de la aplicación que desea iniciar pero sólo puede iniciar la aplicación del sistema y alguna otra aplicación

        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);
            }
        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top