Python と pywinauto で Windows の GUI 操作を自動化する
GUI 操作の自動化は AutoIt や UWSC などを使うと可能ですが、選択肢として Python + pywinauto もありかもしれません。
Python はウェブ開発やスクリプト、PySide などを利用した GUI 開発にも使えます。そのため Python を使えば GUI の自動化以外にも様々な開発を行うことができるようになります。
インストール
- Python 2.7.1
- 公式の Python でも ActivePython でも OK。
- 先々の面倒を考えると ActivePython が便利かもしれない
- ctypes が利用できる Python 2.5 以上を使うこと
- C:\Python27 にパスを通す
- distribute か pip を入れておくと便利。しかし今回は使わない
- 公式の Python でも ActivePython でも OK。
- pywinauto 0.4.0
- easy_install だと古いバージョンが入ってしまうので注意
- http://sourceforge.net/projects/pywinauto/files/pywinauto/0.4.0/
- 上記 URL から pywinauto-0.4.0.zip をダウンロードして解凍
- 解凍したフォルダを開いて python setup.py install を実行
- インストール後、「SendKeys モジュールが無い」と言われたりするが、付属の SendKeysCtypes モジュールを使っているみたいなので必要ないと思われる
- The following module has to be installed before running pywinauto...
- No module named: SendKeys
メモ帳を開いて現在の日付と時刻を保存する
# coding: utf-8 from datetime import datetime from pywinauto import application app = application.Application.start("notepad.exe") # Notepad クラス (Notepad のウィンドウ) を探して日時を入力 app.Notepad.Edit1.SetText(unicode(datetime.now())) # メニューを選択 app.Notepad.MenuSelect(u"ファイル->名前を付けて保存") # 「名前を付けて保存」のウィンドウを探す dialog = app[u"名前を付けて保存"] # ファイル名を設定 dialog.Edit1.SetText(u"datetime.txt") # 保存ボタンをクリック dialog.Button1.Click() # すでにファイルが存在すれば上書きの確認が求められる confirm = app[u"名前を付けて保存の確認"] if confirm.Exists(): # 確認を求められたかどうか confirm.Button1.Click() # 上書きする # キーストロークを使って終了させる app.Notepad.TypeKeys("%FX") # 終了 (Alt+F X)
コードを書く際の注意点
さらに詳細な操作は...
pywinauto を使えば Python を使ってより詳細な GUI 操作を自動化できます。ドキュメントにかなり詳しく書かれていますので、以下を参照してください。
http://pywinauto.googlecode.com/hg/pywinauto/docs/contents.html