强制WPF应用程序在Windows启动时最大化

时间:2016-10-12 13:21:35

标签: c# wpf windows clickonce mahapps.metro

我有一个通过ClickOnce安装在Windows 10 Pro上的WPF应用程序并使用MahApps.Metro。

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

我希望应用程序全屏弹出以创建 kiosk 类似的体验,但在启动时启动应用程序启动最小化。为了澄清,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>

4 个答案:

答案 0 :(得分:2)

查看适用于Windows 10的Kiosk模式。

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

  

在Windows 10桌面版中可以轻松设置一次性设备   版本(专业版,企业版和教育版)。对于自助服务终端设备运行   通用Windows应用,使用指定的访问权限功能。对于一个亭子   设备(Windows 10企业版或教育版)运行经典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文件。

答案 1 :(得分:1)

您可以在MainWindow.xaml.cs中添加最大化的windowstate来执行此操作。

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

答案 2 :(得分:0)

在ContentRendered事件处理程序中设置Window状态:

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

}

答案 3 :(得分:0)

解决方案(hack)是在启动时使用Task Scheduler打开任何其他窗口(例如powershell),在另一个窗口打开后,我们可以使用PowerShell脚本调用Alt + Tab。

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