# pywinauto.controls.hwndwrapper
Windows控件的基本包裝
>[success] *exception* `pywinauto.controls.hwndwrapper.ControlNotEnabled`
Bases: `RuntimeError`
未啟用控件時引發
>[success] *exception* `pywinauto.controls.hwndwrapper.ControlNotVisible`
Bases: `RuntimeError`
當控件不可見時引發
>[success] *class* `pywinauto.controls.hwndwrapper.DialogWrapper(hwnd)`
Bases: `pywinauto.controls.hwndwrapper.HwndWrapper`
Wrap a dialog
> `ClientAreaRect`(*\*args*, *\*\*kwargs*)
> `HideFromTaskbar`(*\*args*, *\*\*kwargs*)
> `IsInTaskbar`(*\*args*, *\*\*kwargs*)
> `RunTests`(*\*args*, *\*\*kwargs*)
> `ShowInTaskbar`(*\*args*, *\*\*kwargs*)
> `WriteToXML`(*\*args*, *\*\*kwargs*)
> `can_be_label` *= True*
> `client_area_rect`()
返回客戶區矩形
MSDN:控件的客戶端區域是控件的邊界,減去非客戶端元素,如滾動條,邊框,標題欄和菜單。
> `force_close`()
使用WM_QUERYENDSESSION強制關閉對話框并返回結果
Window讓我們知道它不想結束 - 所以我們中止這意味著應用程序沒有掛起 - 但知道它不想關閉 - 例如 它詢問用戶是否要保存。
> `friendlyclassname` *= 'Dialog'*
> `hide_from_taskbar`()
從Windows任務欄隱藏對話框
> `is_in_taskbar`()
檢查對話框是否顯示在Windows任務欄中
感謝David Heffernan的想法:[http://stackoverflow.com/questions/30933219/hide-window-from-taskbar-without-using-ws-ex-toolwindow](http://stackoverflow.com/questions/30933219/hide-window-from-taskbar-without-using-ws-ex-toolwindow) 在以下情況下,任務欄中會顯示一個窗口:它沒有所有者,并且沒有WS_EX_TOOLWINDOW擴展樣式,或者它具有WS_EX_APPWINDOW擴展樣式。
> `run_tests`(*tests\_to\_run=None*, *ref\_controls=None*)
在對話框上運行測試
> `show_in_taskbar`()
在Windows任務欄中顯示該對話框
> `write_to_xml`(*filename*)
將對話框寫為XML文件(需要elementtree)
>[success] *class* `pywinauto.controls.hwndwrapper.HwndMeta`(*name*, *bases*efinition")
Bases: `pywinauto.base_wrapper.BaseMeta`
HwndWrapper對象的元類
>[success] *static* `find_wrapper`(*element*)
找到這個原生元素的正確包裝器
>[success] *class* `pywinauto.controls.hwndwrapper.``HwndWrapper`(*element_info*)
Bases: `pywinauto.base_wrapper.BaseWrapper`
控件的默認包裝器。
所有其他包裝都來自于此。
此類包含許多底層Windows API功能的功能,以便使用Windows。
大多數方法適用于每種窗口類型。 例如,您可以在任何窗口上單擊()。
這個類的大多數方法都是圍繞API調用的簡單包裝器,因此他們嘗試做最簡單的事情。
hwndwrapper對象可以直接傳遞給ctypes wrapped c函數,它將轉換為一個長型,其句柄的值為(參見ctypes, _as_parameter_)。
> `automation_id`()
返回控件的.NET名稱
> `click`(*button='left'*, *pressed=''*, *coords=(0*, *0)*, *double=False*, *absolute=False*)
模擬鼠標單擊控件
此方法將WM_*消息發送到控件,使用click_input()執行更“逼真”的鼠標單擊,使用mouse_event()API執行單擊。
該方法不要求控件在屏幕上可見(即它可以隱藏在另一個窗口下面并且它仍然可以工作)。
> `client_rect`()
返回窗口的客戶端矩形
客戶端矩形是窗口矩形減去控件無法用于繪圖的任何邊框。
對于此方法,top和left都始終為0。
此方法返回RECT結構,該結構具有top,left,right,bottom屬性。 并且有方法width()和height()。 有關更多信息,請參閱win32structures.RECT。
> `client_rects`()
為此控件中的每個項返回客戶端rect
它是控件的矩形列表。 經常過度使用多個項目從控件中提取所有矩形。
它始終是包含一個或多個矩形的列表:
* 第一個元素是控件的客戶端矩形
* 后續元素包含控件的任何項目的客戶端矩形(例如,列表框/組合框中的項目,tabcontrol中的選項卡)
> `close`(*wait\_time=0*)
關閉窗口
代碼修改自 [http://msdn.microsoft.com/msdnmag/issues/02/08/CQA/](http://msdn.microsoft.com/msdnmag/issues/02/08/CQA/)
> `close_alt_f4`()
按Alt + F4鍵關閉窗口。
> `close_click`(*button='left'*, *pressed=''*, *coords=(0*, *0)*, *double=False*)
執行應該使窗口消失的單擊操作
與點擊的唯一區別是點擊操作之前和之后有額外的延遲。
> `context_help_id`()
返回窗口的上下文幫助ID
> `control_type`()
返回控件的.NET類型
> `debug_message`(*text*)
在窗口上寫一些調試文本
> `double_click`(*button='left'*, *pressed=''*, *coords=(0*, *0)*)
執行雙擊操作
> `drag_mouse`(*button='left'*, *press_coords=(0*, *0)*, *release_coords=(0*, *0)*, *pressed=''*)
拖動鼠標
> `exstyle`()
返回窗口的擴展樣式
返回值很長。
WS_*和特定控件特定樣式的組合。 請參閱HwndWrapper.has_style()以輕松檢查窗口是否具有特定樣式。
> `font`()
返回窗口的字體
窗口的字體用于繪制該窗口的文本。 它是一個具有字體名稱,高度,寬度等屬性的結構。
有關更多信息,請參閱win32structures.LOGFONTW。
> `fonts`()
返回此控件中每個項目的字體
它是控件的字體列表。 經常過度使用從多個項目的控件中提取所有字體。
它始終是包含一個或多個字體的列表:
* 第一個元素是控制字體
* 后續元素包含控件的任何項目的字體(例如,列表框/組合框中的項目,tabcontrol中的選項卡)
> `full_control_type`()
返回控件的.NET類型(完整,未剪切)
> `get_active`()
將句柄返回到進程中的活動窗口
> `get_focus`()
在具有Focus的此窗口的過程中返回控件
> `get_show_state`()
獲取顯示狀態和最大化/最小化/恢復狀態
返回一個值,該值是以下的并集
* SW\_HIDE the window is hidden.
* SW\_MAXIMIZE the window is maximized
* SW\_MINIMIZE the window is minimized
* SW\_RESTORE 窗口處于“恢復”狀態(既未最小化也未最大化)
* SW\_SHOW The window is not hidden
> `get_toolbar`()
獲取第一個子工具欄(如果存在)
> `handle` *= None*
> `has_exstyle`(*exstyle*)
如果控件具有指定的擴展樣式,則返回True
> `has_focus`()
檢查窗口是否有焦點(前景)
> `has_keyboard_focus`()
檢查此控件上的鍵盤焦點。
> `has_style`(*style*)
如果控件具有指定的樣式,則返回True
> `is_active`()
窗口是否處于活動狀態
> `is_dialog`()
如果控件是頂級窗口,則返回true
> `is_maximized`()
指示窗口是否最大化
> `is_minimized`()
指示窗口是否最小化
> `is_normal`()
指示窗口是否正常(即未最小化且未最大化)
> `is_unicode`()
窗口是否是unicode
如果窗口是由registerclass(ex)的寬字符版本注冊的,則該窗口為Unicode。
> `maximize`()
最大化窗口
> `menu`()
返回控件的菜單
> `menu_item`(*path*, *exact=False*)
返回path指定的菜單項
路徑可以是“MenuItem-> MenuItem-> MenuItem ...”形式的字符串,其中每個MenuItem是菜單該級別的項目文本。 例如。
~~~
File->Export->ExportAsPNG
~~~
空格并不重要,所以你也可以寫...
~~~
File -> Export -> Export As PNG
~~~
> `menu_items`()
返回對話框的菜單項
如果沒有菜單項,則返回空列表
> `menu_select`(*path*, *exact=False*)
查找路徑指定的菜單項
完整路徑語法在以下位置指定:`controls.menuwrapper.Menu.get_menu_path()`
> `minimize`()
最小化窗口
> `move_mouse`(*coords=(0*, *0)*, *pressed=''*, *absolute=False*)
通過WM_MOUSEMOVE移動鼠標
> `move_window`(*x=None*, *y=None*, *width=None*, *height=None*, *repaint=True*)
將窗口移動到新坐標
* **x** 指定窗口的新左側位置。 默認為窗口的當前左側位置。
* **y** 指定窗口的新頂部位置。 默認為窗口的當前頂部位置。
* **width** 指定窗口的新寬度。 默認為窗口的當前寬度。
* **height** 指定窗口的新高度。 默認為窗口的當前高度。
* **repaint** 是否應該重新繪制窗口。 默認為True
> `notify_parent`(*message*, *controlID=None*)
將通知消息發送到此控件的父級
> `owner`()
返回窗口的所有者窗口(如果存在)
如果沒有所有者,則返回None。
> `popup_window`()
如果顯示,則返回自己啟用的彈出窗口包裝器。
如果當時沒有啟用彈出窗口,則返回**self**。 請參閱MSDN參考: [https://msdn.microsoft.com/en-us/library/windows/desktop/ms633515.aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633515.aspx)
請不要在生產代碼中使用 - 未完全測試
> `post_command`(*commandID*)
> `post_message`(*message*, *wparam=0*, *lparam=0*)
將消息發布到控制消息隊列并返回
> `press_mouse`(*button='left'*, *coords=(0*, *0)*, *pressed=''*)
按下鼠標按鈕
> `release_mouse`(*button='left'*, *coords=(0*, *0)*, *pressed=''*)
釋放鼠標按鈕
> `restore`()
將窗口恢復到以前的狀態(正常或最大化)
> `right_click`(*pressed=''*, *coords=(0*, *0)*)
執行右鍵單擊操作
> `scroll`(*direction*, *amount*, *count=1*, *retry\_interval=None*)
讓控件滾動自己
**方向** 可以是“up”, “down”, “left”, “right” **滾動單位** 可以是 “line”, “page”, “end” **數量** (可選) 滾動的次數
> `send_chars`(*chars*, *with\_spaces=True*, *with\_tabs=True*, *with\_newlines=True*)
在非活動窗口中以靜默方式將字符串發送到控件
如果遇到沒有相應字符的虛擬鍵(例如VK_LEFT,VK_DELETE),則引發KeySequenceError。 考慮使用send_keystrokes方法進行此類輸入。
> `send_command`(*commandID*)
> `send_keystrokes`(*keystrokes*, *with\_spaces=True*, *with\_tabs=True*, *with\_newlines=True*)
在非活動窗口中以靜默方式向控件發送擊鍵
它解析修飾符Shift(+),Control(^),Menu(%)和序列,如“{TAB}”,“{ENTER}”有關序列和修飾符的更多信息,請導航到模塊[keyboard](pywinauto.keyboard.md)
由于每個應用程序以不同方式處理輸入,并且此方法旨在用于非活動窗口,因此它可能僅部分工作,具體取決于目標應用程序。 如果窗口不活動不是必需的,使用穩定的[type_keys](pywinauto.base_wrapper.md) 方法.
> `send_message`(*message*, *wparam=0*, *lparam=0*)
向控件發送消息并等待它返回
> `send_message_timeout`(*message*, *wparam=0*, *lparam=0*, *timeout=None*, *timeoutflags=*)
向控件發送消息并等待它返回或超時
如果沒有給出超時,則將使用.01秒的默認超時。
> `set_application_data`(*appdata*)
應用程序數據是來自先前運行的軟件的數據
它對于在不同的語言上運行為一種語言編寫的腳本非常重要
> `set_focus`()
>
將焦點設置為此控件。
首先將窗口置于前臺。 系統限制哪些進程可以設置前景窗口 ([https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx)) 以便從屏幕上移除鼠標光標以防止任何副作用。
> `set_keyboard_focus`()
將鍵盤焦點設置為此控件。
> `set_transparency`(*alpha=120*)
通過alpha屬性將窗口透明度從0設置為255
> `set_window_text`(*text*, *append=False*)
設置窗口的文本
> `style`()
返回窗口的樣式
返回值很長。
WS_ *和特定控件特定樣式的組合。 請參閱HwndWrapper.has_style()以輕松檢查窗口是否具有特定樣式。
> `user_data`()
與窗口關聯的額外數據
此值是一個與窗口關聯的long值,很少有有用的數據(或者至少是您知道使用的數據)。
> `wait_for_idle`()
后端特定函數,用于等待線程或窗口的空閑狀態
> `writable_props`
擴展默認屬性列表。
>[success] *exception* `pywinauto.controls.hwndwrapper.InvalidWindowHandle`(*hwnd*)
Bases: `RuntimeError`
將無效句柄傳遞給HwndWrapper時引發
>[success] `pywinauto.controls.hwndwrapper.get_dialog_props_from_handle`(*hwnd*)
獲取所有控件的屬性作為字典列表
- 什么是Pywinauto
- 入門指南
- 如何
- 等待長時間操作
- 遠程執行指南
- 每種不同控制類型可用的方法
- 貢獻者
- 開發筆記
- 待辦項目
- 更新日志
- 基本用戶輸入模塊
- pywinauto.mouse
- pywinauto.keyboard
- 主要用戶模塊
- pywinauto.application
- pywinauto.findbestmatch
- pywinauto.findwindows
- pywinauto.timings
- 特定功能
- pywinauto.clipboard
- pywinauto.win32_hooks
- 控件參考
- pywinauto.base_wrapper
- pywinauto.controls.hwndwrapper
- pywinauto.controls.menuwrapper
- pywinauto.controls.common_controls
- pywinauto.controls.win32_controls
- pywinauto.controls.uiawrapper
- pywinauto.controls.uia_controls
- Pre-supplied Tests
- pywinauto.tests.allcontrols
- pywinauto.tests.asianhotkey
- pywinauto.tests.comboboxdroppedheight
- pywinauto.tests.comparetoreffont
- pywinauto.tests.leadtrailspaces
- pywinauto.tests.miscvalues
- pywinauto.tests.missalignment
- pywinauto.tests.missingextrastring
- pywinauto.tests.overlapping
- pywinauto.tests.repeatedhotkey
- pywinauto.tests.translation
- pywinauto.tests.truncation
- 后端內部實施模塊
- pywinauto.backend
- pywinauto.element_info
- pywinauto.win32_element_info
- pywinauto.uia_element_info
- pywinauto.uia_defines
- 內部模塊
- pywinauto.controlproperties
- pywinauto.handleprops
- pywinauto.xml_helpers
- pywinauto.fuzzydict
- pywinauto.actionlogger
- pywinauto.sysinfo
- pywinauto.remote_memory_block