Delphi - Színek "lopása" más alkalmazásokból

forráskód letöltése
Sok-sok alkalmazás képes arra, hogy tetszőleges programokból kimásolja egy-egy ablakának a képét.

Ebben a cikkben most olyan alkalmazást készítünk, mely egy adott pontnak - ahová az egérrel mutatunk - a színét olvassa ki.

Ezt a színt utána a program megjeleníti saját képernyőjén, sőt át is konvertálja egy olyan sztringgé, amelyet egy web lapba azonnal be is illeszthetünk és hogy a beillesztés is egyszerű legyen, rögtön ki is másolja ezt a sztringet a vágólapra. A program használatához kattintson a Form területére és lenyomva tartva az egér gombját mozgassa át egy tetszőleges alkalmazás fölé. Fontos, hogy amikor a Form-ra kattint, akkor tényleg a Form-on tegye ezt és ne valamely a Form-on elhelyezkedő komponens fölött.

Minden egyes OnMouseMove eseménykor az akkor éppen aktuális szín kerül másolásra a vágólapra.

A program működéséhez a Form OnMouseMove eseményét használjuk fel. Ez alapesetben csak akkor jön létre, ha az egérrel e Form területe fölött vagyunk, ha viszont lenyomva tartjuk az egér gombját, akkor a Form területén kívülről is létrejön az esemény, így a képernyő egész területét bejárhatjuk.

Ahhoz, hogy a teljes képernyő területről olvasni tudjunk, létre kell hoznunk egy olyan TCanvas-t, mely képes erre. Ehhez használjuk fel a GetWindowDC által szolgáltatott azonosítót.

A kapott koordinátákat konvertáljuk a ClientToScreen függvénnyel, hogy ne a Form kliens területére vonatkozó koordináta rendszerben legyünk, hanem a képernyő koordináta rendszerében.