Мне известно, что не все окна обрабатывают ввод с клавиатуры. Однако ОДНО из окон моего дерева Notepad ++ должно влиять на редактор, то есть написать «А», которое я пытаюсь отправить. Я перепробовал все дочерние окна, но ничего не работает:
def mycallback(hwnd, data):
data[hwnd] = win32gui.GetClassName(hwnd)
win32gui.EnumChildWindows(hwnd, mycallback, data)
return True
mywindows = {}
win32gui.EnumChildWindows(197788, mycallback, mywindows) # 197788 is the notepad++ handle whose parent is 0
# at this point, mywindows contains: {'#32770': 66908, 'Button': 66922, 'Static': 66924, 'SysTabControl32': 132272, 'Scintilla': 132276, 'splitterContainer': 263444, 'wespliter': 328982, 'msctls_statusbar32': 394476, 'dockingManager': 394474, 'wedockspliter': 132328, 'nsdockspliter': 132336, 'ReBarWindow32': 66906, 'ToolbarWindow32': 66902, 'Edit': 66914}
for v in mywindows.values():
win32api.SendMessage(v, win32con.WM_CHAR, 0x41, 0) # trying to send an 'A' to notepad++ without knowing to which window I need to send it to. I had already noticed before that sending the 'A' to the "Edit" window doesn't work (the EXACT same win32api.SendMessage command works for the "Edit" window of the Microsoft-Windows-notepad-editor by the way)
# the return values of this loop are: 0,0,0,0,0,0,0,0,0,0,0,0,0,1
Только окно «Edit» возвращает 1. И 1 означает ошибку, поэтому я предполагаю, что «Edit» - это правильное окно для цели, но почемуэто возвращает ошибку?
И, кстати: окно «Редактировать» в редакторе Microsoft-Windows-notepad-editor также возвращает 1, но выводит «A» в редактор.