遷移桌面程序到MS Store(13)——動態檢查Win10 API是否可用

假設咱們現有一個WPF程序,須要支持1903之前的Windows 10版本。同時在1903之後的版本上,額外多出一個Ink的功能。
那麼咱們就能夠經過ApiInformation.IsApiContractPresent方法來判斷1903的API是否可用,決定要不要開放Ink功能給當前用戶。新來的同窗若是不知道如何使用「ApiInformation.IsApiContractPresent」,請參考《遷移桌面程序到MS Store(4)——桌面程序調用Win10 API》
Sample Code咱們仍是以《遷移桌面程序到MS Store(12)——WPF使用UWP InkToolbar和InkCanvas》中的WPFInkSample.git爲例。
首先咱們確保Solution中的WPFInkSample工程能夠成功編譯並運行。html

而後建立一個WPF工程MainUI,添加對WPFInkSample的引用。在MainWindow.xaml.cs中咱們想要判斷當前Windows版本是否爲1903或以上。若是是1903以上的版本,就經過Process.Start啓動WPFInkSample.exe,不然就彈出MessageBox。git

            if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 8))
            {
                Process.Start("WPFInkSample.exe");
            }
            else
            {
                MessageBox.Show("Since version 1903, we can use UWP control in WPF project.");
            }

IsApiContractPresent第一個參數是要檢查的API name,第二個參數是主版本號。從Universal device family API contracts的列表中咱們能夠搜索"Windows.Foundation.UniversalApiContract",會發如今1903版本(version 10.0.18362)中"Windows.Foundation.UniversalApiContract"的version=8.0,而1809版本中version=7.0。github

找不到"ApiInformation.IsApiContractPresent"的同窗記得在MainUI中添加對Windows.winmd的reference,位於C:\Program Files (x86)\Windows Kits\10\UnionMetadata\<sdk version>\Facade 文件夾。windows

本篇主要介紹瞭如何在WPF程序中,動態判斷某個Win10 API是否可用。
Github:
https://github.com/manupstairs/WPFInkSample
api

相關文章
相關標籤/搜索