Почему остановка моей цепочки дает мне «попытку инициализировать CRT более одного раза?» - PullRequest
0 голосов
/ 13 июня 2019

Я экспериментирую с pythoncom и pyhook, чтобы отключить пользовательскую мышь, пока моя программа с ней что-то делает. Затем верните управление пользователю.

Когда я запускаю это:

import pythoncom, pyHook, time, threading, win32api, win32con

def click(x, y):
    win32api.SetCursorPos((x, y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
    time.sleep(0.2)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)

class record(object):
    def OnMouseEvent(self, event):
        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 '---'
        # returning false makes windows ignore the event
        # to block the user mouse just return false for injected = 0 and true for injected = 1
        return True 

class MouseEventPumper(threading.Thread):
    def run(self):
        recordit = record()
        hm = pyHook.HookManager()
        hm.MouseAll = recordit.OnMouseEvent
        hm.HookMouse()
        self.pumpIt = True
        while self.pumpIt:
            pythoncom.PumpWaitingMessages()
        print "thread terminated"

    def stop(self):
        self.pumpIt = False

if __name__ == '__main__':
    thread = MouseEventPumper(name = "Mouse event pumper")
    thread.start()
    # in my real program here I will do a lot of things, the purpose is to block the user
    # mouse while I use win32api to control the mouse then once I'm done I'm giving back control to the user
    click(50, 50)
    time.sleep(3)
    print "Stopping mouse event pumper"
    thread.stop()
    print "stopped"

В конце я получаю

runtime error R6031
- Attempt to initialize the CRT more than once.
This indicates a bug in your application.

Я не уверен, но я думаю, что это проблема в библиотеке. Что ты думаешь?

Спасибо.

Python 2.7 x64 в Windows 10

...