0
import time
import win32gui
import win32con
while True:
time.sleep(1)
buf = win32gui.PyMakeBuffer(255)
window = win32gui.GetForegroundWindow()
title = win32gui.GetWindowText(window)
control = win32gui.FindWindowEx(window, 0, 'Edit', None)
length = win32gui.SendMessage(control, win32con.WM_GETTEXT, 255, buf)
result = buf[:length]
print('Title: ', win32gui.GetWindowText(window))
print(str(buf[:length*2], "UTF_8")
爲什麼它返回用空值分隔的字符串?當我剛剛buff[:length]
試過我有我的字符串的一半,因爲是空值WM_GETTEXT返回用空值分隔的文本
bytearray(b'H\x00e\x00l\x00l\x00o\x00 \x00w\x00o\x00r\x00l\x00d\x00!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x9dL\x03E\x888P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xedL\x03\xa9\xc4\xffb\xa0\tO\x00j\x8c\x1bZ\xa04\xc6\x02IP\x12\x8d\x00\x00\x00\x00\x00\x00\x00\x00\xa0X?\x03\xed`\x05\x89\xa0n\xfb\x02.\x02\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0*X\x00\xf4b\x9c\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x8d\x02\x98?n\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xcc\x02\xbey\xee\x08\x00\x00\x00\x00\x00\x00\x00')
編輯:
result = buf.tobytes()[:length*2:2]
print(result.decode("UTF-8"))
中的代碼的工作,因爲我想,但我不知道它已被寫入正確
使用你的代碼中,我得到了以下錯誤'AttributeError的:「memoryview」對象有沒有屬性「decode'' 編輯: 我用buf.tobytes()解碼(‘UTF-16’)和它的工作原理 – Mat
我正在使用python 3.我懷疑你是在Python 2.很高興爲你工作。 – selbie