wuqingqing123456 2022-03-13 01:26 采纳率: 0%
浏览 875

用win32gui.FindWindow方法时一直报pywintypes.error: (1400, 'GetClientRect', '无效的窗口句柄。')

本人通过spy++已经找到了某客户端保存文件时调起的保存窗口的标题和类名,但是用python去调win32gui.FindWindow方法时一直报pywintypes.error: (1400, 'GetClientRect', '无效的窗口句柄。'),导致无法识别到窗体,无法进行自动化操作,请问这可能是什么原因呢?

问题相关代码,请勿粘贴截图

以下是本人代码:

import pyperclip
import pyautogui
import win32con
import win32gui
import os
win = win32gui.FindWindow('OPContainerClass',u'Output Painter Window')
# win = win32gui.FindWindow('WeChatMainWndForPC',u'微信')
#窗口返回值是十进制,如果要跟spy++核对,最好转换成16进制
left,top,right,bottom=win32gui.GetClientRect(win)
win32gui.SetForegroundWindow(win)
win32gui.ShowWindow(win, win32con.SW_MAXIMIZE)
handle=win32gui.FindWindowEx(win,None,'Edit',None)
print(left,top,right,bottom)

运行结果及报错内容

Traceback (most recent call last):
  File "D:/Working/三一重工/自动化/北京物流平台/win.py", line 29, in <module>
    left,top,right,bottom=win32gui.GetClientRect(win)
pywintypes.error: (1400, 'GetClientRect', '无效的窗口句柄。')

我的解答思路和尝试过的方法

我尝试将向日葵和微信窗体的标题和类名放到代码中识别,都是可以正常识别和运行的,但是换这个客户端就不行,请高人指点一二,感激不尽!!

我想要达到的结果
  • 写回答

3条回答 默认 最新

  • ajdbjxkw 2023-09-11 15:40
    关注

    在我的尝试中,虽然不明白具体原因但是对于一些软件窗口似乎需要找到其最终的父窗口才行例如对雷电模拟器进行操作

    img

    其中下面两个在突出显示时都会显示雷电的窗口,但是用其类名会产生和你相同的 报错,而使用spy也只会搜索到这两个窗口。所以需要返回寻找其父窗口才可以正常运行。在此处其最上边的窗口类名不会产生报错

    评论

报告相同问题?

问题事件

  • 创建了问题 3月13日

悬赏问题

  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求
  • ¥15 visa版本没问题,串口调试助手调试串口正常使用,但是labview刷新不出来
  • ¥15 java MQTT SSL证书
  • ¥20 求一个手机号或者Wxid转微信号的工具
  • ¥20 msconfig开启安全引导后重启电脑黑屏
  • ¥15 对email表单做了一般邮箱正则校验,现在需要额外输入为hotmail或outlook、gmail时做特定邮箱校验,不符合提示出来。并且保证不影响其他正确的邮箱格式通过校验,通过不会提示。
  • ¥20 Win11,bitblocker密钥恢复失败
  • ¥15 stm32 cubemx配置sdram,初始化后无法读写sdram
  • ¥100 上位机到dtu再到485继电器模块 目前结束命令有百分之2左右概率执行失败求指导
  • ¥15 ifcopenshell库在vs2019下的配置