P
Proger
Уважаемые системные прграммисты, простите за(возможно) ламерский вопрос.
Я хочу перехватывать все клавиши для всех приложений и для этого ставлю ловушку сообшиний:
///////////////////////////////////////////////////////
////////////////////////////////
function Key_Hook(code : integer; wParam: Integer;
lParam : Integer): Integer; stdcall;
begin
if (code <> HC_ACTION)then
begin
Append(ScnFile);
WriteLn(ScnFile, '<KeyPresed>');
Writeln(ScnFile, ' ', wParam);
WriteLn(ScnFile, '<KeyPresed/>');
CloseFile(ScnFile);
end;
CallNextHookEx(HKey, Code, wParam, lParam);
end;
function StartHookKey(Path : String) : hHook;
begin
// Инициализация файловой переменной
AssignFile(ScnFile, Path);
// Установка ловушки
HKey := SetWindowsHookEx(WH_KEYBOARD, @Key_Hook,
hInstance, 0);
Result := HKey;
if Result = 0 then // Ловушка не установилась
ShowMessage('Ошибка');
end;
procedure RemoveHookKey(var h : hHook);
begin
if h <> 0 then
begin
UnhookWindowsHookEx(h);
h := 0;
end;
end;
Вызов процедур из основного модуля:
/////////////////////////////////////////////////////////
procedure TForm1.MRecExecute(Sender: TObject);
begin
Rewrite(ScnFile);
CloseFile(ScnFile);
HookKey := StartHookKey(ScnPath);
end;
procedure TForm1.MStopExecute(Sender: TObject);
begin
RemoveHookKey(HookKey);
end;
Ловушка должна перехватывать нажатие всех клавиш и записывать в файл коды нажатых клавиш.
Но проблема в том что callback функция даже не вызывается!!!!!
Помогите пожалуста.
Заранее благодарен.
Я хочу перехватывать все клавиши для всех приложений и для этого ставлю ловушку сообшиний:
///////////////////////////////////////////////////////
////////////////////////////////
function Key_Hook(code : integer; wParam: Integer;
lParam : Integer): Integer; stdcall;
begin
if (code <> HC_ACTION)then
begin
Append(ScnFile);
WriteLn(ScnFile, '<KeyPresed>');
Writeln(ScnFile, ' ', wParam);
WriteLn(ScnFile, '<KeyPresed/>');
CloseFile(ScnFile);
end;
CallNextHookEx(HKey, Code, wParam, lParam);
end;
function StartHookKey(Path : String) : hHook;
begin
// Инициализация файловой переменной
AssignFile(ScnFile, Path);
// Установка ловушки
HKey := SetWindowsHookEx(WH_KEYBOARD, @Key_Hook,
hInstance, 0);
Result := HKey;
if Result = 0 then // Ловушка не установилась
ShowMessage('Ошибка');
end;
procedure RemoveHookKey(var h : hHook);
begin
if h <> 0 then
begin
UnhookWindowsHookEx(h);
h := 0;
end;
end;
Вызов процедур из основного модуля:
/////////////////////////////////////////////////////////
procedure TForm1.MRecExecute(Sender: TObject);
begin
Rewrite(ScnFile);
CloseFile(ScnFile);
HookKey := StartHookKey(ScnPath);
end;
procedure TForm1.MStopExecute(Sender: TObject);
begin
RemoveHookKey(HookKey);
end;
Ловушка должна перехватывать нажатие всех клавиш и записывать в файл коды нажатых клавиш.
Но проблема в том что callback функция даже не вызывается!!!!!
Помогите пожалуста.
Заранее благодарен.