Desktop-Pixel auslesen und vergleichen
-
Hallo Community,
ich möchte einen bestimmten Bereich meines Desktops nach einer bestimmten
Pixelfarbe (Pixel) in sich wiederholenden Abständen durchsuchen lassen. Das
Ganze soll im Hintergrund laufen und sowenig wie möglich die Performance des
Systems (habe WinXP Prof) belasten. Man muss bedenken das z.B. bei einem
Bereich von 200 Pixel breit und 300 Pixel hoch schon insgesamt 60000 Pixel
angeschaut und verglichen werden müssen. Darum ist es mir wichtig dass die
Lösung besonders schnell und somit gut im Hintergrund laufen kann.Hier mal der Ablauf in einfachen Worten gefasst:
// Variable deklariern
gesuchtePixelfarbe = Farbwert (z.B. 65565)// Bereich (Kooridnaten) definieren
HöheAnfangspunkt = 100
BreiteAnfangspukt = 100
HöheEndpunkt = 300
BreiteEndpunkt = 200// Bereich permanent (z.B. While-Schleife) durchlaufen und jedes Pixel
// mit gesuchter Pixelfarbe vergleichen und wenn gefunden dann Aktion
// (z.B. einen Zähler erhöhen) ausführen.
while(1==1) {durchsuche Bereich, vergleiche und mach Aktion wenn gefunden}Schön wäre es wenn jemand ein Code-Beispiel weiss. Das ist für mich immer
am anschaulichsten. Ansonsten danke ich euch im voraus für jede Hilfe.Gruss, rommi
-
Such mal hier im Forum nach BitBlt, Screenshot, Desktop. Da wirst du garantiert fündig (hab grad keinen Link zur Hand). Du holst dir den gewünschten Bereich, packst den z.B. in ein Bitmap und suchst nach deiner Farbe. Einen Pointer auf die Bilddaten bekommst du bei CBitmap über die Eigenschaft Scan0, wenn ich mich nicht irre.
P.S.: Versuchs erst gar nicht mit GetPixel!

P.P.S.: Eine weitere Möglichkeit wäre sicher, über DirectX zu gehen, aber dazu kann ich dir nix sagen...
-
Hallo Matze,
danke für den Such-Hinweis! Werde mal nach den vorgeschlagenen Wörtern suchen.
Gruss, rommi
-
Es müsste doch auch per DirectDraw möglich sein, indem man die Werte aus dem Frame Buffer holt !?