gpt4 book ai didi

c# - SetCursorPos 不工作

转载 作者:行者123 更新时间:2023-11-30 17:59:50 24 4
gpt4 key购买 nike

我正在使用以下库: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 中使用低级鼠标钩子(Hook)。我创建了一个计时器来检查上次触发鼠标移动事件的时间,如果它比给定时间长,我将鼠标移动到左上角使用 SetCursorPos(0,0) 的屏幕

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

我确信 oldPos 值是正确的,但是光标拒绝移动。这可能是由于我正在使用的图书馆吗?请帮忙。

[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;
}

最佳答案

我猜是这样的:

  1. 使用 SetCursor 将鼠标移动到 0,0。
  2. 调用 SetCursor 的行为会从您的 Hook 中生成一个鼠标移动事件。
  3. 您通过再次显示光标并将其放回之前的位置来响应鼠标移动。

关于c# - SetCursorPos 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com