如何解决sendmessage 返回 memoryview .. 如何获取整数值?
这是有效的,问题是输出
tempvar1 = win32gui.PyMakeBuffer(25)
LB_GETSELITEMS = 0x191
temp = win32api.SendMessage(tcwinhwnd,LB_GETSELITEMS,6,tempvar1) # Listbox,get Window-Line-index of 6 selected items
result = tuple(tempvar1)
print(result)
我得到的是:
(28,29,30,31,32,33,0)
如何直接访问该 int(28、29 等)?
解决方法
SendMessage
函数用 32 位整数(小端)的单个字节填充缓冲区。您可以通过移位和 ORing 将各个字节组合成一个整数数组:
result = [tempvar1[i] | (tempvar1[i+1]<<8) | (tempvar1[i+2]<<16) | (tempvar1[i+3]<<24) for i in range(0,len(tempvar1)-1,4)]
或者更简洁:
result = [int.from_bytes(tempvar1[i:i+4],byteorder='little') for i in range(0,4)]
这会产生:
[28,29,30,31,32,33]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。