2015-05-05 4 views
5

Ich habe eine C# WinForm-Anwendung. Derzeit läuft es von einer Desktopverknüpfung. Aber ich möchte es beim Systemstart hinzufügen. Der Benutzer kann entscheiden, ob er beim Start ausgeführt wird oder nicht.Ermitteln Sie eine Anwendung von Benutzern ausgeführt klicken oder Windows-Start in C#

Wenn es beim Systemstart ausgeführt wird, möchte ich es auf der Taskleiste minimieren, andernfalls wird es auf der Taskleiste ausgeführt.

Gibt es eine Möglichkeit zu überprüfen, ob es beim Start gestartet wird oder nicht?

+2

Sie können Argument übergeben, wenn Sie von Start ausgeführt – Shaharyar

Antwort

7

Ihre Anwendung nicht in der Lage sein zu erkennen, (selbst) sie beim Start oder durch normale Benutzer Start ins Leben gerufen wurde. Sie können jedoch arguments an Ihre Anwendung übergeben und dann Ihre Anwendung richtig reagieren lassen. Hier ist ein grundlegendes Beispiel

Zuerst starten in program.csmain Methode. Standardmäßig werden die Startargumente nicht angezeigt. Durch das Hinzufügen des Parameters string[] args zur main()-Methode werden jedoch die Befehlsargumente verfügbar gemacht. Wie

static class Program 
{ 
    public static bool LaunchedViaStartup { get; set; } 

    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main(string[] args) 
    { 
     Program.LaunchedViaStartup = args != null && args.Any(arg => arg.Equals("startup", StringComparison.CurrentCultureIgnoreCase)); 

     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
} 

Jetzt ist der Code einfach ist, haben wir eine statische Variable in die Program Klasse LaunchedViaStartup dann, bevor das Programm beginnt unsere Form, die wir überprüfen, ob die Befehlsargumente enthält unsere speziellen startup Argument (über Linq) genannt. Der Name für dieses Argument liegt ganz bei Ihnen.

Jetzt in unserer Hauptform (ja Basic) haben wir Zugriff auf diese Eigenschaft für die Lebensdauer der Anwendung.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     MessageBox.Show(this, string.Format("Lanched Via Startup Arg:{0}", Program.LaunchedViaStartup)); 
    } 
} 

Schließlich dies testen Sie einfach die Projekteigenschaften-Fenster und stellen den Command line arguments ähnlich den Screenshot unten öffnen.

enter image description here

schließlich das Start Argument außerhalb von Visual Studio zu testen, den Start Argumente Ihrer Verknüpfung, wie der Screenshot unten hinzufügen.

enter image description here

+0

Das ist wirklich eine nette Zusammenarbeit. Ich werde es versuchen. Danke & +1. –

+0

Ihr Willkommen, sollte genug Informationen zur Verfügung stellen, um zu beginnen. Prost – Nico

+0

Nur aus Neugier, wenn die Anwendung keine Verknüpfung hat, in diesem Fall gibt es eine Möglichkeit, das Argument zu übergeben? –

2

Empfehle Zeilenargumente, wenn du beim Start startest (definiere sie im Shortcut-Pfad).

Holen Sie sich die Argumente in Ihrer Anwendung main und treffen Sie die Entscheidung basierend auf den Argumenten. Nun, es liegt an Ihnen, wie Sie es erreichen.

prüft MSDN

Here it is for WinForm

Verwandte Themen