SetWindowsHookEx
1945
1
Балин... то ли я дурной. то ли чаго...
Итак. Имеем либу. В ней пишем.
function KeyboardProc(Code: Integer; wParam, lParam: Integer): Integer; stdcall;
var WordHandle: HWND;
begin
if (Code >= 0) and ((HiWord(lParam) and KF_ALTDOWN) KF_ALTDOWN) and ((HiWord(lParam) and KF_REPEAT) KF_REPEAT) and ((HiWord(lParam) and KF_UP) KF_UP) then
begin
result := 0;
WordHandle:=FindWindow('opusapp', nil);
if TMsg(Pointer(lParam)^).hwnd=WordHandle then
if TMsg(Pointer(lParam)^).message=WM_CHAR then
if IsWindow(PProgData.WndMain) then SendMessage(PProgData.WndMain, HM_ACTION, Ord(haKBD), wParam);
end;
Result := CallNextHookEx(PProgData^.Hooks.KeyboardHook, Code, wParam, lParam);
end;

[skipped]

function SetHooks(Active: Boolean): Boolean; stdcall;
begin
with PProgData^.Hooks do
KeyboardHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
Result:=KeyboardHook0;
end;

Дык и чего то ей не нравится в выделенонй строке. Высыпается из процедуры и больше в нее никогда не возвращается...
С чего бы это?
D3, Win2000

---
Full http://full.nm.ru
-------
Рожденный ползать везде пролезет.
Full
Дурак ты, Фуллыч, и не лечишься...
Это ж надо не wh_keyboard вешать, а wh_getmessage
---
Full http://full.nm.ru
-------
Рожденный ползать летит за деньги.