如何在桌面锁定或 RDP 会话关闭时单击 TreeItem 复选框

问题描述 投票:0回答:1

您好,我在某个窗口中有有关我的 UI 和 TreeView 项目的以下信息:

>>> x.dump_tree()
Control Identifiers:

TreeView - ''    (L662, T453, R1022, B651)
['', 'TreeView']
child_window(auto_id="1000", control_type="Tree")
   |
   | TreeItem - 'Program files (32 bit)'    (L697, T455, R822, B473)
   | ['TreeItem', 'Program files (32 bit)', 'Program files (32 bit)TreeItem', 'TreeItem0', 'TreeItem1']
   | child_window(title="Program files (32 bit)", control_type="TreeItem")
   |
   | TreeItem - 'Program files (64 bit)'    (L697, T473, R822, B491)
   | ['Program files (64 bit)', 'TreeItem2', 'Program files (64 bit)TreeItem']
   | child_window(title="Program files (64 bit)", control_type="TreeItem")
   |
   | TreeItem - 'Sample code'    (L697, T491, R782, B509)
   | ['Sample codeTreeItem', 'TreeItem3', 'Sample code']
   | child_window(title="Sample code", control_type="TreeItem")
   |    |
   |    | TreeItem - 'JSP & Java'    (L716, T509, R790, B527)
   |    | ['JSP & JavaTreeItem', 'TreeItem4', 'JSP & Java']
   |    | child_window(title="JSP & Java", control_type="TreeItem")
   |    |
   |    | TreeItem - 'C#.NET'    (L716, T527, R768, B545)
   |    | ['C#.NET', 'TreeItem5', 'C#.NETTreeItem']
   |    | child_window(title="C#.NET", control_type="TreeItem")
   |    |
   |    | TreeItem - 'PHP'    (L716, T545, R748, B563)
   |    | ['PHP', 'TreeItem6', 'PHPTreeItem']
   |    | child_window(title="PHP", control_type="TreeItem")
   |
   | TreeItem - 'C Interface Files (32 bit)'    (L697, T563, R838, B581)
   | ['C Interface Files (32 bit)', 'TreeItem7', 'C Interface Files (32 bit)TreeItem']
   | child_window(title="C Interface Files (32 bit)", control_type="TreeItem")
   |
   | TreeItem - 'C Interface Files (64 bit)'    (L697, T581, R838, B599)
   | ['C Interface Files (64 bit)', 'TreeItem8', 'C Interface Files (64 bit)TreeItem']
   | child_window(title="C Interface Files (64 bit)", control_type="TreeItem")
   |
   | TreeItem - 'Partner Sourced Data Server'    (L697, T599, R873, B617)
   | ['Partner Sourced Data ServerTreeItem', 'Partner Sourced Data Server', 'TreeItem9']
   | child_window(title="Partner Sourced Data Server", control_type="TreeItem")
>>> y = x.get_item('\\Program files (32 bit)')
>>> y
<uia_controls.TreeItemWrapper - 'Program files (32 bit)', TreeItem, 1916753231443648783>
>>> dir(y)
['__abstractmethods__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__' , '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry', '_as_parameter_', '_cache', '_calc_click_coords', '_control_types', '_create_wrapper', '_element_info', ' _needs_image_prop', '_scroll_types', '_select', 'actions', 'appdata', 'automation_id', 'backend', 'can_be_label', 'can_select_multiple', 'capture_as_image', 'children', 'children_texts', 'class_name', 'click_input', 'client_to_screen', 'close', 'collapse', 'control_count', 'cont rol_id', 'descendants', 'double_click_input', 'drag_mouse_input', 'draw_outline', 'element_info', 'ensure_visible', 'expand', 'friendly_class_name', 'friendlyclassname', 'get_child', 'get_expand_state', 'get_properties', 'get_selection', 'get_show_state', 'handle', 'has_keyboard _focus', 'has_title', 'iface_expand_collapse', 'iface_grid', 'iface_grid_item', 'iface_invoke', 'iface_item_container', 'iface_range_value', 'iface_scroll', 'iface_scroll_item', 'iface_selection', 'iface_selection_item', 'iface_table', 'iface_table_item', 'iface_text', 'iface_to ggle', 'iface_transform', 'iface_transformV2', 'iface_value', 'iface_virtualized_item', 'iface_window', 'invoke', 'is_active', 'is_checked', 'is_child', 'is_collapsed', 'is_dialog', 'is_enabled', 'is_expanded', 'is_keyboard_focusable', 'is_maximized', 'is_minimized', 'is_normal' , 'is_selected', 'is_selection_required', 'is_visible', 'iter_children', 'iter_descendants', 'legacy_properties', 'maximize', 'menu_select', 'minimize', 'move_mouse_input', 'parent', 'press_mouse_input', 'process_id', 'rectangle', 'ref', 'release_mouse_input', 'restore', 'right_ click_input', 'root', 'scroll', 'select', 'selected_item_index', 'set_focus', 'sub_elements', 'texts', 'top_level_parent', 'type_keys', 'verify_actionable', 'verify_enabled', 'verify_visible', 'wait_for_idle', 'was_maximized', 'wheel_mouse_input', 'window_text', 'windowclasses',  'writable_props']

似乎只有在桌面处于活动状态(计算机未锁定或 RDP 会话处于活动状态)时才允许所有可能的控制方法

有没有办法通过桌面锁定时可以使用的方法来解决此问题?

额外信息:该进程以管理员身份启动(也是python进程),并且我已使用 connect 方法连接到该进程。该应用程序的后端是uia

Python版本:3.7,pywinauto 0.6.5

我附上 UI 屏幕截图以获取更多说明: 在此输入图片描述

这是我使用的代码,但它仅在桌面处于活动状态时才有效:

def click_tree_button(app, window, button, timeout=DEFAULT_TIMEOUT_MINI):
    "Add descr. here"
    starttime = time()
    while time() - starttime < timeout:
        try:
            app.top_window()
            app.window(title_re=window).child_window(control_type="Tree").get_item('\\' + button).select().type_keys('{SPACE}')
            return
        except (pywinauto.findwindows.ElementNotFoundError,
                pywinauto.findbestmatch.MatchError):
            sleep(0.5)
    raise Exception("Cannot click '{}' tree button on '{}' screen".format(button, window))
python python-3.x pywinauto
1个回答
0
投票

最后,本指南中收集了 RDP(和 VNC 服务器软件)的所有可能配方:https://pywinauto.readthedocs.io/en/latest/remote_execution.html

© www.soinside.com 2019 - 2024. All rights reserved.