如何使用Win32 / User32库检查当前鼠标按钮状态?

时间:2010-06-24 01:41:26

标签: c# c++ winapi mouse

我知道如何使用User32 SendInput方法激发点击,我需要的是类似的User32方法,但要获取当前的鼠标按钮状态。

类似于:

public static extern bool GetCursorPos(ref System.Drawing.Point lpPoint);

函数GetCursorPos为我提供当前光标位置。我需要的是左按钮状态(如果它被点击或没有)。有这样的功能吗?

2 个答案:

答案 0 :(得分:4)

有一种名为GetAsyncKeyState的方法。方法签名如下所示:

[DllImport("user32.dll")] public static extern short GetAsyncKeyState(UInt16 virtualKeyCode);

然后你只需要调用它来传递鼠标左键代码(VK_LBUTTON = 0x01)然后离开。

直接来自MSDN的更多信息。

答案 1 :(得分:3)

使用GetAsyncKeyState,引用MSDN:

  

GetAsyncKeyState函数有效   用鼠标按钮。但是,它检查   关于物理鼠标的状态   按钮,不在逻辑鼠标上   物理按钮所在的按钮   映射到。例如,电话   始终是GetAsyncKeyState(VK_LBUTTON)   返回左侧物理状态   鼠标按钮,无论是否   映射到左或右逻辑   鼠标按钮。你可以确定   系统当前的物理映射   鼠标按钮到逻辑鼠标按钮   通过电话   GetSystemMetrics的(SM_SWAPBUTTON)。