アイキャッチ画像

PythonからWindows RuntimeのAPIを使ってみる

Microsoftが公開しているモジュールを使って、PythonからWindows Runtime APIを呼び出してみました。

目次

  1. 環境
  2. 準備
  3. 試してみた

環境

Windows Runtime (WinRT)というのは、Windows8で実装されたModern UI用のAPIです。今のところ Windows10 でも使用できるようになっています。このAPIにPythonからアクセスしてみます。

  • Windows10 Home 1903 (公式サイトではOctover 2018アップデート以降に対応とのこと)

  • Python 3.7

準備

MicrosoftがPython用の winrtというモジュール を公開しているので、pipでインストールします。

> pip install winrt

試してみた

公式サイトにあるコードを動かしてみます。

import winrt.windows.foundation as wf

u = wf.Uri("https://github.com/")
u2 = u.combine_uri("Microsoft/xlang/tree/master/src/tool/python")
print(str(u2))

出力はこうなります。

> python test.py
https://github.com/Microsoft/xlang/tree/master/src/tool/python

これだけだと何をしているのかさっぱりわかりませんので、もう少しコードを見てみます。

importのところでインポートしているwindows.foundationですが、これはWindows Runtime APIのWindows.Foundation名前空間のことです。

u = wf.Uri("xxx") で、Windows.Foundation名前空間の Uriクラス のオブジェクトを作っています。このクラスは、URIをあれこれ操作するためのクラスです。コンストラクターにxxxを引数として渡すと、そのxxxがURIのベースになります。

次の行のconbine_uri()はUriオブジェクトのメソッドです。アドレスを引数として渡すと、ベースのURIと結合したURIを返します。Microsoftのドキュメントによると戻り値の型はSystem.Uriとなっています。文字列ではないのですね。

combine_uri()メソッドの戻り値の型は、stringではなく _winrt_Windows_Foundation.Uri になります。そこで最後の行ではstr()で文字列に変換してます。

公開日

広告