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モジュールで事足りるようだが。

excelを操作するにはpython-excelライブラリなるものもあるもよう。

PyWin32とは関係ないがpythonのwindowに関する情報を

ページのトップへ戻る