win32com - PyWin32(Python for Windows extensions)
【 目次 】
PyWin32とcomオブジェクト
win32comとかPyWin32とかPython for Windows extensionsとかいろいろな名前で呼ばれているが同じもののようだ。
win32comはPythonからimoprtするモジュール名。
rubyで同様なものにWin32OLE(Rubyist Magazine - Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ)がある。
要はPythonからCOMとかActiveXとか呼ばれているVB6等で昔盛んに使われていたWindowsOSのCOMオブジェクトと呼ばれるプログラム部品を呼び出して利用できるようにする事。
.NETが出てくる前までのmicrosoftのコンポーネント技術といったところか。
COMオブジェクトとしてはExcelを操ったり,BASP21(BASP21 DLL)等がなにかと重宝した。
microsoftが何かと呼び方をころころと変えたりして混乱した。
そういやWindowsDNA(Windows 2000 - Development Guide for Business Applications)なんてのもあったなぁ、今じゃ覚えている人もいないと思うけど。
PyWin32をインストール
Python for Windows Extensions - Browse /pywin32 at SourceForge.netより最新版のBuildをダウンロード。
Pythonのバージョンとwindowsが32ビット版か64ビット版かによってファイルが分かれているので自分のPCにインストールされているPythonにマッチするものをダウンロード。
【pythonのバージョンの確認方法】
pythonのバージョンの確認方法はコマンドラインより-Vオプションを付けて実行するか
python -V
もしくは、以下のPythonプログラムを実行。
import sys print sys.version # python3なら print(sys.version)
ダウンロードしたインストーラを実行。
[pythonインストールデレクトリ]\Lib\site-packagesデレクトリ配下にwin32comとかのデレクトリができている。
「Pleiades all in one eclispe」に付属のpython2とpython3にもインストールしようと試みたがpythonがレジストリに登録されていないみたいなメッセージが表示されてインストールできなかった。
多分、Windows用にパッケージングされたpythonで無いと認識されないのだろう。
comオブジェクトを操作してみる。
excelを操作する例は良く見かけるので、それ以外の例を。
まずはIEで愚鈍人サイトを表示してみる。
import win32com.client ie = win32com.client.Dispatch("InternetExplorer.Application") ie.Visible = True ie.Addressbar = True ie.Navigate("http://ichitcltk.hustle.ne.jp/gudon2/index.php")
もう一つサンプルを。
WshShellオブジェクトを使ってnotepadを起動。
Windows管理者のためのWindows Script Host入門:第5回 WshShellオブジェクトの詳細(1) (2/4) - @ITを参考に。
import win32com.client wshShell = win32com.client.Dispatch("WScript.Shell") wshShell.Run("notepad.exe")
他にもいろいろとWindowsで使えるみたい。
comオブジェクトだけでなくwin32ui, win32con, win32gui等のモジュールが含まれていて、いろいろな事ができるみたい。
でも、使い方がよくわからん!
[pythonインストールデレクトリ]\Lib\site-packages\win32\Demos\デレクトリにサンプルプログラムが入っている。
win32gui_demo.pyなんかを実行してみると面白い。
関連する話題
WindowsAPI
単にWindowsAPI等を呼び出すだけならわざわざPyWin32をインストールしなくてもpython標準添付のctypesモジュールで事足りるようだが。
- pythonでWindows APIを実行する - zbdk's diary
- 15.18. ctypes ? Pythonのための外部関数ライブラリ ? Python 2.7ja1 documentation
excelを操作するにはpython-excelライブラリなるものもあるもよう。