| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Python Win32 Extensions

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

目次

Python Win32 Extensions

Python | COM |

Links

Official
Quick Start
Win32 COM開発

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

はじめに

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

COM の仕様を確認する方法

COM と Windows レジストリ

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

1066 py win32com00.jpg

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

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

1067 py win32com01.jpg

  • HKEY_CLASSES_ROOT\Shell.Application

1068 py win32com02.jpg

Shell.Application の使用例

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

1069 py win32com03.jpg

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

  • Shell.Application の内容を確認してみる
Visual Studio の同梱されている

1070 py win32com04.jpg

Type Libraries から・・・

1071 py win32com05.jpg

Microsoft Shell Controls And Automation を選択して、Viewアイコンもしくはダブルクリック

1072 py win32com06.jpg

CoClasses から、Shell を探すと、Methods の中に、SetTimeが見つかる
  • ファイルを開くから、上記レジストリエディタで確認した SHELL32.DLL を選択しても起動する。

1073 py win32com07.jpg

SetTimeを選択すると、Help と シグネチャが確認できる。

1074 py win32com08.jpg

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

Excel の Visual Basic Editor から上記 OLE/COM Object Viewer で確認したのと同様の内容を確認
  • ツール - マクロ - Visual Basic Editor

1075 py win32com09.jpg

Visual Basic Editor から 参照設定ダイアログを起動する
  • ツール - 参照設定

1076 py win32com10.jpg

Microsoft Shell Controls And Automation をチェックして、OK

1077 py win32com11.jpg

表示 - オブジェクトブラウザを起動

1078 py win32com12.jpg

Shell - SetTime で内容を確認

1079 py win32com13.jpg

WshShell |

WScript.Network

プリンタを列挙

WScript.Network で、呼び出されるCOM

1063 py win32com wsh net01.jpg

WshNetwork の EnumPrinterConnections を呼び出してみる

1064 py win32com wsh net02.jpg

結果が、WshCollection で返る

1065 py win32com wsh net03.jpg

実行
  1. >>> import win32com.client
  2. >>> wsh = win32com.client.Dispatch('WScript.Network')
  3. >>> printers = wsh.EnumPrinterConnections()
  4. >>> for i in range(0, printers.Count(), 1):
  5. ... print printers[i]
  6. ...
  7. XPSPort:
  8. Microsoft XPS Document Writer
  9. Journal Note Writer Port:
  10. Journal ノート ライタ
  11. BULLZIP
  12. Bullzip PDF Printer
  13. USB001
  14. \\Izanami\Canon MP500 Series Printer
  15. NEWSOFT
  16. \\Izanami\PageManager PDF Writer