【问题标题】:Select all elements of a listview in pywinauto using send_message使用 send_message 在 pywinauto 中选择列表视图的所有元素
【发布时间】:2019-06-11 14:30:41
【问题描述】:

需要帮助才能使用 send_message 选择列表视图的所有元素。我希望它在 RDP 断开模式下工作,因此使用 pywinauto 的 send_message api。 我的代码

from pywinauto import win32defines
app = Application().connect(path = pathToAppEXE)
lvitem = win32structures.LVITEMW()
lvitem.mask = win32defines.LVIF_STATE
lvitem.state = 1
lvitem.stateMask = win32defines.LVIS_SELECTED
app.window_(title_re = "Net Position.*").ListView.send_message(win32defines.LVM_SETITEMSTATE,-1,lvitem)

它什么都不做。也许我没有正确获得 lvm 标志。需要帮助来修复代码。

【问题讨论】:

  • 已经看完了远程执行指南。这本身很清楚,因为我尝试使用低级方法,而不管我是否已经阅读了远程执行指南。

标签: python python-3.x winapi win32com pywinauto


【解决方案1】:

方法.get_item(...)(参见docs)应该返回带有一些可用方法的_listview_item对象:其中一些不涉及真正的点击。

也许Remote Execution Guide 也有用。

【讨论】:

  • 我已经阅读了远程执行指南,并明确表示我正在尝试解决 RDP。我不认为你的答案是相关的。我已经强调了我试图将 send_message 用于列表视图并且它不起作用的问题。这就是我正在寻找的解决方案。
  • 您是否点击了此链接? support.smartbear.com/testcomplete/docs/testing-with/running/… 在远程执行指南中。其他人告诉我它正在工作。因此,在这种情况下,您不必使用 send_message 或其他解决方法。
  • 同样_listview_item对象在内部使用send_message。我想避免编写已经用 pywinauto 编写的低级代码。答案是相关的,但您需要努力研究提到的 API。
  • 别介意。已经阅读了远程执行指南。这本身很清楚,因为我正在尝试使用低级方法,而不管我是否已经通过远程执行指南。另外请从我的角度理解问题。问题是 pywinauto 中的某些方法使用低级代码,而有些则不使用。例如,按钮单击在 RDP 中不起作用,因此我使用 send_message 单击按钮。所以我想在我的代码中保持一致性,要么在任何地方使用 send_message,要么在下一个版本默认情况下为所有操作添加对低级代码的支持。
猜你喜欢
  • 2012-04-03
  • 2015-04-09
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 2021-03-19
  • 2017-05-10
相关资源
最近更新 更多