Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.07.2007, 12:15
CODeRUS CODeRUS вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию Перехват событий клавиатуры

Как правильно перехватывать нажатия на клаву во ВСЕХ приложениях?
Как перехватить нажатие, изменить значение на нужное и послать дальше винде (переназначить)?
Ответить с цитированием
  #2  
Старый 25.07.2007, 16:33
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от CODeRUS
Как правильно перехватывать нажатия на клаву во ВСЕХ приложениях?
Как перехватить нажатие, изменить значение на нужное и послать дальше винде (переназначить)?
Смотри в сторону хуков и dll.
Несколько исходников в придачу:
- Keyboard hook
- Key Logger
- Key Statistic
- ScanKey
Ответить с цитированием
  #3  
Старый 25.07.2007, 19:42
CODeRUS CODeRUS вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

нашел как без dll получить цифровой код. А кто подскажет как конвертировать его в название кнопки?
Ответить с цитированием
  #4  
Старый 25.07.2007, 21:36
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Цитата:
Сообщение от CODeRUS
нашел как без dll получить цифровой код...
Поделись, если не сложно, как?
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #5  
Старый 26.07.2007, 11:44
CODeRUS CODeRUS вне форума
Прохожий
 
Регистрация: 25.07.2007
Сообщения: 8
Репутация: 10
По умолчанию

Запросто:
Код:
var                //переменные в Юните
hHook: THandle;
VKey:integer;

function LowLevelKeyboardProc(nCode: Integer;
  WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;

  type
  PKbdDllHookStrukt = ^TKbdDllHookStrukt;
  _KBDLLHOOKSTRUCT = record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: PDWORD;
  end;
  TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;

const
  RPT_WPARAM_DATA = '%s';
  RPT_LPARAM_DATA = '%d';

var
  StrResult: String;
begin
  StrResult := '';
  if nCode = HC_ACTION then
    Result := CallNextHookEx(hHook, nCode, WParam, LParam);
  case WParam of
    WM_KEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
    WM_KEYUP: StrResult := Format(RPT_WPARAM_DATA, ['']);
    WM_SYSKEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
    WM_SYSKEYUP: StrResult := Format(RPT_WPARAM_DATA, ['']);
  end;
  StrResult := Format(RPT_LPARAM_DATA, [PKbdDllHookStrukt(LParam)^.vkCode]);
  
  VKey:=strtoint(strresult); //Получаем VKey нажатой клавиши

end;

procedure InstallHook;
const
  WH_KEYBOARD_LL = 13;
begin
  hHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
  if hHook = 0 then RaiseLastOSError;
end;

procedure RemoveHook;
begin
if not UnhookWindowsHookEx(hHook) then RaiseLastOSError;
end;
Цифровой код передаётся в переменную VKey.
Собственно как теперь мне нреобразовать цифровой код в название нажатой клавиши?
Ответить с цитированием
  #6  
Старый 03.09.2007, 12:03
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Chr(VKey). Должно помочь.
Функция возвращает сам символ.
Ответить с цитированием
  #7  
Старый 08.11.2007, 21:26
ruff3d ruff3d вне форума
Прохожий
 
Регистрация: 08.11.2007
Сообщения: 20
Репутация: 10
Лампочка Мужики выручайте ..)) (dll-keyspy)

Короче проблема вот в чем ... Я пишу кейлоггер(dll) мне нужно получить строку с именем активного окна ...Api функции типа getactivewnd пытался ... не получилось ... так подскажите как ... может криво делал..
Заранее невероятно благодарен...)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter