Pobranie koloru konkretnego pixela z okna które nie jest aktywne.

0

Witam.
Mam problem natury technicznej. Mianowicie potrzebuję pobrać kolor pixela konkretnego uchwytu.
O ile wszystko działa jak należy jak okno jest aktywne, o tyle program się krzaczy jak okno którego uchwyt pobrałem nie jest aktywne. Wtedy kolor nie jest pobierany.
poniżej funkcja z jakiej korzystam:

function getcolor2 (x, y : integer): String;  // x i y to koordynaty z którego pobrać kolor pixela
var
dc: HDC;
clr: COLORREF;

begin
  dc := GetWindowDC(ControlHWND); // ControlHWND to uchwyt okna z którego chcę pobrać kolor
  clr := GetPixel(dc, x,y);  
  ReleaseDC(ControlHWND, dc);
  Result := (inttostr(GetRValue(clr))+ inttostr(GetGValue(clr))+ inttostr(GetBValue(clr)));
end;   

Jak ktoś ma pomysł jak funkcję zmodyfikować tub ma taką która będzie funkcjonować w każdych warunkach to proszę o info.
Wszelkie pomysły mile widziane.

0

Coś mi sie wydaje że nie prawda okno aktywne czy nie powinno działać ten uchwyt mi się nie podoba na sztywno go podajesz cy co? A może współrzędne piksela coś nie halo?

0
kAzek napisał(a):

Coś mi sie wydaje że nie prawda okno aktywne czy nie powinno działać ten uchwyt mi się nie podoba na sztywno go podajesz cy co? A może współrzędne piksela coś nie halo?

Poniżej jak uzyskuje uchwyt (w Timerze ale to raczej nie ma znaczenia).

var // globalne
  ControlHWND: hwnd;
  WinRect: TRect;
  wysokosc: integer;
  szerokosc: integer; 
 begin
ControlHWND:=WindowFromPoint(Mouse.CursorPos);
GetWindowRect(ControlHWND, WinRect);
 wysokosc := WinRect.Bottom - Winrect.Top;
 szerokosc := winrect.Right - Winrect.Left;
end;  

Zauważyłem że kolor jest też pobierany z okna mimo że nie jest aktywne ale tylko wtedy, kiedy jest to okno widoczne na pulpicie (przynajmniej widoczne miejsce tego okna z którego jest pobierany punkt). Jeżeli okno zostanie zakryte inną aplikacją to funkcja nie pobiera koloru.

1

bo jak nie jest widoczne to nie jest narysowane i nie pobierzesz. Nie da się pobrać koloru piksela z okna przesłoniętego przez inne okno lub okna zminimalizowanego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1