- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在自动执行更改注销按钮策略的步骤。涉及的步骤是:
使用 gpedit.msc 打开本地组策略
从左 Pane 的“用户配置”>“管理模板”的下拉列表中选择“开始菜单和任务栏”
在右 Pane 中,双击“更改开始菜单电源按钮”
选择单选按钮“启用”
从选项的下拉菜单中:选择“注销”
我已经完成了第三步,但是我在映射第二步的“更改开始菜单电源按钮”时遇到问题。我的代码如下:
from pywinauto import Application
Application().start(r'mmc gpedit.msc')
app = Application(backend="uia").connect(path='mmc.exe')
#app.LocalGroupPolicyEditor.dump_tree()
Admin_template = app.LocalGroupPolicyEditor.child_window(title="User
Configuration", control_type="TreeItem").child_window(title="Administrative
Templates", control_type="TreeItem") # since there are same templates
Admin_template.double_click_input() # it expands the subtree
#Admin_template.dump_tree()
Start_menu = Admin_template.child_window(title="Start Menu and Taskbar",
control_type="TreeItem").double_click_input()
Start_menu.dump_tree()
#Admin_template.child_window(title="Start Menu and Taskbar",
control_type="TreeItem").dump_tree()
#Change_start_menu = Start_menu.child_window(title="Change Start Menu power
#button", control_type="MenuItem").double_click_input()
#Change_start_menu.dump_tree()
我无法在右 Pane 中查找和映射元素。此外,当我使用 Start_menu.dump_tree()
时,只显示“通知”元素。但是,其余部分(包括“更改开始菜单电源按钮”)是我下一步要双击的内容。
感谢您的帮助。谢谢。
最佳答案
这有点棘手,但这应该可以完成工作(它会执行您列出的所有步骤 - 按确定 - 并关闭程序):
import pywinauto
pywinauto.Application().start(r'mmc gpedit.msc')
app = pywinauto.Application(backend="uia").connect(path='mmc.exe')
admin_template = app.LocalGroupPolicyEditor.child_window(title="User Configuration", control_type="TreeItem").child_window(title="Administrative Templates", control_type="TreeItem")
admin_template.double_click_input()
start_menu = admin_template.child_window(title="Start Menu and Taskbar", control_type="TreeItem")
start_menu.double_click_input()
option_list = app.LocalGroupPolicyEditor.child_window(auto_id="12786", control_type="List")
# Just select any of the first options to change the focus to the list.
first_elem = option_list.child_window(title="Add Search Internet link to Start Menu", control_type="ListItem")
first_elem.click_input()
# Used to scroll down the window so that the wanted option becomes visible.
pywinauto.keyboard.send_keys("cccc")
option = option_list.child_window(title="Change Start Menu power button", control_type="ListItem")
option.double_click_input()
pop_up = app.LocalGroupPolicyEditor.child_window(auto_id="tableLayoutFullForm", control_type="Pane")
radio = pop_up.child_window(title="Enabled", auto_id="radioButtonEnabled", control_type="RadioButton")
radio.click_input()
drop_down = pop_up.child_window(title="Choose one of the following actions", auto_id="dropDownListChoose one of the following actions", control_type="ComboBox")
drop_down.click_input()
# 'Hack' to first select the Restart option and then the next option after that which starts with l (=Log off).
# This ensures that the correct setting gets set despite of what the setting was before.
pywinauto.keyboard.send_keys("rl{ENTER}")
ok = pop_up.child_window(title="OK", auto_id="buttonOK", control_type="Button")
ok.click_input()
app.kill()
确保以管理员身份运行此脚本,否则它将失败。
如果您对代码有任何疑问,请随时询问 :)
编辑:
如果您运行的是 pywinauto <0.6.0 版本,则必须将 pywinauto.keyboard.send_keys()
的两次出现(第 19 和 34 行)替换为:
pywinauto.SendKeysCtypes.SendKeys()
如果不行你可以试试:
pywinauto.keyboard.SendKeys()
关于python - 注销按钮策略更改的 GUI 自动化。 pywinauto.findwindows.ElementNotFoundError : error. 如何切换上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55016053/
我正在尝试使用 JNA 将名为 MyWindowTitle 的窗口置于最前面。 import com.sun.jna.Native; import com.sun.jna.win32.StdCallL
我需要将服务应用程序与 vcl 应用程序进行通信。我的旧应用程序是一个控制台,控制台与 vcl 应用程序通信没有问题。现在我将控制台应用程序迁移到 srv 应用程序。旧的通信使用 FindWindow
如果我只知道窗口标题和类名的一部分,我如何获得窗口的描述符? 最佳答案 FindWindow() 需要完整的标题。在循环中使用 EnumWindows() 或 GetWindow() 来枚举所有可用的
我是 WindowsForms 的新手,正在构建一个小型示例应用程序。 我正在尝试构建一个将文本键入记事本窗口的应用程序,但在从 dll 导入时出现错误 FindWindow does not exi
我正在制作叠加层。我这里有这段代码 using System; using System.Collections.Generic; using System.Component
有没有办法通过不完整的名称找到窗口? 例如,您如何找到可以有多个标题名称的 Google Chrome 窗口? 像 Stack Overflow - Google Chrome 如果窗口始终与函数同名
我试图让一个函数找到一个窗口句柄。我已经通过以下方式多次这样做了: HWND windowHandle windowHandle = FindWindow(NULL, "NameOfWindowIAm
我有一个程序可以在 Windows 8.1 上打开一个窗口(实际上是一个视频游戏)。然后该程序以我编译的 C++ .DLL 的形式调用“扩展”。在该 DLL 中,我需要获取调用该 DLL 的程序(视频
我有 Windows 8 和 Visual Studio 2013。 #include #include using namespace std; int main() { HWND hWnd =
我只想知道为什么这段代码不起作用? HWND hWnds = FindWindow(NULL,(LPCTSTR)"Calculator"); 它总是为 hWnd 返回 NULL.... 知道如
我计划用 C++ 制作一个简单的训练控制台,但第一步我遇到了 FindWindow() 的问题 #include #include #include #include #include LP
从服务应用程序调用时,Windows API::FindWindow 函数失败。 GetLastError() 也返回 0(成功?)。这是一些特权\访问权限问题吗?你认为这是设计问题,我应该使用另一种
我正在编写的应用程序正在使用虚拟键盘。要显示、隐藏、调整大小或移动虚拟键盘,我首先需要通过调用 FindWindow 函数获取它的句柄,然后通过 PostMessage 向它发送一些消息。 由于我没有
示例 Outlook:它只有一个进程但可以有多个窗口(用户可以双击电子邮件在自己的窗口中打开它) 因此,我无法使用 Process.GetProcess() 遍历流程并比较标题。 FindWindow
有谁知道什么会导致 FindWindow 返回错误的函数: ALREADY_EXISTS error (183) 我能理解 FILE_NOT_FOUND (2) ,但为什么会返回 183 ? 最佳答案
这不是一个复杂的问题。我无法找到属于 iTunes 的句柄。但是虽然 iTunes 在后台运行,但它一直告诉我找不到该窗口。所以我继续检查我是否错过了输入窗口名称,但是 spy ++向我指出我使用了正
我正在尝试在 FM 中使用 findwindow api 调用,我可以在 VCL 应用程序中使用它查找,但不能在 FM 中使用。 这是我的代码 function WindowExists(ti
我创建了一个没有显示的窗口: int main() { CreateWindow("SysListView32","Geek",0, 0, 0, 0, 0,NULL, NULL, (HINST
这个问题在这里已经有了答案: Python Window Activation (7 个答案) 关闭 3 年前。 我正在尝试查找 Microsoft excel 是否有一个打开的窗口 import
所以我试图创建一个迷彩解锁器,但我从来没有遇到过通过 findwindow 获取进程 ID 的问题 但现在我试图找到 black ops 2 的 proc id 但窗口名称不起作用 使命召唤®:黑色行
我是一名优秀的程序员,十分优秀!