天天看點

對mouse_even模拟滑鼠操作函數的一點認識

今天看了一篇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一起使用,可以達到移動滑鼠的效果,但是不知道這個坐标值是怎麼算的,好像不是按照一個象素一個象素算的。難道是坐标映射模式的問題?我再看看吧