如何获取WPS窗口的真实句柄

使用问题 · 842 次浏览
臭冬瓜 创建于 2023-02-02 10:05

  我想对窗口进行调整位置或大小的操作,如果当使用当前窗口进行操作时没有问题,但如果是采用选择一个窗口,而这时选择的是一个WPS窗口,获取的句柄好像并不是真实的WPS窗口,而是一个虚框,感觉WPS有两个窗口叠加。(如图)

  我通过选择窗口的方式,选择WPS窗口获得句柄并调整窗口位置,结果的确有一个窗口调整位置,但不是WPS有文字的窗口,而是一个虚框,第二次再次选择时就可以了,而且使用这个虚框句柄一样可以调整虚框的位置和大小。


回复内容
CL 2023-02-02 10:15
#1

WPS是一个比较特殊的程序,它的窗口套窗口,而且属于不同的进程。试试获得它的根窗口句柄,用根窗口句柄控制。


臭冬瓜 2023-02-02 10:17
#2

我所有的都试过了,包括父窗口、根窗口都不行,才发帖求助,现在一点思路没有

CL 回复 臭冬瓜 2023-02-02 10:32 :

VisualStudio带一个Spy++可以查看窗口结构。 你可以试试,如果没有安装VisaualStudio,可以用这个我单独复制出来的Tools目录。用里面的spyxx_amd64.exe

链接:https://pan.baidu.com/s/1Isi42C9pQmRXeVU87jbxbw?pwd=6666 提取码: 6666 复制这段内容后打开百度网盘手机App,操作更方便哦 



CL 最后更新于 2023-02-02 10:33
臭冬瓜 回复 CL 2023-02-02 15:07 :

谢谢。我刚开始没有看到你的这个工具,用了笨办法:读取所有WPS的可见窗口,逐个分析。发现WPS每个打开窗口都应该附带一个 KPromeMainWindowShadowBorder类名的窗口,应该是显示阴影的,但是如何关联的不太清楚。另外WPS文档窗口可能至少分3级,文档编辑窗口,文档窗口,还是一个OpusApp类名的窗口(这个应该是根窗口)。我现在用隐藏阴影窗口的方法解决了选择窗口的问题,但是获得的窗口句柄还是不准确,我又尝试了循环读取WPS的OpusApp类名+标题重新获取,但是偶尔还会有问题:( 最奇怪的是直接使用当前窗口进行操作一点问题都没有,就是选择窗口问题多多

PS:WPS的确是个怪胎,工具很好用(不过还需要学习,现在学习的成本太高了)

臭冬瓜 最后更新于 2023-02-02 15:14
臭冬瓜 回复 臭冬瓜 2023-02-02 18:20 :

后面的问题好像是将窗口改为前台引起的,我增加了延时,目前没有再发现操作窗口不准确的问题了。

回复主贴