【发布时间】:2010-12-08 04:13:18
【问题描述】:
在我的应用程序中,我可以选择在 Windows 启动时启动应用程序。这很好用。我也有它,以便在最小化时将应用程序最小化到系统托盘。有没有办法让它在与 Windows 同时启动时自动最小化?我能想到的唯一方法是检索他们系统的运行时间,并使用该数据来确定机器是否最近启动。显然,这个理论有很多缺陷。有人对如何做到这一点有任何其他想法吗?
【问题讨论】:
标签: c# startup system-tray minimize
在我的应用程序中,我可以选择在 Windows 启动时启动应用程序。这很好用。我也有它,以便在最小化时将应用程序最小化到系统托盘。有没有办法让它在与 Windows 同时启动时自动最小化?我能想到的唯一方法是检索他们系统的运行时间,并使用该数据来确定机器是否最近启动。显然,这个理论有很多缺陷。有人对如何做到这一点有任何其他想法吗?
【问题讨论】:
标签: c# startup system-tray minimize
在您的程序中实现一个命令行开关,使您的程序最小化到托盘。当您使用 Windows 启动程序启动程序时,只需包含开关即可。
【讨论】:
/background 开关来实现相同的效果。
使用命令行参数,例如/开始最小化。在您的应用中,在应用启动时检查是否存在此开关(使用Environment.GetCommandLineArgs),如果存在则自动最小化。
然后在“启动时运行”选项中,确保使用此开关启动应用程序,例如将运行注册表项或启动组快捷方式设置为myapp.exe /startminimised。
但是,当用户运行您的应用时,他们不会(通常!)指定开关,因此应用将显示为一个窗口。
【讨论】:
在 WindowState 中的表单“属性”更改为“最小化”,或在代码中:
//After this:
InitializeComponent();
//Place this line:
WindowState = FormWindowState.Minimized;
希望对您有所帮助!
【讨论】:
您可以使用参数调用您的程序,例如“-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 参数启动应用程序,那么它将开始最小化,任务栏中会弹出一个通知图标,并显示一个气泡,说明应用程序已启动并在后台运行。
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 然后它会开始最小化,当你重新启动计算机时,它也会自动最小化。
【讨论】: