わかりました。まず、背景情報と参考文献から始めましょう。
使用するモジュールは、ここpywin32
からダウンロードできます。具体的には、API リファレンスはこちらです。win32gui
ダイアログを操作する前に、ウィンドウ ハンドルに「ナビゲート」する必要があります。次の例ではAPIwin32.FindWindow
リファレンスhereを使用しています。この場合は、 lpclassName
#32770
lpWindowName
File Upload
HWND WINAPI FindWindow(
_In_opt_ LPCTSTR lpClassName,
_In_opt_ LPCTSTR lpWindowName
);
ファイルハンドルを見つけるコード:
import win32gui
control = win32gui.FindWindow("#32770", "File Upload")
そして、ハンドルを格納します。私の場合は721470
.
次のステップは、ダイアログ内の GUI オブジェクトのハンドルを見つけることCancel
です。ボタンの例を示します。ハンドルを見つけるには、FindWindowEx
ここで API リファレンスを使用します。
import win32con
import win32api
ButtonHandle = win32gui.FindWindowEx(control, 0, "Button", "Cancel");
win32api.SendMessage(ButtonHandle, win32con.BM_CLICK, 0, 0)
についてはこちらを、 についてはこちらを参照してください。BM_CLICK
SendMessage
最終的なコード:
import win32gui
import win32api
import win32con
window = win32gui.GetForegroundWindow()
title = win32gui.GetWindowText(window)
control = win32gui.FindWindow("#32770", "File Upload")
ButtonHandle = win32gui.FindWindowEx(control, 0, "Button", "Cancel")
win32api.SendMessage(ButtonHandle, win32con.BM_CLICK, 0, 0)
別の方法は、watsup.winGuiAuto
モジュールhereを使用することです。以下の例:
from watsup.winGuiAuto import *
optDialog = findTopWindow(wantedText="File Upload")
CancelButton = findControl(optDialog,wantedClass="Button", wantedText="Cancel")
clickButton(SaveButton)
しかし、最も簡単な方法はautoit
hereを使用することだと思います。以前にpyqtで使用して、コマンドを実行しました。
お役に立てれば!
追加の参考資料 (pywin32 バージョン):
win32gui
ここ
win32api
ここ