2009-10-19 87 views
4

在我的應用程序中,我可以選擇在Windows啓動時啓動應用程序。這很好。我也擁有它,以便在最小化時將應用程序最小化到系統托盤。有沒有一種方法可以讓它在與Windows同時啓動時自動最小化?我能想到的唯一方法是檢索系統已啓動的時間,並使用該數據確定機器最近是否啓動。顯然這個理論存在很多缺陷。任何人有任何其他想法如何做到這一點?C# - 在系統啓動時最小化爲托盤

回答

7

在程序中實現一個命令行開關,使程序最小化到托盤。當您在Windows啓動時啓動該程序時,只需包含該開關即可。

http://msdn.microsoft.com/en-us/library/acy3edy3.aspx

+1

很多應用程序都能成功完成這項工作。 MSN Messenger使用'/ background'開關來達到同樣的效果。 – adrianbanks

1

使用命令行參數,例如,/startminimised。在您的應用程序中,當應用程序啓動時檢查是否存在此開關(使用Environment.GetCommandLineArgs),並在開關存在時自動將其最小化。

然後在您的「啓動時運行」選項中,確保應用程序以此開關啓動,例如,將運行註冊表項或啓動組快捷方式設置爲myapp.exe /startminimised

然而,當用戶運行您的應用程序時,他們不會(通常是!)指定開關,因此該應用程序將顯示爲一個窗口。

3

在的WindowState變化表單 「屬性」, 「最小化」,或代碼:

 //After this: 
    InitializeComponent(); 
    //Place this line: 
    WindowState = FormWindowState.Minimized; 

希望這有助於!

+0

除了上面的代碼之後,您可以將showintaskbar = false禁用showintaskbar – Arash

0

你可以用一個參數調用你的程序,例如「-minimized」,然後處理該參數在你的程序:

在你的Program.cs,處理參數,然後傳遞參數到Form1:

 static void Main(string[] args) 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      if (args.Length != 0){ 
       Application.Run(new Form1(args[0])); 
      } 
      else 
      { 
       Application.Run(new Form1("normalState")); 
      } 
     } 

在你Form1.cs中,你可以調用與傳遞的參數的功能,並儘量減少應用程序:

public Form1(string parameter) 
    { 
     InitializeComponent(); 
     SetStartup(); //This function will set your app in the registry to run on startup. I'll explain this function below. 
     MinimizeApp(parameter); 
    } 

例如,使用此功能,我用,如果英語新使用-minimized參數啓動應用程序,然後它將開始最小化,在任務欄中彈出一個notifyicon圖標,並且一個泡泡說應用程序已啓動並在後臺運行。

public void MinimizeApp(string parameter) 
{ 
    if (parameter == "-minimized") 
    { 
     this.WindowState = FormWindowState.Minimized; 
     notifyIcon1.Visible = true; 
     notifyIcon1.BalloonTipText = "Program is started and running in the background..."; 
     notifyIcon1.ShowBalloonTip(500); 
     Hide(); 
    } 

} 

SetStartup函數將您的程序放入註冊表中,以便它在啓動時運行。 「C:/programs/app.exe」 -minimized然後它會啓動最小化,當您重新啓動計算機,它也

private void SetStartup(){ 
    Microsoft.Win32.RegistryKey key; 
    key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); 
    key.SetValue(AppName, Application.ExecutablePath.ToString()); 
    string ApplicationPath = "\"" + Application.ExecutablePath.ToString() + "\" -minimized"; 
    key.SetValue("MyApplicationName", ApplicationPath); 
    key.Close(); 
} 
現在,當你與-minimized參數啓動程序,例如

開始自動最小化。