
11.11.2012, 00:07
|
 |
Профессионал
|
|
Регистрация: 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.
|
- Директива export является устаревшей и использовать её не нужно.
- Нет смысла сравнивать булевую переменную с true. Т.е. вместо "if State=true then" пиши просто "if State then"
- Откуда в DLL взялась keyctrl если она у тебя описана в EXE?
|