Ich habe mir noch nicht alles komplett durchgeschaut, aber in deiner ScreenShot-Prozedur ist schon ein logischer Fehler drin.
du hast stehen
procedure ScreenShot(activeWindow: bool; destBitmap : TBitmap) ;
und ich bin der Meinung, dass es
procedure ScreenShot(activeWindow: bool; var destBitmap : TBitmap) ;
heißen müsste, da er ja ansonsten nicht das bearbeitete Bitmap wieder zurückgibt sondern das Leere Bitmap weiterhin benutzt. Du kannst natürlich auch diese Prozedur in eine Funktion umwandeln, wäre nur wenig Arbeit zum umprogrammieren.
Weswegen die
AV kommt kann ich dir auch gerade nicht sagen, aber du könntest ja mal mit Breakpoints herausfinden wo sie auftritt.
Flare