Что нового

Прошу помощи по утечке памяти

lamenolamer

Новичок
Сообщения
2
Репутация
0
Код для отлова окон с ошибками, в цикле скринит экран в 2 глобальные переменные и с периодичностью 1 и 2 секунды, в случае появления окна с ошибкой делает ещё один скрин и все три выгружает в файл. При работе ест память, в течении пары тройки минут довольно значительно и продолжает пока не кончается, причем в диспетчере задач увеличение памяти конкретного процесса не отображается, только общий рост выделенной памяти, если завершить процесс скрипта - память высвобождается. Вроде использую глобальные переменные, система Win7.
Подскажите пожалуйста как решить проблему.
Код:
#include <ScreenCapture.au3>
#include <Date.au3>

Global $hWndConst
Global $lastSec
Global $lastSec1
Global $hBmp0
Global $hBmp1
Global $hBmp
Global $dif
Global $hWnd

$lastSec1 = _NowCalc()
While 1

   Example()
   sleep(300)
WEnd

Func Example()
	  $dif = _DateDiff( 's',$lastSec1, _NowCalc())
	  
	  if $dif = 1 Then
	  $hBmp0 = _ScreenCapture_Capture("")
	  ElseIf $dif > 2 Then
	  $hBmp1 = _ScreenCapture_Capture("")
	  $lastSec1 = _NowCalc()
	  EndIf

   If WinExists("[TITLE:1С:Предприятие;CLASS:V8NewLocalFrameBaseWnd]", "") Then $hWnd = WinGetHandle("[TITLE:1С:Предприятие;CLASS:V8NewLocalFrameBaseWnd]", "")
   If $hWnd = $hWndConst OR $hWnd = 0 Then Return 0
   $hWndConst = $hWnd
	sleep(300)
	ScreenShot()
 EndFunc   ;==>Example

 Func ScreenShot()
    $hBmp = _ScreenCapture_Capture("")
	_ScreenCapture_SaveImage(@DesktopDir & "\Screens_Error\ERShot_"&@hour&@min&@sec&"_1.jpg", $hBmp1)
	_ScreenCapture_SaveImage(@DesktopDir & "\Screens_Error\ERShot_"&@hour&@min&@sec&"_2.jpg", $hBmp0)
    _ScreenCapture_SaveImage(@DesktopDir & "\Screens_Error\ERShot_"&@hour&@min&@sec&"_3.jpg", $hBmp)
EndFunc   ;==>Example
 

Tempo

Скриптер
Сообщения
568
Репутация
181
Справка сказал(а):
Если параметр $sFileName - пустая строка, то функция захватывает экран и возвращает дескриптор HBITMAP. Этот дескриптор должен быть освобожден с помощью _WinAPI_DeleteObject. Если в параметре $sFileName указан путь, то изображение сохраняется в файл и ничего не возвращает.
 
Верх