python3应用windows api对后台程序窗口及桌面截图并保存的方法

  

<强> python的版本及依赖的库的安装

        python 3.7.1 #版本   pip安装pywin32==224   pip安装numpy==1.15.3   pip安装opencv-python==3.4.2.16   pip安装opencv-contrib-python==3.4.2.16   pip安装Pillow-PIL==0.1.dev0      

<强>对后台窗口截图

        #对后台窗口截的图   进口win32gui win32ui win32con   从ctypes进口windll   从公益诉讼导入图像   进口cv2   进口numpy      #获取后台窗口的句柄,注意后台窗口不能最小化   hWnd=win32gui.FindWindow(“记事本”,没有一个)#窗口的类名可以用Visual Studio的间谍+ +工具获取   #获取句柄窗口的大小信息   左,上,右,机器人=win32gui.GetWindowRect (hWnd)   宽度=右-左   身高=bot -   #返回句柄窗口的设备环境,覆盖整个窗口,包括非客户区,标题栏,菜单,边框   hWndDC=win32gui.GetWindowDC (hWnd)   #创建设备描述表   mfcDC=win32ui.CreateDCFromHandle (hWndDC)   #创建内存设备描述表   saveDC=mfcDC.CreateCompatibleDC ()   #创建位图对象准备保存图片   saveBitMap=win32ui.CreateBitmap ()   #为位图开辟存储空间   saveBitMap.CreateCompatibleBitmap (mfcDC、宽度、高度)   #将截图保存到saveBitMap中   saveDC.SelectObject (saveBitMap)   #保存位图到内存设备描述表   saveDC.BitBlt((0, 0),(宽度、高度),mfcDC, (0, 0), win32con.SRCCOPY)      #如果要截图到打印设备:   # # #最后一个int参数:0 -保存整个窗口,1 -只保存客户区。如果PrintWindow成功函数返回值为1   #结果=windll.user32.PrintWindow (hWnd, saveDC.GetSafeHdc (), 0)   #输出(结果)# PrintWindow成功则输出1      #保存图像   # #方法一:windows api保存   # # #保存位图到文件   saveBitMap.SaveBitmapFile (saveDC“img_Winapi.bmp”)      # #方法二(第一部分):公益诉讼保存   # # #获取位图信息   bmpinfo=saveBitMap.GetInfo ()   bmpstr=saveBitMap.GetBitmapBits(真正的)   # # #生成图像   im_PIL=Image.frombuffer (RGB, (bmpinfo [' bmWidth '], bmpinfo [' bmHeight ']), bmpstr,“生”、“BGRX”, 0, 1)   # #方法二(后续转第二部分)      # #方法三(第一部分):opencv + numpy保存   # # #获取位图信息   signedIntsArray=saveBitMap.GetBitmapBits(真正的)   # #方法三(后续转第二部分)      #内存释放   win32gui.DeleteObject (saveBitMap.GetHandle ())   saveDC.DeleteDC ()   mfcDC.DeleteDC ()   win32gui.ReleaseDC (hWnd, hWndDC)      # #方法二(第二部分):公益诉讼保存   # # # PrintWindow成功,保存到文件,显示到屏幕   im_PIL.save (im_PIL.png) #保存   im_PIL.show() #显示      # #方法三(第二部分):opencv + numpy保存   # # # PrintWindow成功,保存到文件,显示到屏幕   im_opencv=numpy.frombuffer (signedIntsArray dtype=皍int8”)   im_opencv。形状=(高度、宽度、4)   cv2。cvtColor (im_opencv cv2.COLOR_BGRA2RGB)   im_opencv cv2.imwrite (“im_opencv.jpg”, [int (cv2.IMWRITE_JPEG_QUALITY), 100]) #保存   cv2.namedWindow (im_opencv) #命名窗口   cv2.imshow (im_opencv im_opencv) #显示   cv2.waitKey (0)   cv2.destroyAllWindows ()      之前      

<强>对桌面截图

        #截图整个桌面   进口win32gui   进口win32ui   进口win32con   进口win32api      #获取桌面   hdesktop=win32gui.GetDesktopWindow ()   #分辨率适应   宽度=win32api.GetSystemMetrics (win32con.SM_CXVIRTUALSCREEN)   身高=win32api.GetSystemMetrics (win32con.SM_CYVIRTUALSCREEN)   左=win32api.GetSystemMetrics (win32con.SM_XVIRTUALSCREEN)   前=win32api.GetSystemMetrics (win32con.SM_YVIRTUALSCREEN)   #创建设备描述表   desktop_dc=win32gui.GetWindowDC (hdesktop)   img_dc=win32ui.CreateDCFromHandle (desktop_dc)   #创建一个内存设备描述表   mem_dc=img_dc.CreateCompatibleDC ()   #创建位图对象   截图=win32ui.CreateBitmap ()   截图。CreateCompatibleBitmap (img_dc、宽度、高度)   mem_dc.SelectObject(截图)   #截图至内存设备描述表   mem_dc。BitBlt((0, 0),(宽度、高度),img_dc, (0, 0), win32con.SRCCOPY)   #将截图保存到文件中   截图。SaveBitmapFile (mem_dc screenshot.bmp)   #内存释放   mem_dc.DeleteDC ()   win32gui.DeleteObject (screenshot.GetHandle ())   之前      

以上这篇python3应用windows api对后台程序窗口及桌面截图并保存的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

python3应用windows api对后台程序窗口及桌面截图并保存的方法