http://stackoverflow.com/questions/16575193/memory-leak-python-windows-7-screenshots
抓图步骤大致如下:
hwin = win32gui.GetDesktopWindow()
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
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, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
bmp.SaveBitmapFile(memdc, file_name) # 'screenshot.bmp'
但是如果是用于屏幕监控的,那么经过一段时间的loop,将很快耗尽内存,原因是资源没有释放
释放资源:
win32gui.DeleteObject(bmp.GetHandle())
memdc.DeleteDC()
srcdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
PS:百度了半天也没找到解决方法,直接谷粉搜搜,老外程序员还是给力
分享到:
相关推荐
8. **内存管理**:截取的图像数据可能占用大量内存,因此合理的内存管理至关重要,防止内存泄漏或过大的内存消耗。 9. **错误处理**:良好的错误处理机制能确保程序在遇到异常情况时不会崩溃,而是给出有用的错误...
5. **错误处理**:在整个过程中,应进行适当的错误处理,如检查API函数的返回值,确保资源正确释放,防止内存泄漏。 最后,这个VB项目不仅对VB开发者有学习价值,其基本思路也可以应用到其他编程语言,如C#、C++或...
- 内存释放:使用完毕后,需要释放相关资源,包括删除对象和DC,以避免内存泄漏。 以上即为使用Python3结合Windows API进行后台程序窗口及桌面截图并保存的方法的知识点解析。需要注意的是,这个过程中涉及的操作...
避免一次性加载太多页面,及时释放不再使用的资源,可以防止内存泄漏和系统崩溃。 7. **异步处理**:在处理大量网页时,使用异步编程模型(如async/await在C#中)可以提高效率,避免阻塞UI线程,使得程序更加响应。...
当进程异常结束时,通常会有错误码或异常信息,监控这部分信息可以帮助找出导致进程退出的原因,比如资源泄漏、内存溢出或是未捕获的异常。开发者可以通过注册进程退出事件,获取并解析进程退出状态,以便进行故障...
在本文中,我们将深入探讨如何使用C#编程语言和AForge.NET框架进行摄像头采集操作,包括...记住,要确保在使用完毕后正确释放资源,避免内存泄漏。希望这篇指南能帮助你理解和使用AForge.NET进行摄像头采集和视频录制。
8. **截屏与录屏**:`adb exec-out screencap -p > screenshot.png`用于截取设备屏幕并保存为PNG图片,`adb shell screenrecord --time-limit <秒数> <文件路径>`则能录制设备屏幕。 **三、adb在渗透测试中的应用**...