为什么从 pywinauto 发送的右键单击不会改变 informatica 中灰色连接按钮的状态,但真正的鼠标按钮单击会改变?
Why does a right click sent from pywinauto not change the state of the grayed out connect button in informatica, but a real mouse button click does?
我正在尝试使用 pywinauto 编写脚本以在 Informatica powercenter 工作流管理器 (v9.6.1) 中打开存储库
执行以下几行后,我得到了屏幕截图中带有连接选项的上下文菜单。还要注意工具栏上的 'connect' 按钮保持灰色。如果我使用实际鼠标并单击我要连接到的存储库的树视图项,连接按钮将变为绿色并启用。但是当 pywinauto 发送右键单击时不是。
from pywinauto.application import Application
from pywinauto.keyboard import SendKeys
import time
app = Application().Start(cmd_line=r'C:\PowerCenterClient\client\bin\pmwflmgr.exe')
informaticaworkflowmanager = app[u'Informatica::WorkflowManager']
informaticaworkflowmanager.Wait('ready')
time.sleep(2)
systreeview = informaticaworkflowmanager[u'TreeView']
tree_item = systreeview.GetItem([u'Repositories', u'REP'])
tree_item.Select()
tree_item.Click(button='right',double=True,where='icon')
我尝试使用 SendKeys 发送 'c',然后发送 {ENTER},它只是 returns,什么也没做。此外,如果我在上述 pywinauto 步骤 运行 之后生成的右键单击上下文菜单上使用实际键盘 - 当我按 c 时它会选择连接菜单,但当我按 Enter 时它不会执行任何操作。我认为连接功能未启用。
我不知道应用程序是否需要任何其他输入来启用它。我也尝试使用 informaticaworkflowmanager.MenuItem(u'&Repository->&Connect...')
选项但无济于事 - 它说它已被禁用。
欢迎任何有助于让 pywinauto 打开存储库的指示!
只是总结评论...
首先尝试 运行以管理员身份运行脚本。如果没有帮助,请使用方法 click_input()
。它 运行 是真正的用户点击。方法 click()
发送 WM_CLICK
或 BM_CLICK
,这可能未被处于灰色按钮状态的应用程序处理。
如果您 运行 以管理员身份运行脚本,默认情况下它应该继承子进程的权限。方法 start()
中没有特殊标志,因为如果目标应用进程具有更高权限,某些功能可能无法工作。无论如何,提升通常需要用户确认,并且 OS 设计无法自动执行此安全确认对话框(即使 click_input()
在显示此对话框时使用硬编码坐标也不起作用,我检查了一会儿以前)。
我正在尝试使用 pywinauto 编写脚本以在 Informatica powercenter 工作流管理器 (v9.6.1) 中打开存储库
执行以下几行后,我得到了屏幕截图中带有连接选项的上下文菜单。还要注意工具栏上的 'connect' 按钮保持灰色。如果我使用实际鼠标并单击我要连接到的存储库的树视图项,连接按钮将变为绿色并启用。但是当 pywinauto 发送右键单击时不是。
from pywinauto.application import Application
from pywinauto.keyboard import SendKeys
import time
app = Application().Start(cmd_line=r'C:\PowerCenterClient\client\bin\pmwflmgr.exe')
informaticaworkflowmanager = app[u'Informatica::WorkflowManager']
informaticaworkflowmanager.Wait('ready')
time.sleep(2)
systreeview = informaticaworkflowmanager[u'TreeView']
tree_item = systreeview.GetItem([u'Repositories', u'REP'])
tree_item.Select()
tree_item.Click(button='right',double=True,where='icon')
我尝试使用 SendKeys 发送 'c',然后发送 {ENTER},它只是 returns,什么也没做。此外,如果我在上述 pywinauto 步骤 运行 之后生成的右键单击上下文菜单上使用实际键盘 - 当我按 c 时它会选择连接菜单,但当我按 Enter 时它不会执行任何操作。我认为连接功能未启用。
我不知道应用程序是否需要任何其他输入来启用它。我也尝试使用 informaticaworkflowmanager.MenuItem(u'&Repository->&Connect...')
选项但无济于事 - 它说它已被禁用。
欢迎任何有助于让 pywinauto 打开存储库的指示!
只是总结评论...
首先尝试 运行以管理员身份运行脚本。如果没有帮助,请使用方法
click_input()
。它 运行 是真正的用户点击。方法click()
发送WM_CLICK
或BM_CLICK
,这可能未被处于灰色按钮状态的应用程序处理。如果您 运行 以管理员身份运行脚本,默认情况下它应该继承子进程的权限。方法
start()
中没有特殊标志,因为如果目标应用进程具有更高权限,某些功能可能无法工作。无论如何,提升通常需要用户确认,并且 OS 设计无法自动执行此安全确认对话框(即使click_input()
在显示此对话框时使用硬编码坐标也不起作用,我检查了一会儿以前)。