Entwickler-Ecke

Windows API - Mit Handle Farbe auf einem anderem Programm auslesen


JacFab - Mi 04.12.02 21:22
Titel: Mit Handle Farbe auf einem anderem Programm auslesen
Wie kann ich wenn ich den handle, und die x,y koordinate des punktes habe, die farbe von ihm auf einem anderem programm herauskriegen?

beispiel:
ich habe ein programm, das heißt moretv. es ist zum fernsehengucken. wenn ich meinen tuner ausschalte, verwandelt sich die fernsehfläche in eine blaue fläche. mein programm soll auf dieses ereigniss reagieren und den pc herunterfahren!

danke schon mal!


OregonGhost - Mi 04.12.02 22:36

Also, erstmal ist die Farbe nicht auf einem anderen Programm, sondern auf einem Fenster des Programms.

Davon abgesehen funktioniert das Capturing mit dem so genannten Overlaymodus, das heißt sinngemäß, dass deine TV-Karte Daten direkt an die Grafikkarte sendet und nicht den Umweg über Windows macht. Wenn du jetzt also <Druck> drückst, kann es sein, dass die Fläche schwarz ist, wenn das Programm nicht entweder regelmäßig sein Fenster aktualisiert oder direkt einen Preview-Modus wie VirtualDub unterstützt.

Wenn jedenfalls die Pixel des Fensters tatsächlich eingefärbt sein sollten, kannst du mit (aber ohne deinen Handle)

Quelltext
1:
2:
3:
4:
5:
6:
var dc: THandle;
color: TColor;
...
dc := GetDC(0);
color := GetPixel(dc, x, y);
ReleaseDC(0, dc);

die Farbe des Pixels auf dem Bildschirm (wie Windows ihn betrachtet!) an der Stelle (x,y) auslesen.