主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

IronPythonからCOMコンポーネントを使う

                
 ウィンドウズ環境でプログラミングをする場合、COMコンポーネントというものを使うことができる。COMにプログラミングでWindowsMediaPlayerの機能を使えるようにするものが用意されていたので、使い方を調べてみた。

参考:http://www.ironpython.info/index.php/Interop_introduction
 COMをつかう手段は大別して2種類ある。一つはDLLファイルとのバインディングを事前に済ませるやり方だ。まずウィンドウズでtlbimpコマンドを呼び出して、EXEファイルやDLLファイルから、互換性を持ったDLLファイルを作成する。コマンドプロンプトに以下のコマンドを打つ。ファイル名はそれぞれ適切なものを使うこと。
tlbimp %SystemRoot%\system32\wmp.dll /out:Interop.WMPLib.dll
これでカレントディレクトリにDLLファイルが作成される。あとはこれを.NETアセンブリとして参照に加えれば、COMコンポーネントとして持っていた機能をIronPython上で使うことができる。リファレンスに加えて、モジュールとしてインポートすればCOMの持っていた機能が使用可能になる。
import clr
cld.AddReference("Interop.WMPLib")
import WMPLib

WMPLibを使ってメディアコレクションを取得してみる。ドキュメントは下記のリンクにある。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd563833(v=vs.85).aspx

import clr
import System

clr.AddReference("Interop.WMPLib")
from WMPLib import WindowsMediaPlayerClass

#from System import Activator, Type
#wmp = Activator.CreateInstance(Type.GetTypeFromProgID('WMPlayer.OCX.7'))

def getAudioCollection():
wmp = WindowsMediaPlayerClass()

col = wmp.mediaCollection.getByAttribute("MediaType", "audio")
totalInCollection = col.count

#Loop through every item in the collection
collection = [getInfo(col.Item[i]) for i in xrange(totalInCollection)]
return collection


def getInfo(item):
#collect the data about the item
data = {"Title":item.getItemInfo("Title"),
"Artist":item.getItemInfo("artist"),
"Album":item.getItemInfo("WM/AlbumTitle"),
"Uri":item.getItemInfo("SourceURL"),
}

return data


 もう一つはProgIDを使うやり方がある。これについてはのちのち。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。