请问大家
mouse_event(MOUSEEVENTF_MOVE,100,100,0,0);
这里100,100的单位是什么?
我试了一下,不是指象素。
MOUSEINPUT结构里面的dx,dy也是一样的,他们是以什么为单位的?typedef struct tagMOUSEINPUT {
    LONG    dx;
    LONG    dy;
    DWORD   mouseData;
    DWORD   dwFlags;
    DWORD   time;
    DWORD   dwExtraInfo;
} MOUSEINPUT

解决方案 »

  1.   

    表示鼠标按下的位置mouse_event最好配合SetCursorPos(x,y)函数一起使用,与Keybd_event类似,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y 相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。若要得到Keybd_event和mouse_event函数的更详细的用法,可以查阅msdn。 
    下面是关于mouse_event的示例代码: 
    POINT lpPoint; 
    GetCursorPos(&lpPoint); 
    SetCursorPos(lpPoint.x, lpPoint.y); 
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); 
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
      

  2.   

    如果不想用SetCursorPos和mouse_event,而想用SendInput来移动鼠标的话,那就要关心一下dx,dy的单位,比方说下面这个应该是把鼠标移动到哪儿呢?我就搞不懂了,试了一下,不是移动到(100,100)象素的位置。INPUT *buffer = new INPUT[1]; 
        buffer->type = INPUT_MOUSE;
        buffer->mi.dx = 100;
        buffer->mi.dy = 100;
        buffer->mi.mouseData = 0;
        buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);
        buffer->mi.time = 0;
        buffer->mi.dwExtraInfo = 0;SendInput(1,buffer,sizeof(INPUT));同样的mouse_event(MOUSEEVENTF_MOVE,100,100,0,0);这个也是一样。