トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

Python Win32 Extensions



目次



記事一覧

キーワード

Python Win32 Extensions

[Python][COM]

 Links

Official
Quick Start
Win32 COM開発

COM オブジェクトをPythonから利用する

 はじめに

  • Excelを立ち上げてワークブックを追加してセルにHello.
>>> import win32com.client
>>> o = win32com.client.Dispatch("Excel.Application")
>>> o.Visible = 1
>>> o.Workbooks.Add()
<COMObject Add>
>>> o.Cells(1,1).Value = "Hello"

COM の仕様を確認する方法

 COMWindows レジストリ

  • COMコンポーネントは、DLLかEXE
  • COMは、レジストリから、CLSIDを参照することで、ディスク上からコンポーネントを探し出す。

  • 以下はShell.Application のCLSID

以下のようにプログラム名から、間接的にCLSIDを取得できる。

レジストリ HKEY_CLASSES_ROOT 以下に登録されている、Shell.Application を Python から 利用してみる
  • HKEY_CLASSES_ROOT\Shell.Application

Shell.Application の使用例

  • Shell.Application SetTime()を呼び出す。日付と時刻のプロパティをを表示
>>> import win32com.client
>>> sh = win32com.client.Dispatch('Shell.Application')
>>> sh.SetTime()

 OLE/COM Object Viewer で、COMの仕様を確認する


  • Shell.Application の内容を確認してみる
Visual Studio の同梱されている
Type Libraries から・・・
Microsoft Shell Controls And Automation を選択して、Viewアイコンもしくはダブルクリック
CoClasses から、Shell を探すと、Methods の中に、SetTimeが見つかる
  • ファイルを開くから、上記レジストリエディタで確認した SHELL32.DLL を選択しても起動する。
SetTimeを選択すると、Help と シグネチャが確認できる。

 Visual Basic Editor のオブジェクトブラウザで 確認

Excel の Visual Basic Editor から上記 OLE/COM Object Viewer で確認したのと同様の内容を確認
  • ツール − マクロ − Visual Basic Editor
Visual Basic Editor から 参照設定ダイアログを起動する
  • ツール − 参照設定
Microsoft Shell Controls And Automation をチェックして、OK
表示 − オブジェクトブラウザを起動
Shell − SetTime で内容を確認

[WshShell]

 WScript.Network

プリンタを列挙

WScript.Network で、呼び出されるCOM
WshNetwork の EnumPrinterConnections を呼び出してみる
結果が、WshCollection で返る
実行
>>> import win32com.client
>>> wsh = win32com.client.Dispatch('WScript.Network')
>>> printers  = wsh.EnumPrinterConnections()
>>> for i in range(0, printers.Count(), 1):
...     print printers[i]
...
XPSPort:
Microsoft XPS Document Writer
Journal Note Writer Port:
Journal ノート ライタ
BULLZIP
Bullzip PDF Printer
USB001
\\Izanami\Canon MP500 Series Printer
NEWSOFT
\\Izanami\PageManager PDF Writer



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.