太难了,终于解决 PyMakeBuffer is deprecated,use PyGetMemory instead

# 得到Edit编辑框中的文本
def get_edit_text(hEdit):
    # 获取识别结果中输入框文本
    length = win32gui.SendMessage(hEdit, win32con.WM_GETTEXTLENGTH) + 1
    
    buf = win32gui.PyMakeBuffer(length) # PyMakeBuffer python会报警,要用PyGetMemory替代
    
    #发送获取文本请求
    win32api.SendMessage(hEdit, win32con.WM_GETTEXT, length, buf)
    #下面应该是将内存读取文本
    address, length = win32gui.PyGetBufferAddressAndLen(buf[:-1])
    text = win32gui.PyGetString(address, length)
    return text

报警如下,看不懂,就是让用PyGetMemory 替代 PyMakeBuffer 。
PendingDeprecationWarning: PyMakeBuffer is deprecated; use PyGetMemory instead
不知道是不是这原因,我的ipython还终止响应退出了

PyGetMemory 的资料网上找了2天没找到,难死我这个编程小白了

试来试去,终于成了

# 得到Edit编辑框中的文本
def get_edit_text(hEdit):
    # 获取识别结果中输入框文本
    length = win32gui.SendMessage(hEdit, win32con.WM_GETTEXTLENGTH) + 1
    
    sss = '0' * length # 以创建字符的方式,创建内存空间
    lParma = id(sss) # 字符串的内存地址
    buf = win32gui.PyGetMemory(lParma, length)
    
    #发送获取文本请求
    win32api.SendMessage(hEdit, win32con.WM_GETTEXT, length, buf)
    #下面应该是将内存读取文本
    address, length = win32gui.PyGetBufferAddressAndLen(buf[:-1])
    text = win32gui.PyGetString(address, length)
    return text

我太难了。
不行,ipython还是终止运行。内存操作不当?

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值