0

我有一个需要与 Windows 一起运行的应用程序,我已经成功地做到了,但我需要它启动到系统托盘中,我也有它在做,但是当用户从桌面图标启动它时也会发生这种情况。

我现在面临的问题是让它在启动时在托盘中启动,同时允许用户打开应用程序而不会在启动时消失到托盘中。

我已经看到使用启动键中的启动开关来实现这一点,例如 c:\program.exe -h 和它的 -h 使应用程序在托盘中启动。

有没有这样的可能,或者有没有其他方法可以解决这个问题?

我考虑过诸如在第一次启动一天时更改的注册表项之类的事情,但是如果计算机关闭并再次打开,我想到的所有事情都会出现上述故障。除了为启动创建另一个应用程序之外,我不确定如何实现这一点。

请注意:应用程序可以被终止,因此它会检查现有进程并在发现不合适时将其最大化,这将带来其他问题。这也在一定程度上完成了,因为一次只能运行一个实例,但如前所述,我可以让它在第一次运行时启动到托盘,但如果它被终止并再次启动,它将再次进入托盘,这就是我想避免。

4

2 回答 2

0

由 C# 回答- 是否可以创建一个可以使用参数从命令行运行的 Windows 窗体应用程序?以及 Hans Passant 使用逗号选项所说的话。

这是我放入 Program.cs 类的代码:

[STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Main_Form main = new Main_Form();
            main.Show();
            foreach (string s in args)
            {
                if (s == "-h")
                {
                    main.Hide();
                }
            }
            Application.Run();
        }

改编自Hide form at launch的代码集

于 2012-11-17T20:57:23.870 回答
0

该应用程序应该在注册表中有一个条目HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

以及如何使用 c# 编写注册密钥

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();
于 2012-11-17T11:55:55.650 回答