delphi如何获取鼠标当前位置颜色

delphi如何获取鼠标当前位置颜色,第1张

使用这个函数,

COLORREF GetPixel(

HDC hdc, // handle to DC

int nXPos, // x-coordinate of pixel

int nYPos // y-coordinate of pixel

);

可以调用之前调用GerCursorPos 来获取鼠标在屏幕上的位置,

如果仅仅是为了取色的话,桌面窗口的HDC的获取,调用GetDC(NULL)来获取到,(不知到delphi里NULL写成什么样子,写成 GetDC(0)也可以。)

在把GerCursorPos 获取的屏幕坐标也给传过去,GetPixel即可返回屏幕坐标的相应颜色值了。

COLORREF 是一个 DWORD 类型,自己分析高低为就可以知道RGB值了。

可以参考使用GetRValue,GetGValue,GetBValue 宏

钩子类型:WH_MOUSE_LL 这个是全局的 值为14; WH_MOUSE是局部的 值为7

数据结构:PMouseHookStruct

鼠标坐标保存在钩子函数的lParam参数中, 如下:

PMouseHookStruct(lParam)ptX

PMouseHookStruct(lParam)ptY

这个应该可以记录鼠标轨迹了。

如果要将即时的坐标值回传给调用钩子的exe程序, 那么重载WndProc方法, 这样的话需要在exe端自定义一个消息标示符, 在挂钩的时候传入, 在钩子程序SendMessage的时候把这个消息标示符一起发送到exe端, exe端判断Messagemsg是否等于自定义的消息标示符, 如果Ture则保存坐标inherited, 否则直接inherited。

你的意思是不是:只要鼠标动了,然后,窗体的坐标就是鼠标的坐标?也就是说,窗口跟着鼠标走?如果是那样的话,下面的这个程序就可以了……

procedure TForm1Timer1Timer(Sender: TObject);

var

P: TPoint;

begin

GetCursorPos(P);

form1Caption:= Format('X: %d, Y: %d',[PX, PY]);

form1left:=pX;

form1top:=pY;

form1Show;

end;

不是代码问题

是因为 SetCursorPos(x,y); 的x y是针对屏幕的坐标

你设置的坐标如果不是 你窗体的范围内

那就相当于 是你用鼠标点一下程序外面

就自动激活其他界面了 原本的窗体自然隐藏了

至于你的鼠标位置

可以用

var

P: TPoint;

begin

GetCursorPos(P); 获取

如果是想在panel 的onmousedown事件里 判断当前鼠标位置

那算法就是

var

x1,y1,i,j:integer; //

begin

i:= round((Form1Width-form1ClientWidth)/2); //边框

j:= (Form1Height-form1ClientHeight)-i; //标题栏高度

//showmessage(inttostr(form1ClientWidth-Form1Width));

x1:=Form1Left+Panel1Left+i+x;

y1:=Form1Top+Panel1Top+j+y; //控制鼠标

showmessage(inttostr(x1));

showmessage(inttostr(y1));

end;

var

x,y:integer; //

begin

x:=614;

y:=282; //控制鼠标

SetCursorPos(x,y); //

Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //开始点击

Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0); //d出

end;

以上就是关于delphi如何获取鼠标当前位置颜色全部的内容,包括:delphi如何获取鼠标当前位置颜色、delphi 鼠标钩子记录鼠标运行轨迹、delphi 如果获得窗口坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9330919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存