上一篇咱們討論瞭如何在轉制的桌面程序中,經過StartupTask來實現轉製版本的開機自啓動。
實際操做中,咱們經過編輯Packaging工程中的Package.appxmanifest文件,來添加自啓動的配置項。若是要在程序的UI中實現開啓和關閉自啓動的功能。那就須要經過代碼來操做StartupTask對象。
StarupTask位於Windows.wimd(Windows元數據文件)中的命名空間Windows.ApplicationModel。git
在桌面程序中調用Win10 API通常有如下兩個途徑。
第一種是經過Nuget來安裝一個叫作UwpDesktop的庫,優勢是比較簡單,維護起來也方便。
缺點在我看來比較嚴重,這個庫好久沒有更新了,Win10 kits的版本仍停留在14393。要知道即便是推薦給商業客戶用的版本也已是15063了。github
第二種是手動添加引用,這個聽上去麻煩,但只要作過一次就會以爲仍是本身動手靠譜。
右鍵選擇給工程Add References,打開文件夾
C:\Program Files (x86)\Windows Kits\10\UnionMetadataapp
能夠看到上圖存在16299,17134和17763三個版本,我這裏選擇了當前比較普及的17134版本。this
僅僅添加這一項是不夠的,另外一個必選項是
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
完成添加引用的操做後,就能夠在AutoLaunchApp工程中使用StartupTask類了。spa
var startupTask = await StartupTask.GetAsync("AutoLaunchAppTask"); State = startupTask.State; if (IsChecked) { switch (State) { case StartupTaskState.Disabled: // Task is disabled but can be enabled. State = await startupTask.RequestEnableAsync(); // ensure that you are on a UI thread when you call RequestEnableAsync() break; case StartupTaskState.DisabledByUser: // Task is disabled and user must enable it manually. MessageDialog dialog = new MessageDialog( "You have disabled this app's ability to run " + "as soon as you sign in, but if you change your mind, " + "you can enable this in the Startup tab in Task Manager.", "TestStartup"); await dialog.ShowAsync(); break; case StartupTaskState.DisabledByPolicy: Debug.WriteLine("Startup disabled by group policy, or not supported on this device"); break; } }
邏輯比較簡單,基本就是先獲取StartupTask對象,再根據用戶操做來Enable或Disable,以後返回更新後的StartupTaskState。code
若是選擇了14393的SDK版本,就會遺憾地收到一條Warring,雖然也不影響實際效果,但仍是感受怕怕的。對象
好了,從桌面程序調用Win10 API就是這麼簡單,各位大哥能用新的API就儘可能別去"Minimun supported client Windows XP"的頁面抄代碼了,混搭這種年齡差距太大的API,會有代溝的T_T
本篇代碼依然放在全球最大同性交友平臺GitHub上:
https://github.com/manupstairs/DesktopBridgeSamples.git
話說Github這貨如今姓微軟了……並且他們三哥老大也真是會玩,把Edge也給換心了,根不正苗不紅的。罷了罷了他開心就好。消息又是JB哥來宣佈的,這位老兄真是去哪哪塌崩,和內森·德雷克一個屬性。blog