Python: почему происходит перезапуск кенела, когда pyhook вызывается в записной книжке Anaconda3 Jupyter - PullRequest
0 голосов
/ 05 июля 2019

У меня win10, я установил pywin32 и установил pyhook в моей среде anaconda3.

Моя цель - записывать действия пользователей мыши и клавиатуры. Поэтому у меня есть pyhookWrap.py и тестовые коды следующим образом. Когда запускаются тестовые коды, я всегда получаю сообщение о перезапуске ядра, особенно когда быстро двигаю мышь. Кто-нибудь может дать мне подсказку, как избежать сообщения перезагрузки ядра?

На самом деле я использовал pyhk.py для замены pyhookWrap.py, но у меня появилось то же раздражающее сообщение. Я приложил pyhookWrap.py и тестовые коды ниже.

/ 1. сообщение примечание изображение / enter image description here

/ 2 / pyhookWrap.py

#!/usr/bin/python
import pyHook, pythoncom 


class pyhookWrap:
    """Hotkey class extending pyhook"""

    def __init__(self):           
        # create a hook manager
        self.hm = pyHook.HookManager()
        # watch for all keyboard events
        self.hm.KeyDown = self.OnKeyDown
        # watch for all mouse events
        self.hm.MouseAllButtonsDown = self.OnKeyDown

        # set the hook
        self.hm.HookKeyboard()
        self.hm.HookMouse()
    def start(self):
        """Start pyhk to check for hotkeys"""
        pythoncom.PumpMessages()

    # -----------------------------------------------------
    # print mouse event, added by sjj

    def printMouseEvent(self,event):
        # called when mouse events are received
        print('MessageName:',event.MessageName)
        print('Message:',event.Message)
        print('Time:',event.Time)
        print('Window:',event.Window)
        print('WindowName:',event.WindowName)
        print('Position:',event.Position)
        print('Wheel:',event.Wheel)
        print('Injected:',event.Injected)
        print('---')

    def printKeyboardEvent(self,event):
        print('MessageName:',event.MessageName)
        print('Message:',event.Message)
        print('Time:',event.Time)
        print('Window:',event.Window)
        print('WindowName:',event.WindowName)
        print('Ascii:', event.Ascii, chr(event.Ascii))
        print('Key:', event.Key)
        print('KeyID:', event.KeyID)
        print('ScanCode:', event.ScanCode)
        print('Extended:', event.Extended)
        print('Injected:', event.Injected)
        print('Alt', event.Alt)
        print('Transition', event.Transition)
        print ('---')


    def OnKeyDown(self, event):
        if not "mouse" in event.MessageName:
            self.printKeyboardEvent(event)            
        else:
            self.printMouseEvent(event)  

        return True

/ 3 / Тестовые коды для pyhookWrap:

import pyhookWrap

hot = pyhookWrap.pyhookWrap()

# start looking for hotkey.
hot.start()
...