![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Hook для главной формы приложенияDelphi , Файловая система , DLL и PlugInsАвтор: Xavier Pacheco unit HookMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type THookForm = class(TForm) SendBtn: TButton; GroupBox1: TGroupBox; LogList: TListBox; DoLog: TCheckBox; ExitBtn: TButton; procedure SendBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ExitBtnClick(Sender: TObject); private function AppWindowHook(var Message: TMessage): Boolean; end; var HookForm: THookForm; implementation {$R *.DFM} procedure THookForm.FormCreate(Sender: TObject); begin Application.HookMainWindow(AppWindowHook); end; procedure THookForm.FormDestroy(Sender: TObject); begin Application.UnhookMainWindow(AppWindowHook); end; function THookForm.AppWindowHook(var Message: TMessage): Boolean; const LogStr = 'Message ID: $%x, WParam: $%x, LParam: $%x'; begin Result := True; if DoLog.Checked then with Message do LogList.Items.Add(Format(LogStr, [Msg, WParam, LParam])); end; procedure THookForm.SendBtnClick(Sender: TObject); begin SendMessage(Application.Handle, WM_NULL, 0, 0); end; procedure THookForm.ExitBtnClick(Sender: TObject); begin Close; end; end. Программа на Delphi, которая реализует хук для основного окна приложения с помощью класса Интерфейс
Секция интерфейса определяет класс Implementation
В секции реализации мы определили три процедуры:
1. AppWindowHook
Функция SendBtnClick и ExitBtnClick
Процедура Замечания
В статье описывается пример использования хука для главной формы приложения в Delphi, который позволяет логировать все сообщения между приложением и операционной системой. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: DLL и PlugIns ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |