今天看了一篇mouse_event函数用于模拟鼠标选择文本的文章,学习了一下这个函数。有一点认识记录如下:
VOID mouse_event(
DWORD dwFlags, // 用来指示模拟怎么养的鼠标动作,并且可以指定鼠标动作的位置参数是绝对量还是相对量
DWORD dx, // 水平方向的鼠标位置移动量
DWORD dy, // 垂直方向的鼠标位置移动量
DWORD dwData, // 鼠标滚轮的移动量
DWORD dwExtraInfo
// 32位的附加信息
);
1. dwFlags这个量可以设置MOUSEEVENTF_ABSOLUTE来指定dx,dy表示的是绝对的位置改变量
2. 当dwFlags这个量设置了MOUSEEVENT_MOVE时,dx,dy的值取值在0~65,535之间,此时的坐标为整个屏幕的坐标,也就是说(0,0)对应的是屏幕左上角,(65,535,65,535)对应的是屏幕右下角。所以,对于不同分辨率的屏幕应该采取换算。例如1024×768的分辨率下,(x,y)就应该换算成((65535/1024)*x, (65535/768)*y)
问题:
1. 似乎当MOUSEEVENT_MOVE被置位1时,dx和dy才有实际意义,否则,他们的值都不会对鼠标位置有影响。不知这点是否正确~~!
2. 当MOUSEEVENT_MOVE置位1时,可以配合其他的flag、如MOUSEEVENTF_LEFTDOWN一起使用,可以达到移动鼠标的效果,但是不知道这个坐标值是怎么算的,好像不是按照一个象素一个象素算的。难道是坐标映射模式的问题?我再看看吧