Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы со снятием ловушки


Страницы:   1 2 3

KygECHuK ©   (2006-05-10 09:22:00) 

При снятии ловушки прроиходит ошибка доступа памяти:



library W1N;

uses
 Windows,
 SySUtils,
 Messages,
 typeunit;
var
 SysHook  : HHook   = 0;
 flag     : boolean = true;
 Password : word    = 0;
 Wnd      : Hwnd    = 0;
procedure GetDLLData(var AGlobalData: pdllldata);stdcall; external 'mapping.dll' name 'GetDLLData';

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; export; stdcall;
var
 lpdlldata : pdllldata;
 i         : dword;
 str       : String;
begin
 getdlldata(lpdlldata);
 Result := CallNextHookEx(SysHook, Code, wParam, lParam);
 case code of
   HCBT_CREATEWND:
   begin
     Str := TCBTCreateWnd(Pointer(lParam)^).lpcs.lpszName;
     if TCBTCreateWnd(Pointer(lParam)^).lpcs.hwndParent <> 0 then exit;
     if str = '' then exit;
     i:=0;
     while lpdlldata^.data[i] <> '' do
     begin
       if lpdlldata.data[i] = str then
       begin
         try
           result:=1;
           break
         except
         end;
       end;
       Inc(i);
     end;
   end;
 end;
end;

function SetHook(Hook : Boolean) : Boolean; export; stdcall;
begin
 Result := false;
 if Hook then
 begin
   if SysHook = 0 then
    SysHook := SetWindowsHookEx(WH_CBT{WH_CALLWNDPROC}, @SysMsgProc, HInstance, 0);
   Result := (SysHook <> 0);
 end else
 begin
   if SysHook <> 0 then
   begin
     try
       UnhookWindowsHookEx(SysHook);
       SysHook := 0;
       Result := true;
     except
                  // Ошибка выскакивает вот здесь
     end;  
   end;
 end;
end;

exports
 SETHOOK index 1;

begin
end.


KygECHuK   (2006-05-10 10:07:00) [41]

Как это можно осуществить?


Сергей М.   (2006-05-10 09:48:00) [42]

Переменная SysHook должна быть глобально доступна для всех экземпляров хук-библиотеки.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо