パイソンのWin32API win32gui win32con共通メッセージ送信ウィンドウハンドルキーボード入力方法

輸入win32gui
輸入win32conの
輸入のWin32API

トップダウンのメインウィンドウから#検索ウィンドウ、あなたは子ウィンドウを検索することはできません
#1のFindWindowを(lpClassName =なし、lpWindowName =なし) ウィンドウクラス名のウィンドウタイトル名
ハンドル= win32gui.FindWindow(「メモ帳」、なし)


#ウィンドウの位置を取得
左に、上、右、下= win32gui.GetWindowRect(ハンドル)
#ハンドルクラス名とタイトル取得
タイトル= win32gui.GetWindowText(ハンドル)
clsname = win32gui.GetClassName(ハンドル)

#印刷のハンドル
(10進数)
を印刷(ハンドル)
#六角
印刷( "%X" %(ハンドル))


検索子ウィンドウ#の
#は、子ウィンドウを列挙
hwndChildList = []
(:param.append(HWND)、hwndChildList、ラムダHWND、PARAMを扱う)win32gui.EnumChildWindows

#FindWindowEx(hwndParent = 0、hwndChildAfter = 0、lpszClass =なし、lpszWindow =なし) 親ウィンドウハンドル、バック検索hwndChildAfterサブフォームから、または最初のサブから始まるz屈折率の順序0ではありませんフォームの検索を開始します。子ウィンドウクラスひなこウィンドウのタイトル
subHandle = win32gui.FindWindowEx(ハンドル、0、 "EDIT"、なし)

#得られたウィンドウメニュー処理
menuHandle = win32gui.GetMenu(subHandle)
をプルダウンメニューまたはサブメニューハンドル得る
#パラメータを:メニューのサブメニューのインデックスを処理
subMenuHandle = win32gui.GetSubMenu(menuHandle、0)
は、メニュー項目の識別子を取得します、デリミタが索引付けされることに注意してください
#パラメータ:サブメニュー項目のインデックス処理
menuItemHandle = win32gui.GetMenuItemID(subMenuHandle、0)
は、メッセージを送信し、メッセージキューが追加され、ノーリターンの
#パラメータ:メッセージ・タイプIParam WPARAMのにハンドルない
win32gui。 postMessage(subHandle、win32con.WM_COMMAND、menuItemHandle、 0)


定義された#のwParamには、上位ワードは、下位ワードはそれ15-0彼31-16で32ビットの整数です。
以上の2つのパラメータは、wParamにとlParamに十分ではない時間が2のwParamに分割することができる#を使用INT16を与えます。
レーン#が共にLOWORD、すなわちwParamに= HIWORD << 16 + LOWORDと、16に左定数HIWORDとPythonで、この時間を覚えています。

ボックス#1の内容を変更する
#パラメータを:ボックスに取り扱い、メッセージの内容を、開始インデックス0にボックスがオプションを選択する項目のパラメータを、値が-1の場合、コンボボックスの一覧から現在のオプションを削除し、現在の選択が空であり、パラメータ
の下で、次のボックスハンドル、PCB_handleマーキー親ウィンドウハンドルは、#CB_Handle
IF win32api.SendMessage(CB_handle、win32con.CB_SETCURSEL、1、0)== 1:
次のボックス親ウィンドウコマンド
#パラメータ:親ウィンドウハンドル、コマンド、パラメータ:WPARAM:低い内容を表す、高の種類を示し、IParamパラメータ、ボックスはハンドル
#CBN_SELENDOKをユーザがリスト項目は、迅速な治療の親形態に活性である選択したときに送信されましたユーザーを選択します。LOWORD組み合わせボックスのID。CBN_SELENDOKのHIWORD値。
win32api.SendMessage(PCB_handle、win32con.WM_COMMAND、0x90000、CB_handle)
ユーザは、選択リスト項目を変更し、またはユーザがこの通知の方向を選択するために、マウスを使用して、選択されたか否かが送信されるときCBN_SELCHANGEを送信します。LOWORD組み合わせボックスのID。CBN_SELCHANGEのHIWORD値。
win32api.SendMessage(PCB_handle、win32con.WM_COMMAND、0x10000番地、 CB_handle)


#は、テキストボックスの内容を設定し、他のポストウィンドウリターンが真に処理します。GBKは中国語に符号化される
#パラメータ:ハンドル、メッセージタイプ、WPARAMパラメータを使用することなく、IParamパラメータ、コンテンツを設定するために、文字列
win32api.SendMessage(ハンドル、win32con.WM_SETTEXT、0、 os.path.abspath(fgFilePath)。 エンコード( 'GBK'))


メッセージ処理の後に0に戻りOKコントロール#クリック
制御ハンドル決定するIParamパラメータ0(未使用);ウィンドウハンドル、メッセージタイプ、WPARAM HIWORDパラメータが0(未使用)、LOWORDのコントロールのID#パラメータを
win32api.SendMessageを(Mhandle、win32con.WM_COMMAND、1、confirmBTN_handle )


ヌル文字の末尾#フリーテキスト取得ウィンドウカット長
パラメータIParam、メッセージタイプ;ウィンドウハンドルWPARAMパラメータ:#パラメータを
BUFSIZE = win32api.SendMessage(subHandle、win32con.WM_GETTEXTLENGTH、0、0)+ +1の
バッファ使用#API生成
STRBUFをwin32gui.PyMakeBuffer =(BUFSIZE)
プリント(STRBUF)
の送信テキストメッセージ取得
#パラメータ:ウィンドウハンドル、メッセージタイプ、テキストサイズ、保管場所
長= win32gui.SendMessage(subHandle、win32con.WM_GETTEXT、BUFSIZE、STRBUF)
リバース文字列にコンテンツ、
#テキスト= STR(STRBUF [: - 1])

アドレス、長さ= win32gui.PyGetBufferAddressAndLen(STRBUF)
テキスト= win32gui.PyGetString(アドレス、長さ)
#印刷( 'テキスト:'、テキスト)

#:クリックイベント
に#のマウスの位置(30、50)
win32api.SetCursorPos([30、150])
あなたは数ミリ秒の遅延をダブルクリックし、ために一度クリックした場合、#の実行は、1回のキーストロークを左
win32api.mouse_event win32con.MOUSEEVENTF_LEFTUP(| win32con.MOUSEEVENTF_LEFTDOWN、0、0、0、0)
を右クリックし
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN、0、 0、0、0)

一种#第:デフクリック1(x、y)は
win32api.SetCursorPos((X、Y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN、X、Y、0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP、X、Y、 0,0)

DEF click2(X、Y):#第二种
ctypes.windll.user32.SetCursorPos(x、y)は
ctypes.windll.user32.mouse_event(2,0,0,0,0)
ctypes.windll.user32.mouse_event( 4,0,0,0,0)

DEF click_it(POS):#第三种
ハンドル= win32gui.WindowFromPoint(POS)
client_pos = win32gui.ScreenToClient(ハンドル、POS)
TMP = win32api.MAKELONG(client_pos [0]、client_pos [1])
win32gui.SendMessage(ハンドル、 win32con.WM_ACTIVATE、win32con.WA_ACTIVE、0)
win32gui.SendMessage(ハンドル、win32con.WM_LBUTTONDOWN、win32con.MK_LBUTTON、TMP)
win32gui.SendMessage(ハンドル、win32con.WM_LBUTTONUP、win32con.MK_LBUTTON、TMP)

#发送回车
win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13.0、win32con.KEYEVENTF_KEYUP、0)


#关闭窗口
win32gui.PostMessage(win32lib.findWindow(クラス名、titlename)、win32con.WM_CLOSE、0、0)


#ウィンドウが最小化されるかどうかを確認し、最大もし
IF(win32gui.IsIconic(HWND)):
#1 win32gui.ShowWindow(HWND、win32con.SW_SHOWNORMAL)
win32gui.ShowWindow(HWND ,. 8)
SLEEP(0.5)

