Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 324|回复: 1

截屏时提示的一个原始实现

[复制链接]

255

主题

364

帖子

2438

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2438
发表于 2024-9-8 23:55:38 | 显示全部楼层 |阅读模式
不包含截屏提示在截图中:
  1. import ctypes
  2. import win32gui
  3. import win32con
  4. import time
  5. import cv2

  6. # 弹出提示窗口的函数
  7. def show_toast(message, duration=5):
  8.     # 创建一个简单的弹出窗口
  9.     win32gui.MessageBox(0, message, "截屏提示", win32con.MB_ICONINFORMATION)

  10. # 触发截图的函数
  11. def take_screenshot():
  12.     # 获取屏幕尺寸
  13.     screen = ctypes.windll.user32.GetDesktopWindow()
  14.     screen_width = ctypes.windll.user32.GetSystemMetrics(0)
  15.     screen_height = ctypes.windll.user32.GetSystemMetrics(1)
  16.    
  17.     # 创建设备上下文
  18.     hdc = ctypes.windll.user32.GetWindowDC(screen)
  19.     hdc_driver = ctypes.windll.gdi32.CreateCompatibleDC(hdc)
  20.     hbitmap = ctypes.windll.gdi32.CreateCompatibleBitmap(hdc, screen_width, screen_height)
  21.     hold_bitmap = ctypes.c_long()
  22.     ctypes.windll.gdi32.SelectObject(hdc_driver, hbitmap)
  23.    
  24.     # 复制屏幕到位图
  25.     ctypes.windll.gdi32.BitBlt(hdc_driver, 0, 0, screen_width, screen_height, hdc, 0, 0, 13369376)
  26.    
  27.     # 保存位图到文件
  28.     bmp_info = ctypes.wintypes.BITMAPINFO()
  29.     bmp_info.bmiHeader.biSize = ctypes.sizeof(bmp_info.bmiHeader)
  30.     status = ctypes.windll.gdi32.GetDIBits(hdc_driver, hbitmap, 0, screen_height, None, ctypes.byref(bmp_info), win32con.DIB_RGB_COLORS)
  31.    
  32.     # 释放资源
  33.     ctypes.windll.gdi32.DeleteObject(hbitmap)
  34.     ctypes.windll.gdi32.DeleteDC(hdc_driver)
  35.     ctypes.windll.user32.ReleaseDC(screen, hdc)
  36.    
  37.     # 读取截图数据到Python图像库
  38.     img = cv2.imdecode(img_array, cv2.IMREAD_COLOR)
  39.    
  40.     # 保存图像到文件
  41.     cv2.imwrite('screenshot.png', img)

  42. # 调用函数,触发截图并显示提示窗口
  43. show_toast("注意截屏!")
  44. time.sleep(1)  # 等待提示窗口显示完成
  45. take_screenshot()
复制代码

这个实现是最原始的复杂的,下面还有一个实现比较简单(用到Python第三方库)
回复

使用道具 举报

255

主题

364

帖子

2438

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2438
 楼主| 发表于 2024-9-8 23:59:20 | 显示全部楼层
实现同样功能的第三方库:
MCE相关.PNG

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-16 12:41 , Processed in 0.014219 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表