Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Farbe an der Mausposition ?! (https://www.delphipraxis.net/3626-farbe-der-mausposition.html)

inzzi 22. Mär 2003 12:55


Farbe an der Mausposition ?!
 
Ich möchte ein kleines Tool coden das die farbe (in HEX) des bildschirms an der aktuellen Mausposition in einem Edit feld ausgibt.
Das problem ist nur das ich nicht weis wie ich die farbe an der Mausposition bekomme ?!

mfg inzzi

arnoldo 22. Mär 2003 13:24

Tach inzzi,

so müsste es funktionieren:

Code:
var farbe:dword;
    mpos:tpoint;
    dc:hdc;
begin
 getcursorpos(mpos);
 dc:=GetDC(0);
 farbe:=GetPixel(dc,mpos.x,mpos.y);
 ReleaseDC(0,dc);
end;
gruß, arnoldo

inzzi 22. Mär 2003 14:03

ok thx..
i werd das dann versuchen, und wie kann ich die farbe ausserhalb der form einlesen... wenn ich jetzt zb. auf meinen desktop hintergrund klicke, oder irgendeine farbe aus einer page im IE haben will...
bei einem klick soll die farbe eingelesen werden, aber dabei wird ja das programm deaktiviert und der IE zb. aktiviert...

Luckie 22. Mär 2003 14:08

Kuck die im www.msdn.microsoft.com mal SetCapture an. Bzw. alternativ / zusätzlich WhatColor.

inzzi 23. Mär 2003 18:49

ok thx werd ich mir mal anschaun...
allerdings bin ich nicht sehr optimistisch das ich da einen durchblick hab -> delhpi anfänger ;P

Luckie 23. Mär 2003 19:31

Irgendwo ist da noch einfehler drin. Es funktioniert nicht sehr zuverlässig und genau ist es auch nicht:
Delphi-Quellcode:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  pt: TPoint;
  dwRed, dwGreen, dwBlue : DWORD;
  dc : HDC;
begin
  dc := GetDC(0);
  pt.X := x+Form1.Left;
  pt.Y := y+Form1.Top;
  ClientToScreen(pt);
  dwRed := GetRValue(GetPixel(dc, pt.X, pt.Y));
  dwGreen := GetGValue(GetPixel(dc, pt.X, pt.Y));
  dwBlue := GetBValue(GetPixel(dc, pt.X, pt.Y));
  Caption := IntToStr(dwRed)+' '+IntToStr(dwGreen)+' '+IntToStr(dwBlue);
  ReleaseDC(Form1.Handle, dc);
  ReleaseCapture();
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SetCapture(Form1.Handle);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  pt : TPoint;
begin
  pt.X := x+Form1.Left;
  pt.Y := y+Form1.Top;
  ClientToScreen(pt);
  Caption := IntToStr(pt.X)+' / '+IntToStr(pt.Y);
end;

Capa 19. Mär 2005 10:58

Re: Farbe an der Mausposition ?!
 
Code:
function CursorColor : TColor;
var
  cv : TCanvas;
  p : TPoint;
begin
  GetCursorPos(p);
  cv:=TCanvas.Create;
  cv.Handle:=GetWindowDC(GetDesktopWindow);
  Result:=GetPixel(cv.Handle,p.x,p.y);
  cv.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz