Я реализую глобальный хук мыши и застрял при передаче параметров в DLL. Не могли бы вы помочь мне?
Это функция хост-приложения для запуска ловушки:
function TMainForm.StartHook(LockDirection: byte): boolean;
type
TStartHook = function(AppHandle: HWND; LockDir: byte): Byte;
var
StartHookProc: TStartHook;
SHresult: Byte;
i:integer;
LibPath: string;
begin
LibPath:=ExtractFilePath(Application.ExeName)+'hooklib.dll';
HookInfo.LibHandle := LoadLibrary(pwidechar(LibPath));
@StartHookProc := GetProcAddress(HookInfo.LibHandle, 'StartHookProc');
if @StartHookProc = nil then begin
Showmessage('Exit #1');
Exit;
end;
SHresult := StartHookProc(Handle, LockDirection);
end;
И это функция на стороне DLL StartHookProc
function StartHookProc(AppHandle: HWND; LockDir: byte): Byte; stdcall;
begin
Result := 0;
if Hooked then
begin
Result := 1;
Exit;
end;
HookHandle:= SetWindowsHookEx(WH_MOUSE, @MouseHookProc, hInstance, 0);
...
end;
Я думаю, что то, что я пытаюсь сделать, понятно - просто передайте параметр LockDirection в dll, чтобы я мог соответствующим образом обрабатывать сообщения мыши. Тем не менее, когда я передаю 0 в качестве параметра, на стороне dll он показывает «ě» (236). Что я делаю не так?
Спасибо