Я использую teamplayer, что позволяет подключать больше мышей к вашему компьютеру, которые будут использоваться одновременно. Я также использую pyHook для захвата событий мыши, с помощью следующего кода:teamplayer и pyhook взаимодействуют странно
import pyHook
import pythoncom
def onclick(event):
# called when mouse events are received
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'WindowName:',event.WindowName
print 'Position:',event.Position
print '---'
return True
hm = pyHook.HookManager()
hm.MouseLeftDown = onclick
hm.MouseLeftUp = onclick
hm.HookMouse()
pythoncom.PumpMessages()
код прекрасно работает без TeamPlayer - он обнаруживает кнопку мыши вниз и вверх точно. Если я запускаю teamplayer во время работы программы, то он продолжает работать хорошо, на этот раз точно определяя клики с обеих мышей.
Однако, если я запустить программу после запуска TeamPlayer, то каждый MouseClick становится двойной:
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
Это будет хорошо - я мог бы обнаружить щелчки с такой же меткой времени и игнорировать второй. Однако, когда я нажимаю с другой мыши, картина странно:
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (569, 306)
---
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
То есть, первое вниз событие использует координаты от последнего до события! Проблема также в том, что сначала происходит неправильное событие, что затрудняет обнаружение правильного (я не могу просто сказать «игнорировать первое событие», потому что если teamplayer выключен или подключена только одна мышь, это единственное!)
Любые идеи относительно того, почему это может происходить, и что я могу сделать, чтобы получить нормальные события мыши?