• 游戏专用....


    游戏专用:星际战甲
    APP窗口以及键鼠监控

    import tkinter as tk
    import time,threading
    from pynput.keyboard import Key,Listener
    import pynput.keyboard as kb
    
    class myClass:
        def __init__(self):
            self.root = tk.Tk()
            self.new_text = ''
            self.flag = threading.Event()
            self.th = 0
            self.mykey = kb.Controller()
            self.delete = kb.Key.delete
    
        def createWin(self):
            self.root.title("我的窗口")
            self.root.geometry("300x200")  
            result_text = tk.Text(self.root, height=10, width=50) 
            result_text.pack()  
            start_button = tk.Button(self.root, text="case 1", command=self.case1) 
            start_button.pack()  
            self.root.mainloop()
            
        def case1(self):
            self.winCase1 = tk.Toplevel(self.root) 
            self.winCase1.title("caseA")
            self.new_text = tk.Text(self.winCase1, height=50, width=50)  
            self.new_text.grid(row=0, column=0,rowspan=50,padx=50, pady=0)
            start_button = tk.Button(self.winCase1, text='garuda', command=self.start_garuda)
            start_button.grid(row=0, column=0, sticky=tk.W)
            start_button = tk.Button(self.winCase1, text='nekros', command=self.start_nekros)
            start_button.grid(row=1, column=0, sticky=tk.W)
    
        def wlog(self,msg):
        	#输出消息到文本框
            self.new_text.insert('end', msg+"\n")
            self.new_text.yview('end')        
        def on_release(self,key):
            pass
        # garuda
        def start_garuda(self):
            t = threading.Thread(target=self.run_garuda)
            t.start()
            self.new_text.delete(1.0, tk.END)
            msg = "= 开始模拟输入 \n- 停止模拟输入 \ndelete 退出键盘监控"
            self.wlog(msg)
        def run_garuda(self):
            self.run_garuda_ctl()
        def garuda_press(self,key):
            try:
                key = key.char
            except AttributeError:
                key = key
            if key == Key.delete:
                self.wlog("停止监听")
                self.flag.set()
                self.th = 0
                return False
            elif key == '=':
                self.flag.clear()   #先清除flag状态,重置为False
                if self.th == 0:
                    self.wlog("开始模拟键盘输入")
                    t = threading.Thread(target=self.garuda_keyCtr)
                    t.start()
                    self.th = 1
            elif key == '-':
                self.flag.set()
                self.th = 0
                self.wlog("pause...")
            else:
                self.wlog("模拟按下了{}".format(key))
        def garuda_keyCtr(self):
            mykey = self.mykey
            while True:
                for i in range(0,30):
                    if self.flag.is_set():       #假如 flag.set()设置了,状态为True
                        break
                    mykey.press('1')        #按下 1 键
                    mykey.release('1')      #松开 1 键
                    time.sleep(0.5)
                if self.flag.is_set():
                    break
                else:
                    mykey.press('3')
                    mykey.release('3')
                    time.sleep(1)
                for j in range(0,2):
                    if self.flag.is_set():
                        break
                    mykey.press('1')
                    mykey.release('1')
                    time.sleep(1)
                    mykey.press('5')
                    mykey.release('5')
                    time.sleep(1)   
        def run_garuda_ctl(self):
            self.mykey.press(self.delete)
            self.mykey.release(self.delete)
            with Listener(on_press=self.garuda_press,on_release=self.on_release) as listener:
                listener.join()
        # garuda
        # nekros
        def start_nekros(self):
            t = threading.Thread(target=self.run_nekros)
            t.start()
            self.new_text.delete(1.0, tk.END)
            msg = "= 开始模拟输入 \n- 停止模拟输入 \ndelete 退出键盘监控"
            self.wlog(msg)
        def run_nekros(self):
            self.run_nekros_ctl()
        def nekros_press(self,key):
            try:
                key = key.char
            except AttributeError:
                key = key
            if key == Key.delete:
                self.wlog("停止监听")
                self.flag.set()
                self.th = 0
                return False
            elif key == '=':
                self.flag.clear()   #先清除flag状态,重置为False
                if self.th == 0:
                    self.wlog("开始模拟键盘输入")
                    t = threading.Thread(target=self.nekros_keyCtr)
                    t.start()
                    self.th = 1
            elif key == '-':
                self.flag.set()
                self.th = 0
                self.wlog("pause...")
            else:
                self.wlog("模拟按下了{}".format(key))        
        def nekros_keyCtr(self):
            mykey = self.mykey
            while True:
                for i in range(0,10):
                    if self.flag.is_set():       #假如 flag.set()设置了,状态为True
                        break
                    mykey.press('1')        #按下 1 键
                    mykey.release('1')      #松开 1 键
                    time.sleep(4)
                if self.flag.is_set():
                    break
                else:
                    mykey.press('4')
                    mykey.release('4')
                    time.sleep(5) 
        def run_nekros_ctl(self):
            self.mykey.press(self.delete)
            self.mykey.release(self.delete)
            with Listener(on_press=self.nekros_press,on_release=self.on_release) as listener:
                listener.join()
    if __name__ == "__main__":
        mycase = myClass()
        mycase.createWin()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
  • 相关阅读:
    基于udp实现回显服务器,翻译服务器
    C#引用Microsoft.Office.Interop.Excel
    基于Vue+node的图书馆座位预约选座管理系统
    JVM 线上排查命令
    低成本简易信号幅值调节/信号叠加电路
    JAVA:实现Permutation排列算法(附完整源码)
    【AI开发:音频】二、GPT-SoVITS使用方法和过程中出现的问题(GPU版)
    OpenCV每日函数 图像过滤模块 (10) getGaborKernel计算Gabor 滤波器函数
    【目标检测】SSD损失函数详解
    JVM虚拟机(整体架构、类文件结构)我来了~~~
  • 原文地址:https://blog.csdn.net/weixin_44517278/article/details/134136278