powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отлов нажатий клавиш мыши
5 сообщений из 5, страница 1 из 1
Отлов нажатий клавиш мыши
    #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
Отлов нажатий клавиш мыши
    #39526805
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miracle9Как узнать какая из кнопка из XBUTTON, первая или вторая, была нажата?

Для этого там есть LParam. Читай MSDN.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отлов нажатий клавиш мыши
    #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
Отлов нажатий клавиш мыши
    #39527146
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а не может ли быть нажато сразу ДВЕ кнопки в одном сообщении?

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

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


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