本文最早于2009年6月1日在编程论坛(programbbs.com)上发表,页面地址:http://programbbs.com/bbs/view12-20849-1.htm 。
众所周知,当鼠标指针移动到一些对象上时,指针的图片就会发生变化,以显示对象的相关属性。我设计了这么一个程序:它可以从屏幕上的某一点开始以方形螺旋线的方式从中心向四周移动,当指针图片变为指定的图片时就自动单击鼠标左键。本程序还兼有截取鼠标指针图片的功能。程序的外观如下:
图1
图2
鼠标指针将按图2所示的样子从中心向四周移动。图中的黑点表示指针停留的点,由于指针图片的变化需要时间,所以指针要停留一段的时间后才可以进行截图。如图1所示:程序中“开始位置”是指图2中的中心点,可以是屏幕上的任意一点。“移动步长”是指图2中黑点与黑点之间的距离,必需大于等于1。屏幕上的对象一般都不会很小,只要指针与对象有重叠,指针的图片就会发生变化。所以可以适当的调节“移动步长”来提高搜索速度。“搜索半径”是指从中心到边缘的距离,可以适当的调整避免搜索整个屏幕。“停留时间”就是前面说到的指针在黑点上的停留时间。“操作按键”是指开始或停止搜索的按键,这是一个虚键码值,可以用VK开头的常量也可以用$开头的十六进制的数值。按下放开指定的键开始操作,再按下放开相同的键停止操作。“背景颜色”时指当前导入的指针图片的背景颜色,可以不使用。
项目文件中的MKHook.dll文件是一个按键钩子程序,用以监视用户指定的操作按键。该文件原名Project1.dll,关于该文件的更多信息请参考文章:《一个简单的按键钩子程序》。本程序使用BitmapData.pas文件中的对象来截取鼠标指针图片和比对图片,更多信息请参考文章:《Delphi下实现全屏快速找图找色》。本程序使用SIMouseKeyboard.pas文件中的函数来模拟鼠标操作,更多信息请参考文章:《Delphi下利用SendInput模拟鼠标键盘》和《Delphi下利用WinIo模拟鼠标键盘详解》。
项目文件下载(点这里)