我们去上学啦第2季:delphi如何自动点击窗体中的任意一个坐标点?

来源:百度文库 编辑:高校问答 时间:2024/04/28 11:44:00
比如说我做了个窗体,如果实现程序运行时自动点击窗体中的某个点,如坐标(50,50)从而实现这个点无论是按钮还是图片或是下载链接都能实现点击。哪位教下,有源码最好:)
具体点就是怎么写关于MOUSEEVENTF_LEFTDOWN等的代码

用以下函数实现^_^(虽然是C++定义写法,但是Delphi定义与之相同)
VOID mouse_event( DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);

参数说明一下:)
dwFlags 指定鼠标的动作,移动或者点击,可有以下参数
MOUSEEVENTF_ABSOLUTE 指定其后参数dx,dy为绝对坐标,否则为相对坐标
MOUSEEVENTF_MOVE 指定移动鼠标
MOUSEEVENTF_LEFTDOWN 指定鼠标左键按下
MOUSEEVENTF_LEFTUP 指定鼠标左键弹起
dx,dy 指定了鼠标的坐标,如果第一个参数有MOUSEEVENTF_ABSOLUTE 则为绝对坐标,否则为相对坐标。
最后两个参数一般设为0,具体解释请参考MSDN或Delphi帮助。

如果需要程序运行时自动点击窗体中某个点,首先需要获取该点的绝对坐标(相对于整个屏幕),一般是将窗体的坐标+上窗体内的坐标。如(50,50)的绝对坐标可能是(Form1.Left+50,Form1.Top+50),此值不一定准确,需要自己修正。
mouse_event(MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_ABSOLUTE,Form1.Left+50,Form1.Top+50,0,0);

mouse_event(MOUSEEVENTF_LEFTUP or MOUSEEVENTF_ABSOLUTE,Form1.Left+50,Form1.Top+50,0,0);
这样就可以实现模拟鼠标点击的效果。