【问题标题】:Simulate mouse left bottom and right bottom模拟鼠标左下和右下
【发布时间】:2018-05-03 03:25:57
【问题描述】:

我想模拟鼠标移动,但不仅仅是一种方式。我需要我的鼠标先到左下角,然后再到右下角,最后再回到左下角。

  1. 左下角,2 秒
  2. 右下角,2 秒
  3. 再次左下角,2 秒

但我不能让它工作。我需要做什么?这可能吗?

如果我们不能同时做到这三个;我们可以先做 2 秒。即仅左下角 2 秒,然后右下角 2 秒。

我在ahk 有这个,但它只有一种方式,总是去左下角。我需要它在C++

    #NoEnv
SendMode Input

~F6::Suspend
~End::ExitApp
~F5::Reload

LCtrl & ~LButton::
Loop
    If GetKeyState("LButton", "LCtrl") {
        Sleep, 3
        moveAmount := (moveAmount = 0.2) ? 3 : -1
        mouseXY(moveAmount,2)
    }
    else
    break

~LButton::
Loop
    If GetKeyState("LButton") {
        Sleep, 3
        moveAmount := (moveAmount = 0.2) ? 3 : -1
        mouseXY(moveAmount,2)
    }
    else
    break

Return



mouseXY(x,y)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

【问题讨论】:

    标签: winapi mouseevent mouse simulation


    【解决方案1】:

    您应该使用GetAsyncKeyState,而不是GetKeyStateGetKeyState 返回发送最后一条消息时捕获的值。

    另外,请查看 MSDN 上的 SendInputmouse_event 早已被弃用。

    请在您的问题中添加标签“winapi”。

    【讨论】:

    • 在这种特殊情况下,您需要注入单个鼠标移动事件,并以延迟分隔,使用 SendInput 而不是 mouse_event 没有任何好处。
    • @IInspectable 但是如果你从头开始,你也可以使用非弃用函数
    • @DavidHeffernan:mouse_event 尚未被弃用。它已被SendInput 取代。当然,使用SendInput 并没有什么坏处。但我对这个答案的评论表明,使用mouse_event 在某种程度上是错误的,但事实并非如此。如果它建议使用不同的 API 调用,它至少应该解释原因。
    • MSDN 说“此功能已被取代。请改用 SendInput。”因此,如果它说不要使用它,请不要使用它。我不知道我们为什么要讨论这个,
    猜你喜欢
    • 2010-12-03
    • 2013-12-22
    • 1970-01-01
    • 2011-01-05
    • 2017-12-25
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多