Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отлов нажатий клавиш мыши / 5 сообщений из 5, страница 1 из 1
27.09.2017, 00:01:48
    #39526800
Miracle9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отлов нажатий клавиш мыши
Отлавливаю так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sMemo;

type
  TForm5 = class(TForm)
    sMemo1: TsMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

var
  MouseHook: HHOOK;

function LowLevelMouseProc(nCode: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
begin
  Result:= CallNextHookEx(MouseHook, nCode, WParam, LParam);
  case WParam of
    WM_RBUTTONDOWN: Form5.sMemo1.Lines.Add('RBUTTONDOWN');
    WM_MBUTTONDOWN: Form5.sMemo1.Lines.Add('MBUTTONDOWN');
    WM_XBUTTONDOWN: Form5.sMemo1.Lines.Add('XBUTTONDOWN');
  end;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  MouseHook:= SetWindowsHookEx(WH_MOUSE_LL, @LowLevelMouseProc, HInstance, 0);
end;

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnhookWindowsHookEx(MouseHook);
end;

end.


Как узнать какая из кнопка из XBUTTON, первая или вторая, была нажата?
...
Рейтинг: 0 / 0
27.09.2017, 00:08:11
    #39526805
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отлов нажатий клавиш мыши
Miracle9Как узнать какая из кнопка из XBUTTON, первая или вторая, была нажата?

Для этого там есть LParam. Читай MSDN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.09.2017, 00:22:40
    #39526809
Miracle9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отлов нажатий клавиш мыши
Так?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sMemo;

type
  TForm5 = class(TForm)
    sMemo1: TsMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

var
  MouseHook: HHOOK;

function LowLevelMouseProc(nCode: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
var
  Msg: PEVENTMSG;
begin
  Result:= CallNextHookEx(MouseHook, nCode, WParam, LParam);
  Msg := Pointer(lParam);
  case WParam of
    WM_RBUTTONDOWN: Form5.sMemo1.Lines.Add('RBUTTON');
    WM_MBUTTONDOWN: Form5.sMemo1.Lines.Add('MBUTTON');
    WM_XBUTTONDOWN: case Msg.paramH of
                      65536:  Form5.sMemo1.Lines.Add('XBUTTON1');
                      131072: Form5.sMemo1.Lines.Add('XBUTTON2');
                    end;
  end;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  MouseHook:= SetWindowsHookEx(WH_MOUSE_LL, @LowLevelMouseProc, HInstance, 0);
end;

procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnhookWindowsHookEx(MouseHook);
end;

end.

...
Рейтинг: 0 / 0
27.09.2017, 14:47:34
    #39527146
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отлов нажатий клавиш мыши
Интересно, а не может ли быть нажато сразу ДВЕ кнопки в одном сообщении?

Потому что волшебные константы 131072 и 65536 - это же просто биты, это множество.
А в множестве может быть несколько элементов выставлено.
...
Рейтинг: 0 / 0
27.09.2017, 17:36:13
    #39527241
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отлов нажатий клавиш мыши
Miracle9,

вот ты чудак. Воспользуйся, наконец, поиском
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отлов нажатий клавиш мыши / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]