自定义pos机键盘,windows+python按键精灵

 新闻资讯2  |   2023-07-04 09:23  |  投稿人:pos机之家

网上有很多关于自定义pos机键盘,windows+python按键精灵的知识,也有很多人为大家解答关于自定义pos机键盘的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、自定义pos机键盘

自定义pos机键盘

如果每天需要重复操作,怎样做到一键重复?

使用python2.7开发按键精灵

pyHook(安装地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook)

recode.py代码如下,记录鼠标键盘的操作

运行python recode.py

#!/usr/bin/env python# -*- coding: utf-8 -*- import pythoncomimport pyHookimport timeimport threadingimport datetimeimport sysimport win32apiimport win32conimport win32guifrom ctypes import *actions=[]_stoped = Falseclass POINT(Structure): _fields_ = [("x", c_ulong),("y", c_ulong)] def get_mouse_point(): po = POINT() windll.user32.GetCursorPos(byref(po)) return int(po.x), int(po.y)def logAction(e): po = get_mouse_point() seconds = getCurSec() if len(actions)>0 and e.MessageName==\'mouse move\' and actions[-1][0] == \'mouse move\' and seconds-actions[-1][1]<0.05: actions[-1] = [e.MessageName,seconds,po[0],po[1]] else: actions.append([e.MessageName,seconds,po[0],po[1]])startLogTime = datetime.datetime.now()def getCurSec(): return (datetime.datetime.now() - startLogTime).total_seconds()def log(s): fobj.writelines(s) def onMouseEvent(event): "处理鼠标事件" #log("Current Time:%s\" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())) #log("MessageName:%s\" % str(event.MessageName)) #log("Position:%s\" % str(event.Position)) global _stoped if _stoped: return True logAction(event) return True def onKeyboardEvent(event): "处理键盘事件" #log("Current Time:%s\" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())) #log("MessageName:%s\" % str(event.MessageName)) #log("Ascii_code: %d\" % event.Ascii) #log("Ascii_char:%s\" % chr(event.Ascii)) #log("Key:%s\" % str(event.Key)) #logAction(event) global _stoped if event.KeyID == 0x2C: _stoped = True if _stoped: return True actions.append([event.MessageName,getCurSec(),event.KeyID,event.Key]) return True def start_log(): #创建hook句柄 hm = pyHook.HookManager() #监控键盘 hm.KeyDown = onKeyboardEvent hm.KeyUp = onKeyboardEvent hm.HookKeyboard() #监控鼠标 hm.MouseAll = onMouseEvent hm.HookMouse() #循环获取消息 pythoncom.PumpMessages() if __name__ == "__main__": user32 = windll.user32 hwnd = user32.GetForegroundWindow() win32gui.CloseWindow(hwnd) # 窗口最小化 t4=threading.Thread(target=start_log,args=()) t4.setDaemon(True) t4.start() print \'begin to record\' while not _stoped: time.sleep(1) print \'end to record\' #打开日志文件 file_name = "hook_log.txt" if len(sys.argv) > 1: file_name = sys.argv[1] fobj = open(file_name, \'w\') content = \'\\'.join(str(\',\'.join(str(s1) for s1 in s)) for s in actions) fobj.write(content) #关闭日志文件 fobj.close()

运行之后记录操作,当按下 PrtSc 键后停止记录,得到log文件内容如下

mouse move,2.198,479,305mouse left down,2.434,480,305mouse left up,2.546,480,305key down,3.238,84,Tkey up,3.374,84,Tkey down,3.382,72,Hkey down,3.47,73,Ikey up,3.542,72,Hkey up,3.622,73,Ikey down,3.686,83,Skey up,3.798,83,Skey down,4.19,32,Spacekey up,4.318,32,Spacekey down,4.366,73,Ikey down,4.454,83,Skey up,4.462,73,Ikey up,4.582,83,Skey down,4.67,32,Spacekey up,4.774,32,Spacekey down,4.982,84,Tkey down,5.062,69,Ekey up,5.15,84,Tkey down,5.166,83,Skey down,5.27,84,Tkey up,5.31,69,Ekey up,5.318,83,Skey up,5.398,84,Tmouse move,6.086,481,306

