ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 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*) 获取所有控件的属性作为字典列表