import pywinauto
from pywinauto import taskbar
explorer = pywinauto.application.Application.connect(path = "explorer.exe")
pywinauto.controls.HwndWrapper.HwndWrapper(pywinauto.taskbar.TaskBarHandle()).RightClick()
explorer.PopupMenu.Menu().GetMenuPath("Show windows side by side")[0].Click()
for i in range (0, len(initlist)):
orderlist.append([initlist[i], pywinauto.controls.HwndWrapper.HwndWrapper(initlist[i]).Texts(), pywinauto.controls.HwndWrapper.HwndWrapper(initlist[i])])
poslist.append(pywinauto.controls.HwndWrapper.HwndWrapper(initlist[i]).Rectangle())
试试看
来源:https://github.com/atinfo/awesome-test-automation
好吧,各位,我用的是pywinauto,在四处搜寻之后,我找到了答案。对于每个人来说,这不是一个完美的模板,但是我将解释我的思维过程和一些片段。我尽我所能从各个角度去订窗户。但是我忽略了一个细节:你需要它们的顺序与它们在图形上的顺序完全不一致。我建议您对两个数组进行排序,一个基于您想要它们的顺序(即按标题、文本或类),另一个基于所有位置的顺序。不管怎么说,按密码
以下是如何与任务栏交互以设置所有窗口:
可能是一种更干净的方法,但这对我有效。在
接下来,收集您关心的窗口:
^{pr2}$这只会找到所有的窗口。您可以缩小您想要的范围,在文档中有更多的内容,但side-by-side并不是一开始就具有排他性的。在
我在这里列出了两个不同属性的列表,一个是带有程序句柄和程序标题的数组列表,另一个是基于当前实例窗口的坐标列表:
现在,我发现用图形表示它们的最好方法是在行之前遍历列。有些人可能不同意,但Windows并不总是拥有与我所看到的完全相同的行数。因此,我们需要对第一个列表进行排序:
按标题索引排序。然后我们对第二个列表进行排序:
注意我是如何加权x.left的。我们实际上没有二维数组或网格要排序,所以我对左边进行加权,因为下一列中的任何内容都在列表的下方。在
最后,我们再次遍历列表以交换窗口:
这将把orderlist坐标中的所有窗口设置为我们想要的所有窗口的排序坐标。作为额外的奖励,对于那些不均匀的窗口,它将调整它们的大小,使它们在视觉上与并排一样。在
希望这是清楚的,并帮助某人在未来。在
相关问题 更多 >
编程相关推荐