Как изменить поведение кнопок мыши с помощью WinAPI? - PullRequest
0 голосов
/ 03 августа 2020

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

Когда я пробую что-то вроде:

    case WM_LBUTTONDOWN:
        mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
        return 1;
    case WM_RBUTTONDOWN:
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        return 1;

Мое приложение не отвечает (кажется, я создаю, пока (1), потому что, когда я нажимаю WM_LBUTTONDOWN, я отправляю WM_RBUTTONDOWN, а затем я отправляю WM_LBUTTONDOWN,…).

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Посмотрите на функцию SwapMouseButton():

Обращает или восстанавливает значение левой и правой кнопок мыши.

...

Параметры

fSwap

Тип: BOOL

Если этот параметр TRUE, левая кнопка генерирует правую- сообщения кнопок, а правая кнопка генерирует сообщения левой кнопки . Если этот параметр равен FALSE, кнопки восстанавливаются в исходное значение.

0 голосов
/ 04 августа 2020

Как предоставил Реми Лебо, мы можем использовать SwapMouseButton для обмена значениями левой и правой кнопок мыши.

И согласно документу:

Смена кнопок предназначена для удобства людей, использующих мышь левой рукой. Функция SwapMouseButton обычно вызывается только панелью управления. Хотя приложение может вызывать функцию бесплатно, мышь является общим ресурсом, и изменение значения ее кнопок на противоположное влияет на все приложения.

Итак, нам нужно вызвать SetMouseButton(FALSE) до завершения программы. для восстановления мыши (при необходимости).

Конечно, если вам нужно изменить поведение в середине программы, но вы не можете определить, поменялось ли значение текущей мыши, вы можете использовать GetSystemMetrics(SM_SWAPBUTTON) функция, чтобы проверить, поменялись ли местами текущие левая и правая кнопки мыши. И ненулевое значение, если поменялись местами значения левой и правой кнопок мыши; в противном случае 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...