Отправка ввода с клавиатуры на Notepad ++ через Windows API в Python - PullRequest
0 голосов
/ 04 октября 2019

Мне известно, что не все окна обрабатывают ввод с клавиатуры. Однако ОДНО из окон моего дерева 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» в редактор.

...