截圖:
源代碼:
#!usr/bin/env python
# -*- coding: gb2312 -*-
import pyHook
import pythoncom
import win32api
import win32con
import wx
#from pyHook.HookManager import HookConstants
def OnKeyboardEvent(event):
# tabpressed = pyHook.GetKeyState(HookConstants.VKeyToID('VK_TAB')) >= 2
#這是實現tab狀態抓取的另一種方法,如果啓用,則
#from pyHook.HookManager import HookConstants
#這一句也要啓用
tabpressed = win32api.GetKeyState(win32con.VK_TAB) & 0x8000
if tabpressed:
if event.Key == 'Y':
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'急速冷卻'
elif event.Key == 'V':
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'幽靈漫步'
elif event.Key == 'G':
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'寒冰之牆'
elif event.Key == 'Z':
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'靈動迅捷'
elif event.Key == 'X':
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'強襲颶風'
elif event.Key == 'C':
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'電磁脈衝'
elif event.Key == 'T':
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'陽炎衝擊'
elif event.Key == 'F':
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'熔爐精靈'
elif event.Key == 'D':
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'混沌隕石'
elif event.Key == 'B':
win32api.keybd_event(81,0,0,0)
win32api.keybd_event(81,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(69,0,0,0)
win32api.keybd_event(69,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(87,0,0,0)
win32api.keybd_event(87,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(82,0,0,0)
win32api.keybd_event(82,0,win32con.KEYEVENTF_KEYUP,0)#'超震聲波'
return True
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, '卡爾技能改鍵',
size=(300, 200))
panel = wx.Panel(self, -1)
wx.StaticText(panel, -1, "卡爾技能改鍵說明:\n\n按住TAB再按技能快捷鍵,即相當於切換到此技能。\n\n"
"powered by KID.JDD and Tooktang", (7,25),
style=wx.ALIGN_CENTER)
self.button = wx.ToggleButton(panel, -1, "點擊切換改鍵開關狀態", pos=(71,120))
self.Bind(wx.EVT_TOGGLEBUTTON, self.OnClick, self.button)
def OnClick(self, event):
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
wx.EVT_TOGGLEBUTTON = hm.HookKeyboard()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = Frame()
frame.Show()
app.MainLoop()
pythoncom.PumpMessages()