2010-06-24 89 views
3

我知道如何使用User32 SendInput方法来激发点击,并且我需要的是类似的User32方法,但要获取当前的鼠标按钮状态。如何使用Win32/User32库检查当前的鼠标按钮状态?

类似的东西来:

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

功能GetCursorPos给我的当前光标位置。我需要的是左键状态(如果它被点击或没有)。有这样的功能吗?

+0

[检查鼠标LButton是否已关闭]可能的重复(http://stackoverflow.com/questions/1275894/check-if-mouse-lbutton-is-down) – ST3 2013-09-16 12:27:10

回答

3

有一个名为GetAsyncKeyState的方法。该方法的签名如下:

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

然后你只需把它通过鼠标左键代码(VK_LBUTTON = 0×01),和您去。

更多信息请直接从MSDN

+2

“然后你简单地称它为传递左边鼠标键码(VK_LBUTTON = 0x01),然后离开。“ 这真是让人误解。您必须分手并分析返回的短片以创建状态数据。这使得这个问题的答案有些不完整。 – 2015-06-16 14:37:10

3

使用GetAsyncKeyState,引用MSDN:

的GetAsyncKeyState函数工作 用鼠标按钮。但是,它会检查 上的物理鼠标 按钮的状态,而不是物理按钮 映射到的逻辑鼠标 按钮。例如,呼叫 GetAsyncKeyState(VK_LBUTTON)总是 返回鼠标左键物理状态 ,不管它是否将 映射到左或右逻辑 鼠标按钮。通过调用 GetSystemMetrics(SM_SWAPBUTTON),您可以确定系统的物理 鼠标按钮到逻辑鼠标按钮 的当前映射。