Still writing traditional desktop applications? MFC, WinForms, WPF? They are doing what you need, so you don't feel the need to move to UWP, but you are feeling left out of the new Windows 10 API's? Wish you could have the best of both?
Michael Crump's new article was written for you!
"In today’s post, we’re covering how PC software can leverage the rich functionality of Windows 10. This is valuable background for the upcoming post “Adding UWP Features to Your Existing PC Software with the Desktop Bridge,” which will go into even more detail on the topic in the coming days.
So here’s a question that generates a lot of confusion. Can PC software written in WPF, WinForms or MFC access the Windows 10 APIs used by the Universal Windows Platform (UWP)?
The answer is yes. There are some exceptions to this rule (and we’ll go over how to find them), but in general you can access the Windows 10 APIs. Or put a different way, there are no secret APIs being kept away from Windows developers.
How to access the Windows 10 APIs from WPF
You can access the Windows 10 APIs from a pre-existing WPF project. To do so, go to your Solution Explorer window and …
How do I know which APIs are available?
As mentioned above, there are exceptions to the rule that Windows 10 APIs are accessible from PC software. The first big exception concerns XAML UI APIs. The XAML framework in UWP is different from the one in WPF and you really don’t want to be mixing them up, anyways.
The second set of APIs that you can’t use are ones that depend on an app’s package identity. UWP apps have package identities while PC software does not. Package identity information can be found in the app manifest file.
How do you determine which Windows 10 APIs require a package identity and which do not? The easiest way is to refer to this MSDN topic.
Unlocking even more APIs
There’s actually a way to provide PC software with a package identity. The Desktop Bridge lets you package PC software for deployment in the Windows Store. As part of this process, you create an app manifest file for it, effectively giving it a package identity.
A quicker way to get at those Windows 10 APIs
But say you don’t want to deploy to the Windows Store at the moment and just want to use some of those Windows 10 APIs. How do you get to them from your app?
How to access the Windows 10 APIs from C++
Calling Window 10 APIs isn’t just for managed code. You’ve also always been able to call them from C++ native apps.
It has sometimes been claimed that Windows 10 has secret APIs that are only accessible through UWP apps. In this post, we demonstrated that this is not the case and also went over some of the ins and outs of using Windows 10 APIs in both managed and native desktop apps. You will find links below to even more reference materials on the subject.
Did you find this post helpful? Please let us know in the comments below—and also let us know if there’s anything else you’d like us to dig into for you about this topic.
Want to go a step further? Be sure to come back next week for our next blog, where we go into more detail about adding a UWP feature to your existing PC software with the Desktop Bridge.
- UWP APIs callable from desktop applications
- Calling UWP APIs from a desktop application
- This NuGet package lets you use UWP APIs from your desktop apps
- Desktop Bridge
- UWP package identity
- Call WinRT APIs from C# Desktop Applications (Win 8)