关于在程序中控制鼠标动作的问题(在线等待!!!)

cnsuyong 2002-10-11 09:52:18
1、移动鼠标到屏幕指定位置(俺知道可以用SetCursorPos),并且该位置不在俺的应用程序窗口范围内,那么鼠标的热点(HOT SPOT)应该唯一属于某个位于最前端的对象(至少还有桌面吧),请问,如何获得该对象的句柄?
2、基于上面的控制(假如暂时没有获得句柄的有效途径),俺想编写两个过程:
procedure MouseLClick(ScrX, ScrY: Integer);//鼠标左键单击
procedure MouseLDoubleClick(ScrX, ScrY: Integer);//鼠标左键双击
而不关心该位置是什么对象(包括对象),应该如何实现?
3、鼠标移动到主菜单“文件”,左键单击,弹出菜单项,鼠标移动到“关闭”,左键单击。问题:如何通过程序控制来实现这一系列动作(包括外观,如鼠标轨迹可以用for语句和SetCursorPos来实现)?

帮俺解决任何一个问题俺都都至少赠送100分!
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovedata 2002-10-12
  • 打赏
  • 举报
回复
学习一下
chenypluck 2002-10-11
  • 打赏
  • 举报
回复
学习
cnsuyong 2002-10-11
  • 打赏
  • 举报
回复
谢谢楼上各位!俺的目标包括移动鼠标,俺已经实现了,关键是在未知对象的区域鼠标单击和双击动作(Mouse、Screen等变量提供的内容太匮乏了,它们更终于为开发者提供状态信息,而未提供如鼠标单击、双击等消息的发送)。

问题1、2已经解决,特别感谢“oracle_lover(数据库情人)”。

顺便再问:移动鼠标到桌面图标“我的电脑”的位置,如何通过程序实现双击该图标?
ikumei 2002-10-11
  • 打赏
  • 举报
回复
通过mouse变量也可以获得当前鼠标在屏幕上的位置
bengbeng24 2002-10-11
  • 打赏
  • 举报
回复
控制鼠标移动范围
Var
pos:TRect;
...
pos:=edit1.BoundsRect;
MapWindowPoints(Handle,0,pos,2);
clipcursor(@pos);
ikumei 2002-10-11
  • 打赏
  • 举报
回复
delphi内部定义了一个mouse变量,不知道你指的是不是这个
mouse变量是tmouse类型的,象screen变量那样自动创建的
在delphi中可以直接使用他们
通过操纵mouse变量可以指定鼠标的位置等一系列操作
在mouse变量中鼠标的位置正是以屏幕坐标为基准的
关于mouse变量的进一步说明,可以查阅帮助获取更多信息
oracle_lover 2002-10-11
  • 打赏
  • 举报
回复
var
ClassName: PChar;
ptCursor: TPoint;
hWndOver: HWND;
begin
GetCursorPos(ptCursor); //获取鼠标位置
hWndOver := WindowFromPoint(ptCursor); //获取鼠标下控件的句柄
GetMem(ClassName, 100);
try
GetClassName(hWndOver, ClassName, 100); //获取鼠标下控件的类名
edit1.Text :=String(ClassName); //在自己的控件中显示该控件的类名
finally
FreeMem(ClassName);
end; //end of try
end;
cnsuyong 2002-10-11
  • 打赏
  • 举报
回复
写错了一个地方:(包括对象)应为(包括窗口)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