Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Пропускать сообщения от клавиатуры и мышки в своем приложении

Delphi , ОС и Железо , Сообщения Windows

Пропускать сообщения от клавиатуры и мышки в своем приложении

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
 Connect a handler to the Application.OnMessage event. 
 You have to do this in code: 
}

   private
     procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
     { Private declarations }
   public
     { Public declarations }
   end;

    var
   Form1: TForm1;

 implementation

 {$R *.dfm}

 var
   FConnected: Boolean;

 procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
 begin
   if FConnected then
     case Msg.Message of
       WM_KEYFIRST..WM_KEYLAST,     // Keyboard events 
      WM_MOUSEFIRST..WM_MOUSELAST: // Mouse events 
        Handled := True
     end;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   Application.OnMessage := AppOnMessage;
 end;

 procedure TForm1.FormDestroy(Sender: TObject);
 begin
   Application.OnMessage := nil;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   FConnected := True;
 end;

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

Процедура AppOnMessage связана с событием Application.OnMessage, которое вызывается каждый раз, когда приложение получает сообщение.

В процедуре AppOnMessage проверяется переменная FConnected. Если она истинна, то обрабатывается сообщение.

Обрабатываемые сообщения - это события клавиатуры (от WM_KEYFIRST до WM_KEYLAST) и события мыши (от WM_MOUSEFIRST до WM_MOUSELAST). Включают в себя такие действия, как нажатие кнопок, отпускание кнопок, перемещение мыши, клики и т.д.

В процедуре FormCreate устанавливается связь между процедурой AppOnMessage и событием Application.OnMessage.

В процедуре FormDestroy разрывается эта связь при закрытии формы.

Процедура Button1Click устанавливает переменную FConnected в истинное значение, что позволяет начать перехват сообщений после нажатия кнопки.

Альтернативное решение:

Вместо обработки всех событий клавиатуры и мыши в одном обработчике событий можно использовать отдельные обработчики для каждого типа события. Например, если нужно только обрабатывать клики мыши, можно создать отдельный обработчик для событий OnMouseDown, OnMouseMove и OnMouseUp.

Также можно использовать функцию GetMessage для извлечения сообщений из очереди сообщений вместо использования события Application.OnMessage.

Пример:

var
  Msg: TMsg;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  FConnected := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FConnected := False;
end;

procedure TForm1.WndProc(var Message: TMessage);
begin
  if FConnected and (Message.Msg >= WM_KEYFIRST and Message.Msg <= WM_KEYLAST) then
    Handled := True
  else if FConnected and (Message.Msg >= WM_MOUSEFIRST and Message.Msg <= WM_MOUSELAST) then
    Handled := True;

  inherited;
end;

В этом примере процедура WndProc переопределяется для обработки сообщений. Переменная FConnected определяет, следует ли обрабатывать сообщение или нет. Если сообщение - это событие клавиатуры или событие мыши и FConnected истинно, то устанавливается значение Handled в истинное. Затем вызывается метод наследника для обработки остального сообщения.

В приложении на Delphi необходимо подключить обработчик события Application.OnMessage, чтобы пропускать сообщения от клавиатуры и мышки в своем приложении.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сообщения Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:33:14/0.0032150745391846/0