Показать сообщение отдельно
  #56  
Старый 11.11.2012, 00:07
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от helgboy
******EXE******
Код:
.....
procedure keyctrl( nx: pointer);
var i:integer;
proc: procedure() of object;
begin
@proc:=nx;
proc;
showmessage(' работает keyctrl N='+IntToStr(N));  // почему N оказывается равен 0  ?
end;
.....
******DLL****
Код:
uses
......
var nx1:pointer;
procedure RunStopHook(State : Boolean;pointval:pointer) export; stdcall;
      begin
          if State=true then
          begin
          // Запускаем ловушку.
          SysHook := SetWindowsHookEx(WH_GETMESSAGE,
            @SysMsgProc, HInstance, 0);
            nx1:=pointval;
            keyctrl(nx1);
        end
      end;
      exports RunStopHook;
begin
end.
  1. Директива export является устаревшей и использовать её не нужно.
  2. Нет смысла сравнивать булевую переменную с true. Т.е. вместо "if State=true then" пиши просто "if State then"
  3. Откуда в DLL взялась keyctrl если она у тебя описана в EXE?
Ответить с цитированием