from ctypes import *
import PyHook3 as pyHook
import pythoncom
def onKeyboardEvent(event):
print("onKeyboardEvent")
pid = c_ulong(0)
windowTitle = create_string_buffer(512)
windll.user32.GetWindowTextA(event.Window, byref(windowTitle), 512)
windll.user32.GetWindowThreadProcessId(event.Window, byref(pid))
windowName = windowTitle.value.decode('gbk')
print("当前您处于%s窗口" % windowName)
print("当前窗口所属进程id %d" % pid.value)
print("当前刚刚按下了%s键" % str(event.Ascii))
return True
hm = pyHook.HookManager()
hm.KeyDown = onKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
TIPS
- onKeyboardEvent的返回值
如果返回True 则输入可以正常定向到你想要输入的地方
如果返回false 则输入被没收,无法输入字符
- 如何停止监控
hm.HookKeyboard() #开始监视
hm.UnhookKeyboard() # 停止监听
- 如何退出程序
程序开始执行pythoncom.PumpMessages()之后就进入了一个循环,不会执行pythoncom.PumpMessages()语句之后的语句。
目前想退出只可以使用win32api.PostQuitMessage(0) 来结束程序,循环也一通结束了。