6

我已经使用 Windows Installer 创建了我的应用程序的设置。

现在我想在 Windows 启动时启动应用程序并将其移动到系统最小化托盘,因为我不想在 Windows 启动时显示 GUI(视图)。

我在 Google 中搜索过,发现使用了注册表项,但这对我来说还不够,因为我还想移动到系统最小化托盘和应用程序运行。

我这样做的目的是,用户每次启动系统时都不会在应用程序启动时感到烦人。

谁能有答案?谢谢..

4

3 回答 3

4

您还必须设置此属性才能将其从任务栏中删除

ShowInTaskbar= false;
于 2013-08-14T08:58:43.087 回答
3

在您的应用程序中,为该事件添加一个事件处理程序FrameworkElement.Loaded。在该处理程序中,添加以下代码:

WindowState = WindowState.Minimized;

这将在启动时最小化应用程序。

要在计算机启动时启动应用程序,您需要将程序添加到 Windows 调度程序并将其设置为在启动时运行。您可以在 MSDN的计划任务页面上找到更多信息。

于 2013-08-14T08:56:07.733 回答
2

也许这个答案来晚了,但我还是想写下来,以帮助那些还没有找到解决方案的人。

首先,您需要添加一个功能,以在系统启动时自动启动时将您的应用程序最小化到托盘。

  1. 在您的 App.xaml 文件中,将原始文件更改StartupUri=...Startup="App_Startup"如下所示。App_Startup是您的函数名称,可以更改。
<Application x:Class="Yours.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Startup="App_Startup">
  1. 在您的 App.xaml.cs 文件中。添加以下功能:
public partial class App : Application
{    
    private void App_Startup(object sender, StartupEventArgs e)
    {
        // Process command line args
        var isAutoStart = false;
        for (int i = 0; i != e.Args.Length; ++i)
        {
            if (e.Args[i] == "/AutoStart")
            {
                isAutoStart = true;
            }
        }

        // Create main application window, starting minimized if specified
        MainWindow mainWindow = new MainWindow();
        if (isAutoStart)
        {
            mainWindow.WindowState = WindowState.Minimized;
        }
        mainWindow.OnAutoStart();
    }
}
  1. 在 MainWindow.xaml.cs 中,添加如下函数:
public void OnAutoStart()
{
    if (WindowState == WindowState.Minimized)
    {
        //Must have this line to prevent the window start locatioon not being in center.
        WindowState = WindowState.Normal;
        Hide();
        //Show your tray icon code below
    }
    else
    {
        Show();
    }
}

然后你应该将你的应用程序 utostart 设置为系统启动。

  1. 现在,如果您有一个开关来决定您的应用程序是否在系统启动时自动启动,您只需添加下面的函数作为您的开关状态更改事件函数。
private void SwitchAutoStart_OnToggled(object sender, RoutedEventArgs e)
{
    const string path = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
    var key = Registry.CurrentUser.OpenSubKey(path, true);
    if (key == null) return;
    if (SwitchAutoStart.IsOn)
    {
        key.SetValue("Your app name", System.Reflection.Assembly.GetExecutingAssembly().Location + " /AutoStart");
    }
    else
    {
        key.DeleteValue("Your app name", false);
    }
}

如果要在 Windows 启动时为所有用户自动启动应用程序,只需将第四行替换为

RegistryKey key = Registry.LocalMachine.OpenSubKey(path, true);

^_^

于 2021-06-08T13:07:39.953 回答