2016-10-12 2 views
2

У меня есть приложение WPF, установленное на Windows 10 Pro через ClickOnce и использующее MahApps.Metro.Принудительное приложение WPF для максимальной загрузки при запуске Windows

Он установлен для запуска при загрузке Windows с учетной записью non-admin, у которой нет пароля. Режим планшета включен.

Я хочу, чтобы приложение выскочит на весь экран, чтобы создать киоску -like опыта, однако начинается приложение минимизировано при запуске при загрузке. Чтобы уточнить, WindowState Максимизирован, но Windows не показывает его, вместо этого он показывает начальный экран. Он запускает полноэкранный режим при запуске вручную.

Вот код, но я предполагаю, что это скорее проблема конфигурации, чем проблема кода:

Это, как я установить запуск при загрузке:

RegistryKey rkApp = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); 
string startPath = Environment.GetFolderPath(Environment.SpecialFolder.Programs) 
         + @"\Publisher\AppName.appref-ms"; 
rkApp.SetValue("AppName", startPath); 

Это MainWindow.xaml

<Controls:MetroWindow x:Class="AppName.MainWindow" 
IgnoreTaskbarOnMaximize="True" ShowTitleBar="False" WindowStyle="None" WindowState="Maximized"> 
... 
</Controls:MetroWindow> 
+0

http://stackoverflow.com/questions/3501151/maximize-a-window-programmatically-and-prevent-the-user-from-changing-the-window –

+0

@FabrizioStellato вопрос вы ссылаетесь на это 'WinForms', OP использует' WPF'. – Maarten

+2

Я думаю, что возможно эта ссылка может помочь, http://stackoverflow.com/questions/18721904/wpf-metro-window-full-screen – Bearcat9425

ответ

0

решение (хак) было открыть любое другое окно (например, Powershell) при запуске с помощью планировщика заданий, а после того, как еще одно окно открыто , мы можем вызвать Alt + Tab в сценарии powershell, используя.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[System.Windows.Forms.SendKeys]::SendWait("%{TAB}") 
2

Вы можете сделать это в MainWindow.xaml.cs, добавив окно максимального размера.

public MainWindow() 
{ 
    InitializeComponent(); 
    this.WindowState = WindowState.Maximized; 
} 
+0

У OP уже есть эквивалент XAML : 'WindowState =" Maximized "' – Maarten

+0

его нужно всплывать при запуске Windows, как это можно сделать? – Media

+0

WindowState уже кажется максимальным –

2

Посмотрите на режим киоска для ОС Windows 10.

От Set up a device for anyone to use (kiosk mode):

Одноразовый устройство легко настроить в Windows 10 для настольных изданий (Pro, Предприятия и образование). Для устройства киоска для запуска приложения Universal Windows используйте назначенный доступ . Для устройства киоска (Windows 10 Enterprise или Education) для запуска приложения Classic Windows используйте Shell Launcher, чтобы установить пользовательский интерфейс как оболочку .

От Assigned access (Industry 8.1):

Администраторы могут использовать назначены доступ ограничить учетную запись пользователя для доступа одного приложения. Вы можете использовать назначенный доступ для настройки однофункциональных устройств, таких как меню ресторанов или дисплеев на торгах .

В следующей таблице описывается тип приложения, которое можно использовать для каждой версии Windows 10 для создания киоска.

enter image description here

приложение Универсальный для Windows построена на универсальной платформе Windows (UWP), который был впервые представлен в Windows 8 в качестве среды выполнения Windows. В классическом приложении Windows используется классическая платформа Windows (CWP) (например, COM, Win32, WPF, WinForms и т. Д.) И обычно запускается с использованием файла .EXE или .DLL.

+0

Мне это известно, но спасибо за хороший обзор для других пользователей, которые ищут ответ. Назначенный доступ не является вариантом, так как у меня есть приложение Windows Classic, а Enterprise недоступно. Надеюсь, что есть более простой способ, чем Shell Launcher, но мне, возможно, придется изучить его. –

1

Установить состояние окна в обработчике события ContentRendered:

protected override void OnStartup(StartupEventArgs e) 
{ 
    Application.Current.MainWindow.ContentRendered += (s, a) => 
     Application.Current.MainWindow.WindowState = WindowState.Maximized; 

} 
+0

Проблема в том, что WindowState уже оптимизирован, но Windows почему-то решает не просматривать программу. Возможно, они отключили это на пуповине. –

+0

Итак, проблема не в максимизации, а вместо этого основное окно скрыто? –

+0

При запуске Windows показывает только начальный экран, даже если окностекло. В других случаях это работает отлично. –

Смежные вопросы