1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WPFで既定のアプリでファイルを開く方法

Posted at

はじめに

既定のアプリでファイルを開くというのは、Windowsを使っていると当たり前のような機能なのですが、WPFで実現しようとするとどうすればいいの?と思ってしまいます。
調べていくと、ファイルに応じた既定のアプリの起動というMicrosoftのドキュメントがありました。
ところが、これ、UWPのAPIを使用しています。つまりWPFではないわけです。
ということはWPFでUWPのAPIを使用できるようにすればいいということです。

UWPのAPIをWPFで使用できるようにする

実装方法ですが、.NetFrameworkを使用している場合と、.NET5を使用している場合とでは異なるようです。

.NetFrameworkの場合

Microsoft.Windows.SDK.ContractsというNuGetパッケージをインストールします

.NET5の場合

プロジェクトファイルを以下のように設定します

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net5.0-windows10.0.17763.0</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
</Project>

TargetFrameworkのところがポイントで、

  • net5.0-windows10.0.17763.0の場合は Windows 10 Version 1809
  • net5.0-windows10.0.18362.0の場合は Windows 10 Version 1903
  • net5.0-windows10.0.19041.0の場合は Windows 10 Version 2004

となります

この設定の留意事項としては、プロジェクトのプロパティの対象フレームワークがグレー表示になるところです。
image.png

既定のアプリでファイルを開く

これでWPFでも利用できる環境が整ったので実装ですが、これはシンプルで、以下のコードを使うだけ

IStorageFile file = await StorageFile.GetFileFromPathAsync(filePath)
await Windows.System.Launcher.LaunchFileAsync(file)

この引数のfilePathで開きたいファイルのパスを指定します

以上で完了です。
実装はとても簡単なのですが、ここまでたどりつくのにいろいろと調べたりと、時間がかかったので、同じような方がいればその助けになればと思います。

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?