我在我的游戏程序中写到这样一段代码
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{if(wParam==WM_RBUTTONDOWN)
{
CPoint point1;
point1.x=200;
point1.y=300;
mouse_event(MOUSEEVENTF_LEFTDOWN,point1.x,point1.y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);
}
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
实现鼠标的随机移动,但是如果这样写的话在游戏中启动鼠标右键,游戏人物并不移动,如果把
mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);这句话删除掉,人物就能移动,但是因为
左键一直没有弹起,人物就会随机不停的往前走,而不会在我想要的地方停,请教高手急救!!!!!!!!!!!!!!!!!!在线等!(在游戏中右键没有任何功能,由左键控制行走)
解决后分全送。

解决方案 »

  1.   

    是不是mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);里面有用到线程,或消息可能在这个函数中被阻塞?
      

  2.   

    那可以一直用mousedown事件直到到达了希望的位置再用mouseup事件呀
      

  3.   

    问题就是我的mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);好象被屏蔽了样的,根本没有办法让任务停留在我想要的地方
      

  4.   

    我在DONW和UP间加上了Sleep(),但还是没用,如果消息在这个函数中被阻塞。那我该怎么办啊?为什么大家在游戏里面控制鼠标就没有遇到这种情况啊!
      

  5.   

    MSG inMsg;
    while (需要继续移动)
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN,point1.x,point1.y,0,0);
        if(PeekMessage(&inMsg, NULL, 0, 0, PM_REMOVE))
        {
            if (inMsg.message == WM_QUIT)
            {
                退出;
            }
        }
    }
    mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);
      

  6.   

    上面没有写完全
    MSG inMsg;
    while (需要继续移动)
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN,point1.x,point1.y,0,0);
        if(PeekMessage(&inMsg, NULL, 0, 0, PM_REMOVE))
        {
            if (inMsg.message == WM_QUIT)
            {
                退出;
            }
            else
            {
                TranslateMessage(&inMsg);
                DispatchMessage(&inMsg);
            }
        }
        sleep(1);
    }
    mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);
      

  7.   

    yunyu97() ,我按照你写的给我中间加上去了。可以依然不管用,这是怎么回事啊,能加你细聊吗。我的QQ:44456964。很急。帮帮我~~~~~~~~
      

  8.   

    要模拟鼠标,必须先将鼠标移动到指定的位置才可以使用mouse_event函数,不知道你的鼠标位置是否正确
      

  9.   

    SetCursorPos(point1.x,point1.y)
    我使用了这个函数,我做的是将一个窗体做为子窗体嵌入游戏中,我想按OK键后
    mouse_event(MOUSEEVENTF_LEFTDOWN,point1.x,point1.y,0,0);
    if(PeekMessage(&inMsg, NULL, 0, 0, PM_REMOVE))
    {
    if (inMsg.message == WM_QUIT)
    {}
    else
    {
    TranslateMessage(&inMsg);
    DispatchMessage(&inMsg);
    }
    }
    Sleep(1);
    }
    mouse_event(MOUSEEVENTF_LEFTUP,point1.x,point1.y,0,0);
    可鼠标只指向了地方却没有点击下去。忙活了几天了。郁闷