求屏幕取色源代码 (300分)

不用钩子吧!呵呵,那个getcolor ,老外写的,深度历险上有!
 
不要钩子,我就写过
使用setcapture

unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit3: TEdit;
Label3: TLabel;
Button1: TButton;
Edit4: TEdit;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
var
Handle1,HandleTag: THandle;
TagRect: TRect;

procedure TForm1.FormCreate(Sender: TObject);
begin
// SetWindowPos(handle,HWND_TOPMOST,left,top,width,height,SWP_SHOWWINDOW);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Pl: TPoint;
WindowText: String;
begin
if GetCapture()<>0 then
begin
//GetCursorPos(Pl);
pl.X := x;
pl.Y := y;
pl := ClientToScreen(pl);
Edit1.Text := IntToStr(pl.X);
Edit2.Text := IntToStr(pl.Y);
SetLength(WindowText,10);
Handle1 := WindowFromPoint(Pl);
GetWindowText(handle1,Pchar(WindowText),Length(WindowText));
Edit4.Text := WindowText;
Edit3.Text := IntToStr(Handle1);
Panel1.Color := GetPixel(GetDC(0),pl.X,pl.Y);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
HandleTag := Handle1;
GetWindowRect(HandleTag,TagRect);
Screen.Cursor := crDefault;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
handle1: THandle;
Point: TPoint;
begin
if SetCapture(handle) <> 0 then // 开 始 捕 捉
Screen.Cursor := crUpArrow;
end;
procedure TForm1.Button1Click(Sender: TObject);

begin
SetWindowPos(HandleTag,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE OR SWP_NOSIZE);
end;

end.
 
可以抓屏幕任何点的色彩,可以得到句柄和鼠标坐标。

没有hook,没有dll。单击左键移动就可。

具体的程序我放在
http://www.ustc.edu.cn/departments/dpse/GetHandle.rar
 
谢谢大家帮忙,多人接受答案了!
 

Similar threads

顶部