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

解决方案 »

  1.   

    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;
      

  2.   

    delphi内部定义了一个mouse变量,不知道你指的是不是这个
    mouse变量是tmouse类型的,象screen变量那样自动创建的
    在delphi中可以直接使用他们
    通过操纵mouse变量可以指定鼠标的位置等一系列操作
    在mouse变量中鼠标的位置正是以屏幕坐标为基准的
    关于mouse变量的进一步说明,可以查阅帮助获取更多信息
      

  3.   

    控制鼠标移动范围
    Var
     pos:TRect;
    ...
    pos:=edit1.BoundsRect;
    MapWindowPoints(Handle,0,pos,2);
    clipcursor(@pos);
      

  4.   

    通过mouse变量也可以获得当前鼠标在屏幕上的位置
      

  5.   

    谢谢楼上各位!俺的目标包括移动鼠标,俺已经实现了,关键是在未知对象的区域鼠标单击和双击动作(Mouse、Screen等变量提供的内容太匮乏了,它们更终于为开发者提供状态信息,而未提供如鼠标单击、双击等消息的发送)。问题1、2已经解决,特别感谢“oracle_lover(数据库情人)”。顺便再问:移动鼠标到桌面图标“我的电脑”的位置,如何通过程序实现双击该图标?