デスクトップアプリでWindows Runtime APIをコールする(センサーとか)


前から、デスクトップアプリからWindows Runtime API(の一部)を呼び出せるのは知っていたのですが、最近、本当にコールする必要が生じたので、やり方をここに書いておきます。

※この投稿はストアアプリより、デスクトップアプリの方が良いです…という話ではありません。使えるWinRT APIは一部だし、セキュリティ、パフォーマンスなどストアアプリで使った方がいいので、なるべくストアアプリを使うことをお勧めします。

Windows Runtime APIを使おうとするのは、Visual Studioで、”Windowsデスクトップ”→”WPFアプリケーション”プロジェクトテンプレートで作ったプロジェクトです。このプロジェクトは本来.NET FrameworkのAPIを使用します。

プロジェクトファイル(C#なら*.csproj)をテキストエディタ等で開きます。

<Project>…</Project>という記述がありますね。その中に<PropertyGroup>…</PropertyGroup>という定義がいっぱいあります。これらに並べて、

  <PropertyGroup>
    <TargetPlatformVersion>8.0</TargetPlatformVersion>
  </PropertyGroup>

を入れます。

プロジェクトをVSで再度開きます。

参照設定に、以下のパスに存在する、Windows.winmd というファイルを追加します。

C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral

※32ビットOSの場合は、”Program Files\Windows Kits…

これで設定は終わり。

例えば、加速度センサーなら、

var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault();

と、こんな風に取り出すことができます。但し、イベントを”+=”の様な普通の形式では使うことはできません。

 

Comments (2)

  1. 教えて!! より:

    これなに?

    950 :名無しさん@恐縮です@転載禁止:2014/04/10(木) 23:03:15.53 ID:4WOZVd240

    ねねね、会見してた加治佐俊一さんの、秘書と受付嬢のセクハラ解雇事件はどうなったんだっけ?

    「 さ わ っ て も 減 る も ん じ ゃ な い か ら い い だ ろ 」

    人と物の扱いを間違えてね

    953 :名無しさん@恐縮です@転載禁止:2014/04/10(木) 23:07:50.48 ID:s4TvbpoX0

    >>950

    これはやってんの?調べたけどマイクロソフトってブラックなんじゃんw

    それともこの子会社長が変態なだけ?

    hayabusa3.2ch.net/…/950

Skip to main content