C#
WPF
UWP

UWPの制約と解決策


初めに

Win32やWPFなどで出来ていたボリュームや輝度変更が、UWPでは基本的には出来ないという制約があります。

また、逆にWPFで作っているが一部のUIはUWPを使用したいという場合も(あるかな?)。

今回はその解決策の一つであるExtend Appを説明します。


Extend Appとは

Extend Appの正式名称はExtend your desktop application with modern UWP componentsで、

UWPとWin32やWPFなどを1つのパッケージに纏めることで、出来ることを拡張します(ざっくり)。

実装方法はかずきさん記載のここここを見てもらうとして、

このページとしては実装の際に自分が躓いた箇所を記載しようかと。


エントリーポイントとスタートアップ

かずきさん説明ページにしっかりと記載されていますが、スタートアップはLanchAppプロジェクトで、

エントリーポイントはLaunchAppプロジェクトの"アプリケーション"の下に追加されているLaunchApp.UWPです。

何故か私は、LaunchApp.UWPという名前のプロジェクトをスタートアップとしたことで、全く動かずに1時間ぐらい無駄にしました...


参照の追加

かずきさんが公開しているGithubのコードを単純にコピーしただけでは、コンパイルに失敗します。

NugetでUwpDesktopを追加するか、参照の追加で必要なDLLを追加する必要があります。

NugetでUwpDesktopを追加するのが一番簡単です。

詳細は以下を参照。

https://blog.okazuki.jp/entry/2015/11/07/223455

https://blogs.msdn.microsoft.com/lucian/2015/10/23/how-to-call-uwp-apis-from-a-desktop-vbc-app/

https://blogs.windows.com/buildingapps/2017/01/25/calling-windows-10-apis-desktop-application/#MOgHxP6xfT7ocrpH.97


参考リンク

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extend

https://blog.okazuki.jp/entry/2018/02/09/204909

https://blog.okazuki.jp/entry/2018/02/10/174735

https://blog.okazuki.jp/entry/2015/11/07/223455

https://blogs.msdn.microsoft.com/lucian/2015/10/23/how-to-call-uwp-apis-from-a-desktop-vbc-app/

https://blogs.windows.com/buildingapps/2017/01/25/calling-windows-10-apis-desktop-application/#MOgHxP6xfT7ocrpH.97