1 Star 0 Fork 0

白龟山娃/gametest

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ee.py 3.16 KB
一键复制 编辑 原始数据 按行查看 历史
白龟山娃 提交于 2024-03-14 17:05 . first commit
# 对后台窗口截图
import win32gui, win32ui, win32con
from ctypes import windll
from PIL import Image
import cv2
import numpy,time
# 获取后台窗口的句柄,注意后台窗口不能最小化
# hWnd = win32gui.FindWindow("NotePad", None) # 窗口的类名可以用Visual Studio的SPY++工具获取
# hWnd = win32gui.FindWindow(None, 'KalpaOfSword') # 窗口的类名可以用Visual Studio的SPY++工具获取
# hWnd = win32gui.FindWindow(None, '原神账号.txt - Notepad')
# hWnd = win32gui.FindWindow(None, '抖音')
hWnd = win32gui.FindWindow(None, 'VMware Workstation')
print("hWnd :",hWnd)
# 获取句柄窗口的大小信息
left, top, right, bot = win32gui.GetWindowRect(hWnd)
width = right - left
height = bot - top
print(left, top, right, bot)
print('窗口尺寸', right - left, bot - top)
time.sleep(1)
# 返回句柄窗口的设备环境,覆盖整个窗口,包括非客户区,标题栏,菜单,边框
hWndDC = win32gui.GetWindowDC(hWnd)
time.sleep(1)
# 创建设备描述表
mfcDC = win32ui.CreateDCFromHandle(hWndDC)
time.sleep(1)
# 创建内存设备描述表
saveDC = mfcDC.CreateCompatibleDC()
time.sleep(1)
# 创建位图对象准备保存图片
saveBitMap = win32ui.CreateBitmap()
time.sleep(1)
# 为bitmap开辟存储空间
saveBitMap.CreateCompatibleBitmap(mfcDC, width, height)
time.sleep(1)
# 将截图保存到saveBitMap中
saveDC.SelectObject(saveBitMap)
time.sleep(1)
# 保存bitmap到内存设备描述表
saveDC.BitBlt((0, 0), (width, height), mfcDC, (0, 0), win32con.SRCCOPY)
time.sleep(1)
# 如果要截图到打印设备:
###最后一个int参数:0-保存整个窗口,1-只保存客户区。如果PrintWindow成功函数返回值为1
# result = windll.user32.PrintWindow(hWnd,saveDC.GetSafeHdc(),0)
# print(result) #PrintWindow成功则输出1
# 保存图像
#方法一:windows api保存
#保存bitmap到文件
saveBitMap.SaveBitmapFile(saveDC, "img_Winapi.bmp")
# #方法二(第一部分):PIL保存
##获取位图信息
# bmpinfo = saveBitMap.GetInfo()
# bmpstr = saveBitMap.GetBitmapBits(True)
# ##生成图像
# im_PIL = Image.frombuffer('RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']), bmpstr, 'raw', 'BGRX', 0, 1)
# ##方法二(后续转第二部分)
# im_PIL.save("im_PIL.png") # 保存
# im_PIL.show() # 显示
##方法三(第一部分):opencv+numpy保存
###获取位图信息
# signedIntsArray = saveBitMap.GetBitmapBits(True)
##方法三(后续转第二部分)
# 内存释放
win32gui.DeleteObject(saveBitMap.GetHandle())
saveDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.ReleaseDC(hWnd, hWndDC)
# ##方法二(第二部分):PIL保存
# ###PrintWindow成功,保存到文件,显示到屏幕
# im_PIL.save("im_PIL.png") # 保存
# im_PIL.show() # 显示
#
# ##方法三(第二部分):opencv+numpy保存
# ###PrintWindow成功,保存到文件,显示到屏幕
# im_opencv = numpy.frombuffer(signedIntsArray, dtype='uint8')
# im_opencv.shape = (height, width, 4)
# cv2.cvtColor(im_opencv, cv2.COLOR_BGRA2RGB)
# cv2.imwrite("im_opencv.jpg", im_opencv, [int(cv2.IMWRITE_JPEG_QUALITY), 100]) # 保存
# cv2.namedWindow('im_opencv') # 命名窗口
# cv2.imshow("im_opencv", im_opencv) # 显示
# cv2.waitKey(0)
# cv2.destroyAllWindows()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wzg_DaVinci/gametest.git
git@gitee.com:wzg_DaVinci/gametest.git
wzg_DaVinci
gametest
gametest
master

搜索帮助