Hi,
wie HIER beschrieben, reserviert _GDIPlus_BitmapLockBits() einen "temporären" Puffer, der aber durch ein UnLock nicht mehr freigegeben wird...
Spoiler anzeigen
#include <ScreenCapture.au3>
_GDIPlus_Startup()
for $i=1 to 10
sleep(1000)
$hbscreen1=_ScreenCapture_Capture("", 0, 0, -1, -1, False)
$pbitmap1 = _GDIPlus_BitmapCreateFromHBITMAP($hbScreen1); reserviert auch Speicher, aber der wird von _GDIPlus_ImageDispose($pBitmap1) wieder freigegeben
$BitmapData1 = _GDIPlus_BitmapLockBits($pbitmap1, 0, 0, _GDIPlus_ImageGetWidth($pbitmap1), _GDIPlus_ImageGetHeight($pbitmap1), $GDIP_ILMREAD, $GDIP_PXF24RGB) ; reserviert einen Puffer von B*H*3 Byte
If @error Then MsgBox(0, "", "Error locking region " & @error)
_GDIPlus_BitmapUnlockBits($pbitmap1, $BitmapData1) ;gibt den Puffer nicht mehr frei
If @error Then MsgBox(0, "", "Error UNlocking region " & @error)
sleep(5000)
[/autoit] [autoit][/autoit] [autoit]_WinAPI_DeleteObject($hbscreen1)
_GDIPlus_ImageDispose($pBitmap1)
next
[/autoit]Einfach mal das Script starten und im Task-Manager sieht man, daß die Speicherauslastung alle 5 Sekunden um ca 5MB (22´´) steigt.
Gibt es eine andere Möglichkeit, den Pointer auf die Bitmapdaten zu bekommen?
ciao
Andy