SetCursorPos Not Working

本文关键字:Working Not SetCursorPos | 更新日期: 2023-09-27 18:35:02

我正在使用以下库:http://www.codeproject.com/Articles/28064/Global-Mouse-and-Keyboard-Library?fid=1518257&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&fr=51#xx0xx

帮助我在 Windows 7 中使用低级鼠标钩子。我创建了一个计时器来检查上次触发鼠标移动事件的时间,如果它长于给定时间,我使用 SetCursorPos(0,0( 将鼠标移动到屏幕的左上角

在移动鼠标之前,我获取了它的旧坐标,并保存了它们。这样,当我收到下一个 MouseMove 事件时,我可以替换其原始位置的鼠标。但是,在调用 SetCursorPos(oldPos.x, oldPos.y( 时,鼠标不会移动。

我确定旧的Pos值是正确的,但是光标拒绝移动。这可能是由于我正在使用的库吗?请帮忙。

[DllImport("user32.dll", SetLastError = true)]
    public static extern bool SetCursorPos(int X, int Y);
        [DllImport("user32.dll")]
    public static extern bool GetCursorPos(out POINT lpPoint);
void mouseHook_MouseMove(object sender, MouseEventArgs e)
    {
        //If the mouse was not visible, move it back to it's original position
        if (!mouseVisible)
        {
            mouseVisible = true;
            SetCursorPos(cursorPosition.x, cursorPosition.y);
        }
        //Update the last moved time.
        lastMoved = DateTime.Now;
    }
private void hideMouse(object sender, EventArgs e)
    {
        if (mouseVisible && (DateTime.Now - lastMoved) > new TimeSpan(0, 0, 0, mouseControl.timeTrackBar.Value))
        {
            log.Debug("Hiding mouse.");
            //Store the current mouse position.
            GetCursorPos(out cursorPosition);
            //Hide the mouse.
            SetCursorPos(0, 0);
            log.Debug("Moving cursor to 0,0");
            mouseVisible = false;
        }

SetCursorPos Not Working

我的猜测是,这就是发生的事情:

  1. 您可以使用 SetCursor 将鼠标移动到 0,0。
  2. 调用 SetCursor 的操作会从钩子生成鼠标移动事件。
  3. 您可以通过再次显示光标并将其放回之前的位置来响应鼠标移动。