我已经为一个为Linux编写的python2.7项目工作了一段时间,以添加Windows对它的支持。我正试图找出如何让按下键盘和鼠标移动、被按下或被释放的事件。我安装了win32api和pyHook,但是我不知道如何正确地安装它。请注意,我希望它不管在哪里都能得到事件,而不仅仅是在命令提示符下按下它的时候。以下是在linux中执行此操作的方法:def handle_event(self):
""" This function is called when a xlib event is fired """
data = reply.data
while len(data):
event, data = rq.EventField(None).parse_binary_value(data, self._display.display, None, None)
if event.type == X.MotionNotify:
if self._mouse_last_x != None:
mouse_distance=math.sqrt((event.root_x-self._mouse_last_x)**2+(event.root_y-self._mouse_last_y)**2)
self.send_event(('mouse_moved',mouse_distance))
self._mouse_last_x,self._mouse_last_y = event.root_x,event.root_y
if event.type == X.ButtonPress:
print event.sequence_number,event._data,event._fields
self.send_event(('button_down',event._data['detail']))
elif event.type == X.ButtonRelease:
print event.sequence_number,event._data,event._fields
self.send_event(('button_up',event._data['detail']))
elif event.type == X.KeyPress and event.sequence_number == 0:
key = event.detail
self.send_event(('keys_pressed',key,1))
def run(self):
self.disable_keyboard_interrupt()
root = self._display.screen().root
ctx = self._display.record_create_context(
0,
[record.AllClients],
[{
'core_requests': (0, 0),
'core_replies': (0, 0),
'ext_requests': (0, 0, 0, 0),
'ext_replies': (0, 0, 0, 0),
'delivered_events': (0, 0),
'device_events': (X.KeyReleaseMask, X.PointerMotionMask),
'errors': (0, 0),
'client_started': False,
'client_died': False,
}])
self._display.record_enable_context(ctx, self.handle_event)
我只是不知道怎么才能在Windows和任何库中使用它。在