我已经使用 Windows Installer 创建了我的应用程序的设置。
现在我想在 Windows 启动时启动应用程序并将其移动到系统最小化托盘,因为我不想在 Windows 启动时显示 GUI(视图)。
我在 Google 中搜索过,发现使用了注册表项,但这对我来说还不够,因为我还想移动到系统最小化托盘和应用程序运行。
我这样做的目的是,用户每次启动系统时都不会在应用程序启动时感到烦人。
谁能有答案?谢谢..
我已经使用 Windows Installer 创建了我的应用程序的设置。
现在我想在 Windows 启动时启动应用程序并将其移动到系统最小化托盘,因为我不想在 Windows 启动时显示 GUI(视图)。
我在 Google 中搜索过,发现使用了注册表项,但这对我来说还不够,因为我还想移动到系统最小化托盘和应用程序运行。
我这样做的目的是,用户每次启动系统时都不会在应用程序启动时感到烦人。
谁能有答案?谢谢..
您还必须设置此属性才能将其从任务栏中删除
ShowInTaskbar= false;
在您的应用程序中,为该事件添加一个事件处理程序FrameworkElement.Loaded
。在该处理程序中,添加以下代码:
WindowState = WindowState.Minimized;
这将在启动时最小化应用程序。
要在计算机启动时启动应用程序,您需要将程序添加到 Windows 调度程序并将其设置为在启动时运行。您可以在 MSDN的计划任务页面上找到更多信息。
也许这个答案来晚了,但我还是想写下来,以帮助那些还没有找到解决方案的人。
首先,您需要添加一个功能,以在系统启动时自动启动时将您的应用程序最小化到托盘。
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">
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();
}
}
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 设置为系统启动。
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);
^_^