我知道如何使用User32 SendInput方法激发点击,我需要的是类似的User32方法,但要获取当前的鼠标按钮状态。
类似于:
public static extern bool GetCursorPos(ref System.Drawing.Point lpPoint);
函数GetCursorPos为我提供当前光标位置。我需要的是左按钮状态(如果它被点击或没有)。有这样的功能吗?
答案 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)。