防止进程在启动期间显示窗口

时间:2009-10-07 00:35:40

标签: c# wpf windows process

我正在使用Process类从WPF应用程序启动应用程序,该类在启动时显示启动画面。而不是向用户显示启动画面,我想通过保持窗口最顶层和最大化来启动它后的前几秒隐藏应用程序。问题是启动此应用程序会自动使我的窗口退出最顶层模式并显示Windows任务栏。有没有办法阻止进程显示一个窗口几秒钟,直到它启动,然后显示它的窗口?

3 个答案:

答案 0 :(得分:1)

您是否拥有自己尝试启动的应用程序而未直接在启动时显示主窗口?在这种情况下,请执行以下操作。

覆盖App类中的Application.OnStartup方法并在那里进行初始化。在该方法完成之前,将不会(自动)显示任何窗口或任务栏按钮。

using System.Diagnostics;
using System.Threading;
using System.Windows;

namespace DelayedStartDemo
{
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            Thread.Sleep(5000);

            base.OnStartup(e);

            Debug.Assert(MainWindow == null);
        }

        protected override void OnActivated(System.EventArgs e)
        {
            Debug.Assert(MainWindow != null && 
                         MainWindow.Visibility == Visibility.Visible && 
                         MainWindow.ShowInTaskbar);

            base.OnActivated(e);
        }
    }
}

答案 1 :(得分:1)

所以你有两个应用程序争论是最顶层的窗口,但当然只有一个可以同时是最顶层的。 Windows理所当然地不让一个应用程序做出这个决定,这将是一个安全漏洞。请参阅Raymond Chen的答案,原因为:http://blogs.msdn.com/oldnewthing/archive/2005/06/07/426294.aspx

答案 2 :(得分:0)

难道你不能只设置启动为折叠的MainWindow的可见性,然后在启动启动后切换它吗?