Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.21;
Скачать: CL | DM;

Вниз

Lovushka   Найти похожие ветки 

 
StAL   (2001-06-21 13:27) [3]

Ув. Юрий. Пожалуйста, посмотрите. Этот код я списал с Вашего дилога с Masik, когда Вы разобрались с MsgHandle. Что здесь не так?
Это DLL
library AppH;

uses
SysUtils,
windows,
messages,
Classes;

{$R *.RES}
const
wm_WindCreat = wm_User + 511;
wm_WindDestr = wm_user + 512;
var
ShellHook: HHOOK = 0;

function ShellHookProc(HookCode: Integer; wParam: Longint; lParam: Longint): Longint; stdcall;
begin
Result := 0;
if (HookCode = HSHELL_WINDOWCREATED) or (HookCode = HSHELL_WINDOWDESTROYED) then
begin
if HookCode = HSHELL_WINDOWCREATED then
PostMessage(findwindow("TWinLooker","WinLooker"), wm_WindCreat, WParam, lParam);
if HookCode = HSHELL_WINDOWDESTROYED then
PostMessage(findwindow("TWinLooker","WinLooker"), wm_WindDestr, WParam, lParam);
end
else
Result:=CallNextHookEx(ShellHook, HookCode, wParam, lParam);
end;

function SetHook: boolean; export;
begin
ShellHook := SetWindowsHookEx(WH_shell, @ShellHookProc, hInstance, 0);
Result := ShellHook <> 0
end;

function RemoveHook: boolean; export
begin
Result := UnhookWindowsHookEx(shellhook);
end;
exports SetHook,
RemoveHook;
begin
end.

А это unit

unit Unit1;

interface

uses
SysUtils,WinTypes,WinProcs,Messages,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;
const
wm_WindCreat = wm_User + 511;
wm_WindDestr = wm_user + 512;
DLLName = "AppH.dll";
type
TWinLooker = class(TForm)
wndlist: TListBox;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure WMWindCreat (Var M : TMessage); message wm_WindCreat;
procedure WMWindDestr (Var M : TMessage); message wm_WindDestr;
public
{ Public declarations }
end;

function SetHook: boolean; external DLLName name "SetHook";
function RemoveHook: boolean; external DLLName name "RemoveHook";

var
WinLooker: TWinLooker;
buff: ARRAY [0..127] OF Char;
WinF:string;
implementation

{$R *.DFM}

procedure TWinLooker.WMWindCreat(var M: TMessage);
begin
GetWindowText(m.WParam, buff, sizeof(buff));
wndlist.items.Add("Запущено приложение: ""+strpas(buff)+"" "+timetostr(time)+" "+ datetostr(date));
end;

procedure TWinLooker.WMWindDestr(var M: TMessage);
begin
GetWindowText(m.WParam, buff, sizeof(buff));
wndlist.items.Add("Закрыто приложение : ""+strpas(buff)+"" "+timetostr(time)+" "+ datetostr(date));
end;

procedure TWinLooker.FormDestroy(Sender: TObject);
begin
removehook;
wndlist.items.SaveToFile(winf);
end;

procedure TWinLooker.FormCreate(Sender: TObject);
begin
sethook;
winf:=extractfilepath(application.exename)+"data\"+datetostr(date);
if fileexists(winf) then
WndList.Items.LoadFromFile(winf);
end;

end.

Помогите пожалуйста!




Страницы: 1 вся ветка

Текущий архив: 2002.01.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
1-66240
msys
2002-01-02 21:06
2002.01.21
Кодировка


1-66242
Ivanov
2002-01-03 12:25
2002.01.21
Люди, подскажите алгоритм


1-66236
HELPER
2002-01-01 04:50
2002.01.21
Microsfot agent


1-66243
Mis
2002-01-02 13:41
2002.01.21
Как сделать паузу.


3-66185
DS
2001-12-17 16:51
2002.01.21
Кирица в DBD