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

スポンサーサイト

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

IronPython: COMコンポーネントの使い方2

                
 IronPythonからCOMコンポーネントを使う。二回目。前回に初期結合(early binding)という方式でやったので、今回は遅延結合(late binding)。

 このやり方はProgIDという、そのCOMコンポーネント独自のIDを必要とする。ProgIDの調べ方は下記で。
http://elicon.blog57.fc2.com/blog-entry-163.html

 WindowsMediaPlayerのCOMコンポーネントを使って、ユーザーのディレクトリにあるオーディオファイル一覧を得てみよう。まず前述したやり方でProgIDを調べる。WMPのProgIDは"WMPlayer.OCX.7"。このProgIDを使ってインスタンスを作成する。
from System import Activator, Type
wmp = Activator.CreateInstance(Type.GetTypeFromProgID('WMPlayer.OCX.7'))
これで変数wmpにCOMコンポーネントのインスタンスが入り、そのプロパティやメソッドが使えるようになる。あとはドキュメントを見ながら勧めるだけである。一度getByAttributeメソッドで、MediaTypeをaudioに指定することで、取得するファイルをオーディオファイルのみに絞れる。


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
            

コメントの投稿

非公開コメント

プロフィール

Matoba

Author:Matoba

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

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