【问题标题】:Adding a program to run with Windows Startup to start in notifications in task bar添加要使用 Windows 启动运行的程序以在任务栏中的通知中启动
【发布时间】:2014-07-17 02:55:42
【问题描述】:

我使用 Visual Studio 2012 开发了一个 C# wpf 应用程序。我使用Inno Setup 发布了它。当我通过双击项目启动我的程序时,它会启动并显示 GUI“A”。当我最小化时,它会转到任务栏中的通知并显示 GUI“B”。我需要的是让它从 Windows 启动开始。当它启动时我不想显示GUI“A”,直接在通知中最小化它。

我怎样才能做到这一点?

【问题讨论】:

  • 在windows Loaded Event中可以设置this.WindowState= WindowState.Minimized。
  • @AshokRathod 但我只想在启动时这样做。当他正常双击图标时,GUI“A”应该会出现。
  • yaa 它只会在启动时完成,您也只需单击即可启用
  • @AshokRathod 如何将其仅限于启动?
  • 看看这个Blog Article关于命令行参数和wpf。还有这个SO Question

标签: c# wpf windows inno-setup taskbar


【解决方案1】:

在程序首次运行或安装时(如果可能)在 Windows 计划程序中创建一个任务。您可以创建一个批处理脚本来为您执行此操作。您可以查阅此链接以了解如何使用 schtasks。您可以在调度程序中设置许多参数,以允许在会话登录时启动应用程序。

至于以“最小化”模式启动应用程序,您需要自己实现。当应用程序启动时,您可以将参数传递给应用程序。您应该创建一个属性,告诉您的应用程序以最小化模式启动。要从命令行读取参数,您可以咨询其他post

示例:C:\apps\Foo.exe -最小化

祝你好运

【讨论】:

  • 能否请您支持我提供更多详细信息。我是初学者。 :)
【解决方案2】:
  1. 在您的 GUI A 中创建一个静态变量名称为 IsAppStartCall。

    静态布尔 IsAppStartCall = true;

2.为 GUI A 创建参数化构造函数,并在其中检查 IsAppStartCall 与否。

public void GUIA(bool isAppStartCall)
{
  IsAppStartCall = isAppStartCall;

  // do your other tasks here
}

3.现在在您的 Window Loaded 事件中检查上面的代码,如下所示

//在加载的事件最后一条语句应该是这样的。 //这将确保只要 AppstartCall=true 存在,然后它就会将此窗口设置为模仿,否则不会。

if(IsAppStartCall)
{
 this.WindowState=WindowState.Minimized;
 IsAppStartCall= false; //as once we achieved this functionality we will set it to false
}

找到对我有用的解决方案

GUIA.xaml

<Window x:Class="WpfApplication1.GUIA"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button x:Name="btnCloseAnotherWindow" Click="btnCloseAnotherWindow_Click" Content="Click Me"  Width="100" Height="100"/>
    </Grid>
</Window>

GUIA.xaml.cs

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>


    public partial class GUIA : Window
    {
        static bool IsAppStart = true;

        public GUIA()
        {
            InitializeComponent();
            this.Loaded += GUIA_Loaded;
        }

        public GUIA(bool isAppStart)
        {
            IsAppStart = isAppStart;
            this.Loaded += GUIA_Loaded;
        }

        void GUIA_Loaded(object sender, RoutedEventArgs e)
        {
            if (IsAppStart)
            {
                this.WindowState = System.Windows.WindowState.Minimized;
            }
        }

        private void btnCloseAnotherWindow_Click(object sender, RoutedEventArgs e)
        {
            GUIA obj = new GUIA(false);
            obj.Show();
        }

    }
}

【讨论】:

  • 如果对您有帮助,请标记为答案。如果您仍有任何疑问,请告诉我
  • 当然。谢谢你的回答。我有个疑问。程序如何知道它是否启动?
  • @Ashok,请停止乞求接受。 OP 已经知道如何接受答案,他们肯定会决定何时这样做。谢谢!附言您已经展示了如何修改 C# 应用程序。没有提及如何安排应用程序。在 Windows 启动时启动(应该执行安装程序)。
【解决方案3】:

您应该将您的应用设计为接受命令行参数以指示它以最小化状态启动。然后,您的启动命令行可以传递该参数,您可以根据它是否存在和/或其值来决定如何启动。

【讨论】:

  • 你能解释一下吗?
猜你喜欢
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多