ofLight Posted February 27, 2008 Posted February 27, 2008 If I run _ScreenCapture_Capture continually for about an hour or two strait I receive various errors like "WinAPI error collecting Device Context" or "WinAPI error handle provided is invalid". I believe these errors were being caused by a memory leak or similar problem. To correct this issue add the following lines to the bottom of _ScreenCapture_Capture_WinAPI_DeleteObject($hBMP) _WinAPI_DestroyIcon($hIcon)oÝ÷ Ù8b²+-ç.®·§¶Ç+H«Þm秺ȧZ½ëÞ®'âyØÂä³zºk¥jدyê뢻¢»©×hhº»!j÷§ßÛaiÖ§¢h®Û§Ü¢×¬µú+àz¶®¶s`Æö6Âb33c¶Âb33c¶rÂb33c¶væBÂb33c¶DD2Âb33c¶4D2Âb33c¶$ÕÂb33c¶7W'6÷"Âb33c¶6öâÂb33c¶6öà bb33c¶&vBÒÓFVâb33c¶&vBÒõväôvWE77FVÔÖWG&72b33cµ4Õô545$TTâ bb33c¶&÷GFöÒÒÓFVâb33c¶&÷GFöÒÒõväôvWE77FVÔÖWG&72b33cµ4Õô545$TTâ bb33c¶&vBfÇC²b33c¶ÆVgBFVâ&WGW&â6WDW'&÷"Ó bb33c¶&÷GFöÒfÇC²b33c¶F÷FVâ&WGW&â6WDW'&÷"Ó" b33c¶rÒb33c¶&vBÒb33c¶ÆVg@ b33c¶Òb33c¶&÷GFöÒÒb33c¶F÷ b33c¶væBÒõväôvWDFW6·F÷væF÷r b33c¶DD2ÒõväôvWDD2b33c¶væB b33c¶4D2Òõväô7&VFT6ö×F&ÆTD2b33c¶DD2 b33c¶$ÕÒõväô7&VFT6ö×F&ÆT&FÖb33c¶DD2Âb33c¶rÂb33c¶ õväõ6VÆV7Dö&¦V7Bb33c¶4D2Âb33c¶$Õ õväô&D&ÇBb33c¶4D2ÂÂÂb33c¶rÂb33c¶Âb33c¶DD2Âb33c¶ÆVgBÂb33c¶F÷Âb33cµ5$44õ bb33c¶d7W'6÷"FVà b33c¶7W'6÷"ÒõväôvWD7W'6÷$æfò bb33c¶7W'6÷%³ÒFVà b33c¶6öâÒõväô6÷6öâb33c¶7W'6÷%³%Ò b33c¶6öâÒõväôvWD6öäæfòb33c¶6öâ õväôG&t6öâb33c¶4D2Âb33c¶7W'6÷%³5ÒÒb33c¶6öå³%ÒÂb33c¶7W'6÷%³EÒÒb33c¶6öå³5ÒÂb33c¶6öâ VæD` VæD` õväõ&VÆV6TD2b33c¶væBÂb33c¶DD2 õväôFVÆWFTD2b33c¶4D2 bb33c·4fÆTæÖRÒgV÷C²gV÷C²FVâ&WGW&âb33c¶$Õ õ67&VVä6GW&Uõ6fTÖvRb33c·4fÆTæÖRÂb33c¶$Õ õväôFVÆWFTö&¦V7Bb33c¶$Õ õväôFW7G&÷6öâb33c¶6öâ There is always a butthead in the crowd, no matter how hard one tries to keep them out.......Volly
GaryFrost Posted February 27, 2008 Posted February 27, 2008 Func _ScreenCapture_Capture($sFileName = "", $iLeft = 0, $iTop = 0, $iRight = -1, $iBottom = -1, $fCursor = True) Local $iH, $iW, $hWnd, $hDDC, $hCDC, $hBMP, $aCursor, $aIcon, $hIcon If $iRight = -1 Then $iRight = _WinAPI_GetSystemMetrics($__SCREENCAPTURECONSTANT_SM_CXSCREEN) If $iBottom = -1 Then $iBottom = _WinAPI_GetSystemMetrics($__SCREENCAPTURECONSTANT_SM_CYSCREEN) If $iRight < $iLeft Then Return SetError(-1, 0, 0) If $iBottom < $iTop Then Return SetError(-2, 0, 0) $iW = $iRight - $iLeft $iH = $iBottom - $iTop $hWnd = _WinAPI_GetDesktopWindow() $hDDC = _WinAPI_GetDC($hWnd) $hCDC = _WinAPI_CreateCompatibleDC($hDDC) $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iW, $iH) _WinAPI_SelectObject($hCDC, $hBMP) _WinAPI_BitBlt($hCDC, 0, 0, $iW, $iH, $hDDC, $iLeft, $iTop, $__SCREENCAPTURECONSTANT_SRCCOPY) If $fCursor Then $aCursor = _WinAPI_GetCursorInfo() If $aCursor[1] Then $hIcon = _WinAPI_CopyIcon($aCursor[2]) $aIcon = _WinAPI_GetIconInfo($hIcon) _WinAPI_DrawIcon($hCDC, $aCursor[3] - $aIcon[2] - $iLeft, $aCursor[4] - $aIcon[3] - $iTop, $hIcon) _WinAPI_DestroyIcon($hIcon) EndIf EndIf _WinAPI_ReleaseDC($hWnd, $hDDC) _WinAPI_DeleteDC($hCDC) If $sFileName = "" Then Return $hBMP _ScreenCapture_SaveImage($sFileName, $hBMP) _WinAPI_DeleteObject($hBMP) EndFunc ;==>_ScreenCapture_Capture SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now