假設咱們現有一個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/WPFInkSampleapi