对api不熟,网上python实用代码也不多,截图虽然有直接的代码,但是描述不全。连猜带蒙终于搞定了用pywin32对win屏幕截图,并在所需要截图的位置画框。
作为纪念,留个爪子,分享一下喜悦。如果有大神经过,觉得代码写的不好,不妨帮忙改改。
def winsst(argw=0,argh=0,argtopleft=(0,0)):
'''截图,输出Bitmapsbits的列表
argw=0表示全宽,argh=0表示全高
'''
hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
hwndDC = win32gui.GetWindowDC(hwnd) # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
mfcDC = win32ui.CreateDCFromHandle(hwndDC) # 根据窗口的DC获取mfcDC
saveDC = mfcDC.CreateCompatibleDC() # mfcDC创建可兼容的DC
saveBitMap = win32ui.CreateBitmap() # 创建bigmap准备保存图片
MoniterDev = win32api.EnumDisplayMonitors(None, None) # 获取监控器信息
# 判断是否设置截图区域
w = MoniterDev[0][2][2] if argw==0 else argw
h = MoniterDev[0][2][3] if argh==0 else argh
saveBitMap.CreateCompatibleBitmap(mfcDC, w, h) # 为bitmap开辟空间