2016-10-12 133 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也只顯示開始屏幕。在其他情況下,它工作得很好。 –

相關問題