Próbnik koloru

0

Witka!

Chciałem napisać mały programik - próbnik koloru, wzorem z innego programu. Tam działa to tak, że klikam przycisk i program się minimalizuje, a kursor zmienia kształt na inny. Teraz mogę w dowolnym innym programie kliknąć gdzieś myszką... i wtedy ten pierwszy program z powrotem się przywraca i ma wyświetlany wskazany kolor.

No i nie wiem jak to zrobić. Tzn. pobrać kolor spod kursora... ustawić kursor "globalny", tzn. że nad dowolną aplikacją będzie tak wyglądał jak chcĘ, i żeby kliknięcie myszką (gdziekolwiek) nie powodowało kliknięcie w tamtym programie, a było wykrywane przez mój i powodowało powstanie mojego programu.

Z góry wielkie dzięki za pomoc. Choćby w niektórych problemach z jakimi sobie nie radzę.

0

Nie wiem czy bedzie to dobre rozwiazanie ale ...

minimalizujesz program po kliknieciu robisz zrzut ekrany (masz go w schowku) potem pobierasz kolor pixela (X,Y kursora myszki), i gotowe chyba ...

0

Sprawdzasz czy nastąpiło kliknięcie i potem:

var
  h: HDC;
  c: TCanvas;
  kolor: TColor;
begin
  c:=TCanvas.Create;
  h:=GetDC(0);
  c.Handle:=h;
  kolor:=c.Pixels[x,y]; // tutaj zamiast x i y podajesz pozycię kursora
  ReleaseDC(0, h);
end;

:)

0

Dajesz screena na jakas formatke na fullscreenie - reszte chyba wymyslisz ...

0

Kiedyś cos takiego napisalem - nowsza wersja programu FineWindow dostępnego na http://pq.royy.net . Ta opublikowana nie ma pobierania koloru, tylko wybór z ColorDialog, bo sobie do końca nie poradziłem z kontrolowaniem kształtu kursora nad innymi oknami. I znudziło mi sie siedzenie nad tym :-) Ale pobieranie koloru działało.

Generalnie nie robisz screenów, tylko po wybraniu w Twoim programie pobierania kolorów zakładasz globalnego (przez dll) hooka na mysz i po kliknięciu pobierasz kolor z punktu klikniecia, wysyłasz go windowsowskim komunikatem do swojego programu i nie przekazujesz klikniecia do programu nad ktorym kliknales. Musisz tylko obmyslic sposob zakonczenia pobierania - lepiej nie po pierwszym kliknięciu, bo user zwykle za pierwszym razem nie trafia w ten kolor co by chciał :-). Ja zrobiłem prosto - konczy prawy klik, ale pewnie można wymyślić cos lepszego.

Jak chcesz to sobie tą nowa wersje ściągnij i poprzerabiaj, wystawiłem kod (na D7) na http://pq.royy.net/FW.rar . Zwróć uwage, że są 2 oddzielne projekty: FineWindow.dpr to program, Color.dpr to dll-ka z hookiem. Powodzenia

0

Też kiedyś pisałem takie cuś :) . U mnie działa to na zasadzie okienka latającego za kursorem i pokazującego aktualnie wskazany przez niego kolor. Aby wyjść z programu trzeba nicisnąc Ctrl+PrntScrn, wtedy tez do schowka kopiuje się wartośc koloru.

http://www.delphi.is.net.pl/htmlcolor.rar

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