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

MyMemoWiki

「Python Win32 Extensions」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==Python Win32 Extensions==
+
==[[Python Win32 Extensions]]==
 
[[Python]] | [[COM]] |  
 
[[Python]] | [[COM]] |  
 
===Links===
 
===Links===
6行目: 6行目:
 
*http://sourceforge.net/projects/pywin32/files/
 
*http://sourceforge.net/projects/pywin32/files/
 
=====Quick Start=====
 
=====Quick Start=====
*http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/HTML/docindex.html
+
*http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/[[HTML]]/docindex.html
=====Win32 COM開発=====
+
=====Win32 [[COM]]開発=====
 
*http://msdn.microsoft.com/ja-jp/library/aa139672.aspx
 
*http://msdn.microsoft.com/ja-jp/library/aa139672.aspx
 
*[http://www.google.co.jp/url?sa=t&source=web&ct=res&cd=6&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F8%2F0%2F4%2F8042C28F-9673-4931-91CE-021D3B8D4740%2F0402_Anno_OST_1.pdf&ei=iL26SsCtEdCZkQXQ_uzuBQ&usg=AFQjCNFIMro0JmQAy_sBhN6duvnvcrsU_g&sig2=KJ9D1ym3yvXoxXfI7kJF5g スクリプトを使用した Windows Server 管理の自動化]
 
*[http://www.google.co.jp/url?sa=t&source=web&ct=res&cd=6&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F8%2F0%2F4%2F8042C28F-9673-4931-91CE-021D3B8D4740%2F0402_Anno_OST_1.pdf&ei=iL26SsCtEdCZkQXQ_uzuBQ&usg=AFQjCNFIMro0JmQAy_sBhN6duvnvcrsU_g&sig2=KJ9D1ym3yvXoxXfI7kJF5g スクリプトを使用した Windows Server 管理の自動化]
 
*[http://msdn.microsoft.com/ja-jp/library/aa155075.aspx MSDN Library Scripting]
 
*[http://msdn.microsoft.com/ja-jp/library/aa155075.aspx MSDN Library Scripting]
 
*[http://msdn.microsoft.com/ja-jp/library/cc446503.aspx Windows Scripting Host のオブジェクト]
 
*[http://msdn.microsoft.com/ja-jp/library/cc446503.aspx Windows Scripting Host のオブジェクト]
==COM オブジェクトをPythonから利用する==
+
==COM オブジェクトを[[Python]]から利用する==
 
===はじめに===
 
===はじめに===
*Excelを立ち上げてワークブックを追加してセルにHello.
+
*[[Excel]]を立ち上げてワークブックを追加してセルにHello.
 
  >>> import win32com.client
 
  >>> import win32com.client
  >>> o = win32com.client.Dispatch("Excel.Application")
+
  >>> o = win32com.client.Dispatch("[[Excel]].Application")
 
  >>> o.Visible = 1
 
  >>> o.Visible = 1
 
  >>> o.Workbooks.Add()
 
  >>> o.Workbooks.Add()
  <COMObject Add>
+
  <[[COM]]Object Add>
 
  >>> o.Cells(1,1).Value = "Hello"
 
  >>> o.Cells(1,1).Value = "Hello"
  
==COM の仕様を確認する方法==
+
==[[COM]] の仕様を確認する方法==
===COM と Windows レジストリ===
+
===COM と [[Windows]] レジストリ===
*COMコンポーネントは、DLLかEXE
+
*[[COM]]コンポーネントは、DLLかEXE
*COMは、レジストリから、CLSIDを参照することで、ディスク上からコンポーネントを探し出す。
+
*[[COM]]は、レジストリから、CLSIDを参照することで、ディスク上からコンポーネントを探し出す。
  
 
*以下はShell.Application のCLSID
 
*以下はShell.Application のCLSID
 
[[File:1066_py_win32com00.jpg]]
 
[[File:1066_py_win32com00.jpg]]
 
====以下のようにプログラム名から、間接的にCLSIDを取得できる。====
 
====以下のようにプログラム名から、間接的にCLSIDを取得できる。====
=====レジストリ HKEY_CLASSES_ROOT 以下に登録されている、Shell.Application を Python から 利用してみる=====
+
=====レジストリ HKEY_CLASSES_ROOT 以下に登録されている、Shell.Application を [[Python]] から 利用してみる=====
 
[[File:1067_py_win32com01.jpg]]
 
[[File:1067_py_win32com01.jpg]]
*HKEY_CLASSES_ROOT\Shell.Application
+
*HKEY_CLASSES_[[R]]OOT\Shell.Application
 
[[File:1068_py_win32com02.jpg]]
 
[[File:1068_py_win32com02.jpg]]
  
42行目: 42行目:
 
[[File:1069_py_win32com03.jpg]]
 
[[File:1069_py_win32com03.jpg]]
  
===OLE/COM Object Viewer で、COMの仕様を確認する===
+
===OLE/[[COM]] Object Viewer で、[[COM]]の仕様を確認する===
 
*Download : [http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=5233b70d-d9b2-4cb5-aeb6-45664be858b6&displaylang=en OLE/COM Object Viewer]
 
*Download : [http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=5233b70d-d9b2-4cb5-aeb6-45664be858b6&displaylang=en OLE/COM Object Viewer]
 
**[http://msdn.microsoft.com/ja-jp/windows/bb980924.aspx Windows SDK] に含まれる IViewer.dll が必要。
 
**[http://msdn.microsoft.com/ja-jp/windows/bb980924.aspx Windows SDK] に含まれる IViewer.dll が必要。
  
 
*Shell.Application の内容を確認してみる
 
*Shell.Application の内容を確認してみる
=====Visual Studio の同梱されている=====
+
=====[[Visual Studio]] の同梱されている=====
 
[[File:1070_py_win32com04.jpg]]
 
[[File:1070_py_win32com04.jpg]]
 
=====Type Libraries から・・・=====
 
=====Type Libraries から・・・=====
56行目: 56行目:
 
*ファイルを開くから、上記レジストリエディタで確認した SHELL32.DLL を選択しても起動する。
 
*ファイルを開くから、上記レジストリエディタで確認した SHELL32.DLL を選択しても起動する。
 
[[File:1073_py_win32com07.jpg]]
 
[[File:1073_py_win32com07.jpg]]
=====SetTimeを選択すると、Help と シグネチャが確認できる。=====
+
=====SetTimeを選択すると、[[Help]] と シグネチャが確認できる。=====
 
[[File:1074_py_win32com08.jpg]]
 
[[File:1074_py_win32com08.jpg]]
  
 
===Visual Basic Editor のオブジェクトブラウザで 確認===
 
===Visual Basic Editor のオブジェクトブラウザで 確認===
=====Excel の Visual Basic Editor から上記 OLE/COM Object Viewer で確認したのと同様の内容を確認=====
+
=====[[Excel]] の Visual Basic Editor から上記 OLE/COM Object Viewer で確認したのと同様の内容を確認=====
 
*ツール - マクロ - Visual Basic Editor
 
*ツール - マクロ - Visual Basic Editor
 
[[File:1075_py_win32com09.jpg]]
 
[[File:1075_py_win32com09.jpg]]
75行目: 75行目:
 
==例==
 
==例==
 
[[WshShell]] |  
 
[[WshShell]] |  
===WScript.Network===
+
===[[WScript]].Network===
 
====プリンタを列挙====
 
====プリンタを列挙====
=====WScript.Network で、呼び出されるCOM=====
+
=====[[WScript]].Network で、呼び出されるCOM=====
 
[[File:1063_py_win32com_wsh_net01.jpg]]
 
[[File:1063_py_win32com_wsh_net01.jpg]]
 
=====WshNetwork の EnumPrinterConnections を呼び出してみる=====
 
=====WshNetwork の EnumPrinterConnections を呼び出してみる=====
85行目: 85行目:
 
=====実行=====
 
=====実行=====
 
  >>> import win32com.client
 
  >>> import win32com.client
  >>> wsh = win32com.client.Dispatch('WScript.Network')
+
  >>> wsh = win32com.client.Dispatch('[[WScript]].Network')
 
  >>> printers  = wsh.EnumPrinterConnections()
 
  >>> printers  = wsh.EnumPrinterConnections()
 
  >>> for i in range(0, printers.Count(), 1):
 
  >>> for i in range(0, printers.Count(), 1):

2020年2月16日 (日) 04:31時点における最新版

目次

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 の仕様を確認する方法

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()を呼び出す。日付と時刻のプロパティをを表示
>>> import win32com.client
>>> sh = win32com.client.Dispatch('Shell.Application')
>>> 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

実行
>>> 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