繁体   English   中英

Python:如何在键盘事件上进行True循环时启动/停止

[英]Python: How to start/stop while True loop on Keyboard event

我正在尝试编写一个模拟鼠标单击的小脚本。 它应该在键盘上按下组合键时启动/停止,所以我想每次按下这个组合时,我会生成或终止只包含一个True循环的子进程并进行一些点击。 现在我可以开始循环,但不要终止。 我尝试为HookManager创建一个新进程,但我得到了相同的结果。 任何帮助都将非常感激

import time
import win32api
import win32con
import pythoncom
import pyHook
import multiprocessing

i=0

def click():    
    while True:        
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
        time.sleep(0.005)


def OnKeyboardEvent(event):
    global i

    if (event.Ascii == 4) and (i == 0):
        i = 1
        c = multiprocessing.Process(target=click())
        c.start()
        print("started")

    elif (event.Ascii == 4) and (i == 1):
        i = 0
        c.terminate()
        print("terminated")

    return True


hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()       
pythoncom.PumpMessages()

显然你不想使用while True:语句,但是这样的事情:

def worker():
  while running:
    #do the work
    ...

def terminateWorker():
  running = false
  ...

running = true
startWorker()
terminateWorker()

或者你可以使用break in if语句检查循环停止标志。

def click():    
  while True:
    if(stopNow):break
    ...      

stopNow=false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM