#python #winapi
#python #winapi
Вопрос:
В следующем коде, когда я нажимаю return , on_key_down вызывается дважды. Он вызывается только один раз для любого другого ключа. Есть идеи, что здесь происходит?
import pyHook, pythoncom, win32api
def on_key_down(e):
if e.MessageName == 'key down':
print 'e.Key: ', e.Key
print 'e.Ascii: ', e.Ascii
return True
hm = pyHook.HookManager()
hm.KeyDown = on_key_down
hm.HookKeyboard()
pythoncom.PumpMessages()
Ответ №1:
Поскольку новой строкой окна является ‘ r n’, вы, вероятно, получаете оба этих символа при нажатии return.
Комментарии:
1. Нет, я не думаю, что это все. Я отредактировал свой код, чтобы напечатать значение ascii, и оба раза оно равно 13, что является кодом для r .
2. Интересно. Рассматривали ли вы возможность написания C и взаимодействия напрямую с winapi, чтобы посмотреть, как это работает?
3. Эх … прошло несколько лет с тех пор, как я написал какой-либо C. Было бы непросто настроить. Я думаю, что пока я просто обойду проблему.
Ответ №2:
Если вы можете, попробуйте использовать KeyUp вместо KeyDown. Я получаю только одно событие с KeyUp.