Запретить процессу отображать окно во время запуска - PullRequest
1 голос
/ 07 октября 2009

Я запускаю приложение из приложения WPF, используя класс Process, который отображает заставку при запуске. Вместо того, чтобы показывать пользователю заставку, я хотел бы спрятать приложение в течение первых нескольких секунд после его запуска, оставив мое окно верхним и развернутым. Проблема в том, что запуск этого приложения автоматически выводит мое окно из верхнего режима и показывает панель задач Windows. Есть ли способ запретить процессу показ окна в течение нескольких секунд, пока он не запустится, а затем отобразить его окно?

Ответы [ 3 ]

1 голос
/ 07 октября 2009

У вас есть приложение, которое вы пытаетесь запустить, не показывая его главное окно непосредственно при запуске? В этом случае сделайте следующее.

Переопределите метод Application.OnStartup в своем классе App и выполните там свою инициализацию. Окна или кнопки панели задач не будут отображаться (автоматически) до тех пор, пока этот метод не завершится.

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 голос
/ 08 октября 2009

Итак, у вас есть два приложения, которые борются за то, чтобы быть самым верхним окном, но, конечно, только одно может быть самым верхним одновременно. Windows по праву не позволяет ни одному приложению принять такое решение, это будет дырой в безопасности. См. Ответ Раймонда Чена здесь: http://blogs.msdn.com/oldnewthing/archive/2005/06/07/426294.aspx

0 голосов
/ 07 октября 2009

Разве вы не можете просто установить видимость MainWindow, которое запускается до Collapsed, а затем переключать его после запуска заставки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...