#のSW_HIDE:ウィンドウを非表示にし、他のウィンドウをアクティブにします。nCmdShow = 0。
#のSW_MAXIMIZEは:指定されたウィンドウを最大化します。nCmdShow = 3。
#SW_MINIMIZE:指定されたウィンドウを最小化し、Zオーダーの最上部に次のウィンドウをアクティブにします。nCmdShow = 6。
#1 SW_RESTORE:アクティブにして、表示窓。ウィンドウが最小化または最大化されている場合、システムは、元のサイズと位置にウィンドウを復元します。最小化したウィンドウを復元すると、アプリケーションはこのフラグを指定する必要があります。nCmdShow = 9。
#1 SW_SHOW:アクティブにし、ウィンドウの元の位置に元のサイズに表示ウィンドウ。nCmdShow = 5。
#1 SW_SHOWDEFAULT:指定された構造SW_FLAG STARTUPINFO表示状態フラグがセットされているに応じて、構造STARTUPINFOアプリケーションプログラムは、CreateProcess関数を起動することによって送信されます。nCmdShow = 10。
#SW_SHOWMAXIMIZED:ウィンドウをアクティブにし、それを最大化します。nCmdShow = 3。
#SW_SHOWMINIMIZED:ウィンドウをアクティブにし、それを最小限に抑えます。nCmdShow = 2。
#SW_SHOWMINNOACTIVE:ウィンドウが最小化され、アクティブなウィンドウはアクティブのまま。nCmdShow = 7。
#SW_SHOWNA:元のステータスウィンドウに表示ウィンドウ。アクティブなウィンドウはアクティブのまま。nCmdShow = 8。
#SW_SHOWNOACTIVATE:大きさと最新のウィンドウ表示ウィンドウの状態に一度。アクティブなウィンドウはアクティブのまま。nCmdShow = 4。
#のSW_SHOWNORMAL:ウィンドウをアクティブにして表示されます。ウィンドウが最小化または最大化されている場合、システムは、元のサイズおよび寸法に戻るであろう。時間の表示ウィンドウで初めてアプリケーションは、このフラグを指定する必要があります。nCmdShow = 1。

 

#Win32のは、それがのPyUserInputを使用するように簡単ではないキーボードを制御するかもしれませんが、けれども。インターフェースデータは、WindowsとMacで異なる場合があります。
インポートPyMouseのpymouse
pykeyboardインポートPyKeyboardから
M = PyMouse()
K = PyKeyboard()

x_dim、y_dim m.screen_size =()
のマウスクリック
m.click(x_dim / 2、/ 2 ,. 1 y_dim)
キーボード入力を
k.type_string( 'こんにちは、世界!' )

#キー押しながら
k.press_key( 'H')
キーが解放され
k.release_key( 'H')
を押すと解除するには、キーをタップ
k.tap_key( 'E')
断続的に繰り返し#のTAPのサポートキー押し
(= N-2、間隔= 'L' 5)k.tap_keyを
#テキスト送信決意
k.type_string( '123456')

#创建组合键
k.press_key(k.alt_key)
k.tap_key(k.tab_key)
k.release_key(k.alt_key)
特殊功能键
k.tap_key(k.function_keys [5])#タップF5の
k.tap_key(テンキー上のk.numpad_keys [ 'ホーム'])#タップ'ホーム'
k.tap_key(k.numpad_keys [5]、n = 3)のテンキーの#5タップ、三回

#マックシステム
k.press_keys([ 'コマンド'、 'シフト'、」3' ])
#Windowsシステム
k.press_keys([k.windows_l_key、 'D' ])

マウスとキーボードの入力イベントをリッスンするために使用することができPyMouseEventとPyKeyboardEvent

 

オリジナルリンクします。https://blog.csdn.net/qq_16234613/article/details/79155632

おすすめ

転載: www.cnblogs.com/draven123/p/11375337.html