迁移桌面程序到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

相关文章
相关标签/搜索