python基于win32实现窗口截图
本文实例为大家分享了python基于win32实现窗口截图的具体代码,供大家参考,具体内容如下
获取窗口句柄和标题
importwin32gui
hwnd_title=dict()
def_get_all_hwnd(hwnd,mouse):
ifwin32gui.IsWindow(hwnd)andwin32gui.IsWindowEnabled(hwnd)andwin32gui.IsWindowVisible(hwnd):
hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
win32gui.EnumWindows(_get_all_hwnd,0)
forwndinhwnd_title.items():
print(wnd)
运行结果如下,格式为:(窗口句柄,窗口标题)
可自行根据标题筛选想要的窗口
(65772,'') (262798,'pythonProject–screenShot.py') (5114244,'项目里程碑.ppt[兼容模式]-PowerPoint') (3803304,'') (133646,'') (133642,'')
根据窗口句柄截图
importwin32com.client
importwin32gui
importwin32api
importwin32con
importwin32ui
fromPILimportImage
defsetForeground(hwnd):
"""
将窗口设置为最前面
:paramhwnd:窗口句柄一个整数
"""
ifhwnd!=win32gui.GetForegroundWindow():
shell=win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(hwnd)
defwinShot(hwnd):
"""
根据窗口句柄截取窗口视图
:paramhwnd:窗口句柄一个整数
"""
bmpFileName='screenshot.bmp'
jpgFileName='screenshot.jpg'
r=win32gui.GetWindowRect(hwnd)
hwin=win32gui.GetDesktopWindow()
#图片最左边距离主屏左上角的水平距离
left=win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
#图片最上边距离主屏左上角的垂直距离
top=win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
hwindc=win32gui.GetWindowDC(hwin)
srcdc=win32ui.CreateDCFromHandle(hwindc)
memdc=srcdc.CreateCompatibleDC()
bmp=win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc,r[2]-r[0],r[3]-r[1])
memdc.SelectObject(bmp)
memdc.BitBlt((-r[0],top-r[1]),(r[2],r[3]-top),srcdc,(left,top),win32con.SRCCOPY)
bmp.SaveBitmapFile(memdc,bmpFileName)
im=Image.open(bmpFileName)
im=im.convert('RGB')
im.save(jpgFileName)
if__name__=='__main__':
setForeground(5114244)
winShot(5114244)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。