文大侠666 2015-09-08 02:13 采纳率: 0%
浏览 2642
已结题

SendMessage 无法设置ComboBox的值

最近使用python编写一个自动化测试工具,其中要自动打开文件对话框选择文件进行操作,但是使用SendMessage 发送消息填充ComboBox时填充的值无法显示 大概如下

     # 找到指定标题的对话框,暂时不用管,自己封装的
    b = SimpleWnd.get('打开', 'title')

    # 找到文件路径输入框
    h1 = b.get_child_handle_by_class('ComboBoxEx32')
    h2 = win32gui.FindWindowEx(h1, None, 'ComboBox', None)
    h3 = win32gui.FindWindowEx(h2, None, 'Edit', None)
    print h1,h2,h3  # 值都是对的

    # 填写路径,这里单步调试可以显示,直接运行不行
    # 返回值为1
    # 在其后加Sleep也不行
    win32gui.SendMessage(h3, win32con.WM_SETTEXT, 0, '111111'.encode('gbk'))

        # 这时候获取的值是对的,111111
        buf_size = win32gui.SendMessage(h3, win32con.WM_GETTEXTLENGTH, 0, 0) + 1 # 要加上截尾的字节
    str_buffer = win32gui.PyMakeBuffer(buf_size) # 生成buffer对象
    win32api.SendMessage(h3, win32con.WM_GETTEXT, buf_size, str_buffer) # 获取buffer
    str = str(str_buffer[:-1]) # 转为字符串

大神们,这是为什么,或者给个能实际运行的代码参考一下

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-09-08 03:34
    关注

    单步可以,直接运行不行,看上去是时间差的问题,你直接运行的时候,目标程序是否在响应消息等。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?