Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
4-66412
AlexandrH
2001-11-19 11:20
2002.01.21
Как получить дескриптор активного окна.


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


6-66324
Vaddya
2001-09-06 00:27
2002.01.21
Поиск сервера для TClientSocket


6-66327
Юра
2001-10-29 13:18
2002.01.21
О TIdMappedPortTCP


6-66329
atmospheric
2001-10-16 18:55
2002.01.21
SHARE ??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский