【C#】【WPF】WinRT APIを使用しファイル選択ダイアログを表示する

WPFでファイル選択ダイアログを表示する

WPFでWinRTWinRT APIを使用し、ファイル選択ダイアログ(ファイルピッカー)を表示する。

■ウインドウハンドルの取得にWindowNative.GetWindowHandle()を使用すると、以下の例外が発生する。
System.ArgumentException: ‘Source object type is not a projected type and does not inherit from a projected type. Arg_ParamName_Name’

■ハンドルの初期化がないと以下の例外が発生する。
System.Runtime.InteropServices.COMException: ‘Invalid window handle. (0x80070578)
Consider WindowNative, InitializeWithWindow

■WindowInteropHelper クラスのHandleプロパティの代わりにEnsureHandle()メソッドを使うと、ウィンドウハンドルがまだ作成されていない場合は ウィンドウハンドルを作成して返す。

ウインドウハンドルの取得(WinUI / WPF / WinForm)

【Windows UI】
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(this);

【WPF】
var hwnd = new WindowInteropHelper(this).EnsureHandle();

【Windows Form】
var hwnd = this.Handle;

【UWP】
不要

英単語

Interop 相互運用

タイトルとURLをコピーしました