2009-10-19 2 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

alse вы можете отключить showintaskbar с помещением showintaskbar = false после кода выше – 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); 
    } 

Например, с помощью этой функции я использовал, если вы видите tart приложение с параметром -minimized, затем он будет сведен к минимуму, на панели задач появится уведомление, и пузырь говорит, что приложение запускается и работает в фоновом режиме.

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 помещает вашу программу в реестр, поэтому она запускается при запуске.

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 параметра, например: «C: /programs/app.exe» -minimized тогда он начнет минимизированы, и при перезагрузке компьютера, он также автоматически запускается.

Смежные вопросы