2016-03-29 8 views
-1

Das ist, ich habe vor, eine Dose automatisch in das Chat-Fenster einfügen und klicken Sie mit der Maus, um ein kleines Skript zu senden.Wie Sie die Verwendung von Python-Skript beenden Pyhook verwenden Tastenkombinationen?

Dieses Skript kann jedoch nur so lange ausgeführt werden, bis das Ausführen beendet werden kann.

Meine Frage ist, wie Sie eine Tastenkombination (wie F12) einstellen können Sie F12 drücken, um das Skript zu stoppen.

Script-Code ist wie folgt:

# _*_ coding:UTF-8 _*_ 
import win32api 
import win32con 
import win32gui 
from ctypes import * 
import time 
import msvcrt 
import threading 
from time import sleep 

stop = 2 
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) 

def baozou(): 
    global stop 
for event in range(1,50): 
    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) 
    time.sleep(0.1) 
    if stop == 1: 
     sys.exit() 

def Break(): 
    global stop 
    if ord(msvcrt.getch()) == 123: 
     stop = 1 

if __name__ == "__main__": 
    t = threading.Thread(target = baozou) 
    f = threading.Thread(target = Break) 
    t.start() 
    f.start() 

bitte geben Sie mir eine Hand!

Antwort

1

Ich habe dieses Problem gelöst, verwaltet und meine Arbeits Code ist dies:

# _*_ 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() 
      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()