it-swarm.com.de

Wie starte ich eine Anwendung in C # von einer anderen?

Ich habe zwei Desktop-Anwendungen. Nach dem Schließen der ersten Anwendung startet die erste Anwendung die zweite Anwendung.

Wie starte ich die zweite Bewerbung nach Abschluss der ersten Bewerbung?

Meine erste Anwendung erstellt einen separaten Desktop.

17
Suriyan Suresh

Sie können die Prozessklasse von .NET verwenden, um einen Prozess wie von anderen Personen beschrieben zu starten. Dann ist die Frage, wann Sie anrufen sollen. 

In den meisten Fällen scheint die Verwendung eines Form.Closing- oder Form.Closed-Ereignisses eine einfache Wahl zu sein. 

Wenn jedoch jemand anderes mit dem Ereignis umgehen kann und CancelEventArgs.Cancel auf true setzen kann, ist dies möglicherweise nicht der richtige Ort dafür. Form.Closing- und Form.Closed-Ereignisse werden auch nicht ausgelöst, wenn Application.Exit() aufgerufen wird. Ich bin nicht sicher, ob eines der Ereignisse ausgelöst wird, wenn unbehandelte Ausnahmen auftreten. (Außerdem müssen Sie entscheiden, ob Sie die zweite Anwendung im Fall von Application.Exit() oder einer nicht behandelten Ausnahme starten möchten). 

Wenn Sie wirklich sicherstellen möchten, dass die zweite Anwendung (App2) gestartet wird, nachdem die erste Anwendung (App1) beendet wurde, können Sie einen Trick ausführen:

  1. Erstellen Sie eine separate Anwendung (App0)
  2. App0 startet App1
  3. App0 wartet darauf, dass App1 mit Process.WaitExit () beendet wird.
  4. App0 startet App2 und beendet sich selbst

Die unten angefügte Beispiel-Konsolen-App zeigt einen sehr einfachen Fall: Meine Beispiel-App startet zuerst den Notizblock. Wenn der Notizblock beendet wird, startet er mspaint und beendet sich selbst. 

Wenn Sie die Konsole ausblenden möchten, können Sie einfach die Eigenschaft 'Output Type' von 'Console Application' auf 'Windows Application' auf der Registerkarte 'Application' der Projekteigenschaft setzen. 

Beispielcode: 

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

Verwenden Sie die Klasse Process , wenn Sie Ihre erste Anwendung beenden.

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

Sie können einfach loslegen. Wenn Sie also gerade die erste App beenden, starten Sie einfach die zweite App über: 

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

Verwenden Sie die Process -Klasse von .NET.

1
Mitch Wheat

Einige Beispielcodes:

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

Hier bedeutet ProcName den Namen der Anwendung, die Sie starten möchten, es können jedoch nur die Systemanwendung und eine andere Anwendung gestartet werden

        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);
            }
        }
0
Abdul Moiz

CSharp/PowerShell Ein anderes Programm aufrufen und Daten senden/empfangen: https://huseyincakir.wordpress.com/2014/12/23/sending-input-from-csharppowershell-to-another-program/

0
huse.ckr

in einigen Fällen muss Arbeitsverzeichnis zu Ihrem Code hinzugefügt werden, damit die App einwandfrei funktioniert. vor allem, wenn die App von DLL und anderen Ressourcen abhängig ist.

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