Как проверить текущее состояние кнопки мыши с помощью библиотеки Win32 / User32? - PullRequest
3 голосов
/ 24 июня 2010

Я знаю, как стимулировать клики с помощью метода User32 SendInput, и мне нужен аналогичный метод User32, но для получения текущего состояния кнопки мыши.

Что-то похожее на:

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

Функция GetCursorPos выдает мне текущую позицию курсора. Что мне нужно, это состояние левой кнопки (если она нажата или нет). Есть ли такая функция?

Ответы [ 2 ]

4 голосов
/ 24 июня 2010

Есть метод GetAsyncKeyState. Подпись метода выглядит так:

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

Затем вы просто вызываете его, передав код левой клавиши мыши (VK_LBUTTON = 0x01), и начинаете.

Больше информации от MSDN .

3 голосов
/ 24 июня 2010

Использование GetAsyncKeyState , для цитирования MSDN:

Функция GetAsyncKeyState работает с кнопками мыши. Тем не менее, это проверяет на состояние физической мыши кнопки, а не на логической мыши кнопки, которые физические кнопки сопоставлены с. Например, звонок GetAsyncKeyState (VK_LBUTTON) всегда возвращает состояние левого физического кнопка мыши, независимо от того, отображается на левый или правый логический кнопка мыши. Вы можете определить текущее отображение системы физического кнопки мыши для логических кнопок мыши позвонив по телефону GetSystemMetrics (SM_SWAPBUTTON).

...