0

これは、チャット ウィンドウに自動的に貼り付けられた缶を実行し、マウスをクリックして小さなスクリプトを送信するつもりです。

ただし、このスクリプトは、実行が停止するまでしか実行できません。

私の質問は、スクリプトを停止するために F12 を押すことができるショートカット キー ( F12 など) を設定する方法です。

スクリプト コードは次のとおりです。

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

手を貸してください!

4

1 に答える 1

2

私はこの問題を解決することができました。私の作業コードは次のとおりです。

# _*_ 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()
于 2016-03-29T01:17:02.963 に答える