Cześć wszystkim, mam problem z jedną rzeczą w moim programie a mianowicie mam Timer
procedure TForm1.Timer1Timer(Sender: TObject);
var
Pos: tpoint;
kolor: COLORREF;
X, Y: Integer;
H: HWND;
rgb: string;
begin
H := GetWindowDC(0);
GetCursorPos(Pos); // pozycja kursora
Label1.Caption := (IntToStr(Pos.X) + ' ' + IntToStr(Pos.Y)); // labelka pokazuje położenie myszy
kolor := GetPixel(H, Pos.X, Pos.Y); //biore pixel poprzez wskaźnik
rgb := 'R: ' + IntToStr(GetRValue(kolor)) + ' G: ' +
IntToStr(GetGValue(kolor)) + ' B: ' + IntToStr(GetBValue(kolor)); //zamiana hex na rgb
panel1.Color := kolor; // koloruje Tpanel
Label3.Caption := rgb; // jedna labelka pokazuje rgb
Label4.Caption := (kolor.ToHexString()); // druga pokazuje kexa
end;
Krótko mówiąc program pobiera położenie myszy z pulpitu a następnie wyciąga kolor i koloruje Tpanel który jest na formie
dodatkowo wciska w labelki informacje o danym kolorze
Problem jest tego typu ze juz po minucie działania tego programu cały windows mi zwalnia i nie wiem jak sobie z tym poradzić aby to była aplikacja do normalnego użytku. Robie inne programy które ort! ten sposób zaczytywania pixeli i tylko pobieraja rgb (sporadycznie co jakies pol minuty) bez rysowania paneli itp a program zwalnia po 30-120 minutach.
Prosiłbym o pomoc ;)