2016-10-12 81 views
2

我有一个WPF应用程序,它通过ClickOnce安装在Windows 10 Pro上并使用MahApps.Metro。强制WPF应用程序在Windows启动时最大化

它设置为在Windows启动时使用非管理员帐户启动,该帐户没有密码。平板电脑模式已启用。

我想要的应用程序弹出全屏创建般的经历,但是在应用程序启动开机启动时最小化。为了澄清,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的),又经过窗口已打开,我们可以使用PowerShell脚本调用Alt + Tab。

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

您可以在MainWindow.xaml.cs中通过添加最大化的windowstate来完成此操作。

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

OP已经有XAML等效:'WindowState =“最大化”' – Maarten

+0

它应该弹出窗口启动,它是如何完成的? – Media

+0

WindowState似乎已经最大化 –

2

看看Kiosk模式为Windows 10

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

单次使用的设备是很容易设置在Windows 10桌面 版本(专业版,企业和教育)。对于运行 通用Windows应用的自助终端设备,请使用分配的访问功能。对于运行经典Windows 应用程序的设备(Windows 10 Enterprise或Education)的设备 ,请使用Shell启动器将自定义用户界面设置为 shell。

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应用程序和企业不可用。 我希望有比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也只显示开始屏幕。在其他情况下,它工作得很好。 –

相关问题