扫码关注官方订阅号
是这样的,我打算做一个可以自动粘贴到聊天窗口并用鼠标点击发送的小脚本然而这个脚本运行起来就只能等到运行完才可以停下我想问的是如何可以设置一个快捷键(比如F12)按下F12就可以停止这个脚本
设一个全局标志stop,按下F12将其置为true。每次循环都检查stop是否为true,若是则break
使用多线程防止阻塞
已经解决了!
# _*_ coding:UTF-8 _*_ import win32api import win32con import win32gui from ctypes import * import time import msvcrt import threading from time import sleep import sys import ctypes.wintypes EXIT = False def mouse_click(x=None,y=None): if not x is None and not y is None: mouse_move(x,y) time.sleep(0.05) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) def mouse_move(x,y): windll.user32.SetCursorPos(x, y) class Hotkey(threading.Thread): #创建一个Thread.threading的扩展类 def run(self): global EXIT #定义全局变量,这个可以在不同线程见共用。 user32 = ctypes.windll.user32 #加载user32.dll if not user32.RegisterHotKey(None, 99, win32con.MOD_ALT, win32con.VK_F3): # 注册快捷键 alt + f3 并判断是否成功。 raise # 返回一个错误信息 #以下为判断快捷键冲突,释放快捷键 try: msg = ctypes.wintypes.MSG() #print msg while user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0: if msg.message == win32con.WM_HOTKEY: if msg.wParam == 99: EXIT = True return user32.TranslateMessage(ctypes.byref(msg)) user32.DispatchMessageA(ctypes.byref(msg)) finally: user32.UnregisterHotKey(None, 1) if __name__ == "__main__": hotkey = Hotkey() hotkey.start() for event in range(1,30): mouse_click(1150,665) win32api.keybd_event(17,0,0,0) win32api.keybd_event(86,0,0,0) win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) mouse_click(1272,669) if EXIT: sys.exit()
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
设一个全局标志stop,按下F12将其置为true。每次循环都检查stop是否为true,若是则break
使用多线程防止阻塞
已经解决了!