# 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