记录播放

python play.py

play.py代码如下

## _*_ coding:UTF-8 _*_ import win32apiimport win32conimport win32guifrom ctypes import *import timeimport sys,ctypesif sys.getdefaultencoding() != \'utf-8\': reload(sys) sys.setdefaultencoding(\'utf-8\') VK_CODE = { \'backspace\':0x08, \'tab\':0x09, \'clear\':0x0C, \'enter\':0x0D, \'shift\':0x10, \'ctrl\':0x11, \'alt\':0x12, \'pause\':0x13, \'caps_lock\':0x14, \'esc\':0x1B, \'spacebar\':0x20, \' \':0x20, \'page_up\':0x21, \'page_down\':0x22, \'end\':0x23, \'home\':0x24, \'left_arrow\':0x25, \'up_arrow\':0x26, \'right_arrow\':0x27, \'down_arrow\':0x28, \'select\':0x29, \'print\':0x2A, \'execute\':0x2B, \'print_screen\':0x2C, \'ins\':0x2D, \'del\':0x2E, \'help\':0x2F, \'0\':0x30, \'1\':0x31, \'2\':0x32, \'3\':0x33, \'4\':0x34, \'5\':0x35, \'6\':0x36, \'7\':0x37, \'8\':0x38, \'9\':0x39, \'a\':0x41, \'b\':0x42, \'c\':0x43, \'d\':0x44, \'e\':0x45, \'f\':0x46, \'g\':0x47, \'h\':0x48, \'i\':0x49, \'j\':0x4A, \'k\':0x4B, \'l\':0x4C, \'m\':0x4D, \'n\':0x4E, \'o\':0x4F, \'p\':0x50, \'q\':0x51, \'r\':0x52, \'s\':0x53, \'t\':0x54, \'u\':0x55, \'v\':0x56, \'w\':0x57, \'x\':0x58, \'y\':0x59, \'z\':0x5A, \'numpad_0\':0x60, \'numpad_1\':0x61, \'numpad_2\':0x62, \'numpad_3\':0x63, \'numpad_4\':0x64, \'numpad_5\':0x65, \'numpad_6\':0x66, \'numpad_7\':0x67, \'numpad_8\':0x68, \'numpad_9\':0x69, \'multiply_key\':0x6A, \'add_key\':0x6B, \'separator_key\':0x6C, \'subtract_key\':0x6D, \'decimal_key\':0x6E, \'divide_key\':0x6F, \'F1\':0x70, \'F2\':0x71, \'F3\':0x72, \'F4\':0x73, \'F5\':0x74, \'F6\':0x75, \'F7\':0x76, \'F8\':0x77, \'F9\':0x78, \'F10\':0x79, \'F11\':0x7A, \'F12\':0x7B, \'F13\':0x7C, \'F14\':0x7D, \'F15\':0x7E, \'F16\':0x7F, \'F17\':0x80, \'F18\':0x81, \'F19\':0x82, \'F20\':0x83, \'F21\':0x84, \'F22\':0x85, \'F23\':0x86, \'F24\':0x87, \'num_lock\':0x90, \'scroll_lock\':0x91, \'left_shift\':0xA0, \'right_shift \':0xA1, \'left_control\':0xA2, \'right_control\':0xA3, \'left_menu\':0xA4, \'right_menu\':0xA5, \'browser_back\':0xA6, \'browser_forward\':0xA7, \'browser_refresh\':0xA8, \'browser_stop\':0xA9, \'browser_search\':0xAA, \'browser_favorites\':0xAB, \'browser_start_and_home\':0xAC, \'volume_mute\':0xAD, \'volume_Down\':0xAE, \'volume_up\':0xAF, \'next_track\':0xB0, \'previous_track\':0xB1, \'stop_media\':0xB2, \'play/pause_media\':0xB3, \'start_mail\':0xB4, \'select_media\':0xB5, \'start_application_1\':0xB6, \'start_application_2\':0xB7, \'attn_key\':0xF6, \'crsel_key\':0xF7, \'exsel_key\':0xF8, \'play_key\':0xFA, \'zoom_key\':0xFB, \'clear_key\':0xFE, \'+\':0xBB, \',\':0xBC, \'-\':0xBD, \'.\':0xBE, \'/\':0xBF, \'`\':0xC0, \';\':0xBA, \'[\':0xDB, \'\\\\\':0xDC, \']\':0xDD, "\'":0xDE, \'`\':0xC0} class POINT(Structure): _fields_ = [("x", c_ulong),("y", c_ulong)] def get_mouse_point(): po = POINT() windll.user32.GetCursorPos(byref(po)) return int(po.x), int(po.y) 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)def mouse_dclick(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_LEFTDOWN, 0, 0, 0, 0) def mouse_move(x,y): windll.user32.SetCursorPos(x, y)def mouse_leftdown(x=None,y=None): if not x is None and not y is None: mouse_move(x,y) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)def mouse_leftup(x=None,y=None): if not x is None and not y is None: mouse_move(x,y) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)def mouse_rightdown(x=None,y=None): if not x is None and not y is None: mouse_move(x,y) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)def mouse_rightup(x=None,y=None): if not x is None and not y is None: mouse_move(x,y) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)def key_down(vc): win32api.keybd_event(vc,0,0,0)def key_up(vc): win32api.keybd_event(vc,0,win32con.KEYEVENTF_KEYUP,0) def key_input(str=\'\'): for c in str: win32api.keybd_event(VK_CODE[c],0,0,0) win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0) time.sleep(0.01)def setClipboard(mystr): \'\'\'把字符串放到剪切板中,成功返回1,失败返回0\'\'\' u=ctypes.WinDLL(\'user32.dll\') k=ctypes.WinDLL(\'kernel32.dll\') s=mystr.encode(\'utf-16\') s=s[2:]+b\'\\0\\0\' ss=ctypes.c_char_p(s) u.OpenClipboard(0) u.EmptyClipboard() k.GlobalAlloc.argtypes=[ctypes.c_uint32,ctypes.c_uint32] try: cb=k.GlobalAlloc(0,len(s)) cb=ctypes.c_void_p(cb) ctypes.memmove(cb,ss,len(s)) rr=u.SetClipboardData(13,cb) # 13->unicode finally: u.CloseClipboard() if rr==0: return 0 else: return 1 def key_input2(s): setClipboard(s) #ctrl + v key_down(0x11) key_down(0x56) key_up(0x56) key_up(0x11)def runActrion(actions): alen = len(actions) for i in range(alen): action = actions[i] t = action[0] if t ==\'mouse left down\': mouse_leftdown(int(action[2]),int(action[3])) elif t ==\'mouse left up\': mouse_leftup(int(action[2]),int(action[3])) elif t ==\'mouse right down\': mouse_rightdown(int(action[2]),int(action[3])) elif t ==\'mouse right up\': mouse_rightup(int(action[2]),int(action[3])) elif t ==\'key up\': key_up(int(action[2])) elif t ==\'key down\' or t ==\'key sys down\': key_down(int(action[2])) elif t==\'key input\': key_input2(action[2]) elif t ==\'mouse move\': mouse_move(int(action[2]),int(action[3])) if i < alen-1: time.sleep(float(actions[i+1][1])-float(action[1]))if __name__ == "__main__": user32 = windll.user32 hwnd = user32.GetForegroundWindow() win32gui.CloseWindow(hwnd) # 窗口最小化 fname = \'hook_log.txt\' if len(sys.argv) > 1: fname = sys.argv[1] actions = [] for line in open(fname): if len(line.strip())>0: actions.append(line.split(\',\')) times = 1 if len(sys.argv) > 2: times = int(sys.argv[2]) for i in range(times): runActrion(actions)

更多功能可以自己去修改代码

可以录制和播放不同脚本,如登录游戏,登录邮箱等等.本人用c#做了个界面,可以显示记录的不同脚本,并可以设置播放次数等功能

python recode.py game.txt

python play.py game.txt

以上就是关于自定义pos机键盘,windows+python按键精灵的知识,后面我们会继续为大家整理关于自定义pos机键盘的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/newsone/79470.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。