Es gibt das sogenannte
GDI Hooking Interface, mit dem werden alle Ausgaben die per
GDI erfolgen überwacht. ABER, zu diesem Interface gibt es sogut wie keine Dokumentationen. PC AnyWhere und Windows Terminal Server nutzten diese
GDI Hooks.
Ansonsten bleibt dir wirklich nichts anderes übrig als zeitgesteuert den Desktop Bereich auszulesen und mit einer zwischengespeicherten Bitmap zu vergleichen.
Ein Weg gäbe es da vielleicht noch. Jede Grafikkarte mappt ihren Grafikspeicher an normale Speicheradressen, zB. $A0000 usw. Per
DirectX oder über die Grafikkarten Treiber müsste es einen Weg geben diesen Speicherbereich direkt auszulesen. Normalerweise ist das eine Ring0 Operation. In deinem Falle würde man also eine Speicherkopieroperation mit inklusiver Vergleichsoperation codieren. Auch dafür gibt es schnelle MMX und SSE2 Assemblerbefehle. D.h. während des Kopieren des Bildschirmspeichers in den Buffer wird gleichzeitig überprüft ob eine Differenz von Buffer zum Grafikkarten Speicher vorliegt.
Gruß Hagen