# -*- coding: utf-8 -*-
import win32gui
import win32ui
import win32con
import win32api
#获得桌面窗口的句柄
hdesktop = win32gui.GetDesktopWindow()
#获得所有显示屏的像素尺寸
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
right = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
#创建设备描述表
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, right), win32con.SRCCOPY)
#将位图保存到文件
screenshot.SaveBitmapFile(mem_dc, 'c:\\WINDOWS\\Temp\\screenshot.bmp')
#释放对象
mem_dc.DeleteDC()
win32gui.DeleteObject(screenshot.GetHandle())
在命令行中运行此脚本,然后在’c:\WINDOWS\Temp 目录中检查生成的screenshot.bmp文件。如图: