Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- procedure FormCreate(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- private
- { Private declarations }
- FEvent1: Cardinal;
- FEvent2: Cardinal;
- procedure WinEventProc(HWINEVENTHOOK: THandle; Event: DWORD; hWnd: hWnd; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- uses
- DateUtils;
- procedure WinEventProcCallBack(HWINEVENTHOOK: THandle; Event: DWORD; hWnd: hWnd; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
- begin
- Form1.WinEventProc(HWINEVENTHOOK, Event, hWnd, idObject, idChild, idEventThread, dwmsEventTime);
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- UnhookWinEvent(FEvent1);
- UnhookWinEvent(FEvent2);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- FEvent1 := SetWinEventHook(EVENT_OBJECT_CREATE, EVENT_OBJECT_CREATE, 0, @WinEventProcCallBack, 0, 0, WINEVENT_OUTOFCONTEXT);
- FEvent2 := SetWinEventHook(EVENT_OBJECT_DESTROY, EVENT_OBJECT_DESTROY, 0, @WinEventProcCallBack, 0, 0, WINEVENT_OUTOFCONTEXT);
- end;
- procedure TForm1.WinEventProc(HWINEVENTHOOK: THandle; Event: DWORD; hWnd: hWnd; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD);
- var
- ClassName: string;
- EventTime: TDateTime;
- begin
- EventTime := IncMilliSecond(Now, dwmsEventTime - GetTickCount);
- SetLength(ClassName, 255);
- SetLength(ClassName, GetClassName(hWnd, pChar(ClassName), 255));
- if pChar(ClassName) = 'SysDragImage' then
- begin
- if Event = EVENT_OBJECT_CREATE then
- Memo1.Lines.Add(TimeToStr(EventTime) + ': Drag Start')
- else
- Memo1.Lines.Add(TimeToStr(EventTime) + ': Drag End');
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement