Такая проблема: нашел полезную инфу по поиску картинки. запилил себе в скрпит. вроде всё просто, проверил экран - нашел - щелкнул. но через минут 7 начинает лагать всё, через 10 вылетает с ошибкой, что у компа не хватает памяти. Как такое обойти? Чем вызвано? Как можно очищать память?
код скрипта
код скрипта
Код:
#include <ScreenCapture.au3>
#include "BmpSearch.au3"
HotKeySet("{ESC}", "_Terminate")
Opt("MouseClickDownDelay", 50)
Opt("MouseClickDelay", 50)
$left_x = 0
$left_y = 0
$i = 0
;ищем и задаём начальные координаты. картинка должна быть левой!
_GDIPlus_Startup()
$hSource = _ScreenCapture_Capture()
$hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\test.bmp")
$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
$aCoords = _BmpSearch($hSource, $hFind, 1)
If @error Then
ConsoleWrite("Не найдено" & @CRLF)
Else
$left_x = $aCoords[1][2]
$left_y = $aCoords[1][3]
EndIf
Example()
Func Example()
While 1
Do
_GDIPlus_Startup()
$hSource = _ScreenCapture_Capture()
$hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\test.bmp")
$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)
$aCoords = _BmpSearch($hSource, $hFind, 1)
If @error Then
MouseClick("left",$left_x + 60,$left_y + 120,1,2) ;reroll
sleep(100)
Else
If $aCoords[1][2] = $left_x Then
MouseClick("left",$left_x + 20,$left_y + 10,1,2) ;левая ячейка
sleep(100)
MouseClick("left",$left_x + 60,$left_y + 200,1,2) ;кнопка покупки
sleep(100)
ElseIf $aCoords[1][2] = $left_x + 60 Then
MouseClick("left",$left_x + 80,$left_y + 10,1,2) ;средняя ячейка
sleep(100)
MouseClick("left",$left_x + 60,$left_y + 200,1,2)
sleep(100)
ElseIf $aCoords[1][2] = $left_x + 120 Then
MouseClick("left",$left_x + 140,$left_y + 10,1,2) ;правая ячейка
sleep(100)
MouseClick("left",$left_x + 60,$left_y + 200,1,2)
sleep(100)
EndIf
EndIf
sleep(100)
$i+=1
Until $i = 200
sleep(30000)
$i = 0
WEnd
EndFunc
Func _Terminate()
Exit
EndFunc ;==>_Terminate