Доброго времени суток.
Подскажите, в чем может быть проблема, имеется вот такой код на Python:
import time
from ctypes import *
from win32con import *
from ctypes.wintypes import HWND, DWORD
from win32gui import GetForegroundWindow, SendMessage
from win32process import GetWindowThreadProcessId
GetGUIThreadInfo = windll.user32.GetGUIThreadInfo
class RECT(Structure):
_fields_ = [("left", c_ulong),
("top", c_ulong),
("right", c_ulong),
("bottom", c_ulong)]
class GUITHREADINFO(Structure):
_fields_ = [("cbSize", DWORD),
("flags", DWORD),
("hwndActive", HWND),
("hwndFocus", HWND),
("hwndCapture", HWND),
("hwndMenuOwner", HWND),
("hwndMoveSize", HWND),
("hwndCaret", HWND),
("rcCaret", RECT)]
time.sleep(5)
PID = GetWindowThreadProcessId(GetForegroundWindow())
lpgui = GUITHREADINFO()
lpgui.cbSize = sizeof(GUITHREADINFO)
GetGUIThreadInfo(PID[0], pointer(lpgui))
textMaxSize = 32
text = create_string_buffer(textMaxSize)
SendMessage(lpgui.hwndFocus, WM_GETTEXT, textMaxSize, text)
print(text.value)
при его запуске на Python 2.7 x32 и активации, например, кона блокнота с текстом 'Hellow(Привет)' в буфере корректный текст, при запуске на Python 3.6 x64 строка корежится, получаю вот такое b'H', в text.raw записывается вот такое значение bytes: b'H\x00e\x00l\x00l\x00o\x00w\x00(\x00\x1f\x04@\x048\x042\x045\x04B\x04)\x00\x00\x00\x00\x00' при этом корректно сконвертировать это набор байтов никак не получается. Помогите разобраться.