![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
постановка хука на клавиатуру и мышь? [D7, WinXP]
Levin_610 © (2006-07-12 14:44:00)скажите пожалуйста, хуки WH_KEYBOARD и WH_MOUSE отслеживают соответсвтвенно нажатие кнопки клавы и мыши, какие у них параметры и что они возвращают в случае нажатия клавиши или что происходит в случае нажатия кнопки клавиатуры или мыши?
GrayFace (2006-07-17 11:08:00) [1]Работает в данной ОС и, наверное, при отсутствии других хуков. При других обстоятельствах работоспособность проги под сомнением. "Must" в хелпе просто так бы не появилось.
Loginov Dmitry (2006-07-16 13:49:00) [2]> Криво.
Не знаю, может и криво. Но все работает, ниче не глючит. Значит, думаю, не совсем уж и криво.
GrayFace (2006-07-15 23:05:00) [3]> [20]
Криво.
nCode
Specifies whether the hook procedure must process the message. If nCode is HC_ACTION, the hook procedure must process the message. If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.
Кроме того, как я понимаю, при nCode>=0 надо вызывать CallNextHookEx, но возвращать не ее результат, а 0.
Loginov Dmitry (2006-07-15 00:07:00) [4]McSimm, это косяк
см. http://www.delphimaster.ru/cgi-bin/forum.pl?id=1152907475&n=6
Loginov Dmitry (2006-07-15 00:01:00) [5]Перед отправкой поста после "//" были коментарии на русском. Видимо скрипт их похерил...
Loginov Dmitry (2006-07-14 23:59:00) [6]Недавно делал что-то подобное (отлавливал события от клавиатуры, но только для текущего процесса). Получилось примерно следующее:
const
CBMSG_KEYDOWN = 45078;
CBMSG_KEYPRESS = 48386;
var
Hook: HHOOK;
....
function CallBackWndProc(Code, Flag, PData: Integer): Integer; stdcall;
var
Msg: TCWPStruct;
AKey: Word;
AChar: Char;
ShiftState: TShiftState;
I: Integer;
begin
try
Msg := PCWPStruct(PData)^;
case Msg.message of
CBMSG_KEYDOWN:
begin
ShiftState := KeyDataToShiftState(Msg.lParam);
AKey := Msg.wParam;
//
ProcKeyDown(SearchDBGridList[I], AKey, ShiftState);
end;
CBMSG_KEYPRESS:
begin
AChar := Chr(Msg.wParam);
//
ProcKeyPress(SearchDBGridList[I], AChar);
end;
end;
finally
Result := CallNextHookEx(Hook, Code, Flag, PData);
end;
end;
....
initialization
Hook := SetWindowsHookEx(WH_CALLWNDPROC, CallBackWndProc, 0, GetCurrentThreadId);
finalization
UnhookWindowsHookEx(Hook);
end.
GrayFace (2006-07-14 11:56:00) [7]Только учесть, что там по меньшей мере 2 ошибки - не правильно обявлены процедуры HookProc и DllProc. Только там названия не совсем такие.
Игорь Шевченко (2006-07-12 15:59:00) [8]http://www.delphimaster.ru/articles/hooks/index.htmlпочитать
Сергей М. (2006-07-12 15:44:00) [9]носи не стаптывай
Levin_610 (2006-07-12 15:43:00) [10]спасибо за помощь
Сергей М. (2006-07-12 15:40:00) [11]Тогда тебе не сюда).. не по адресу ты обратился.
Levin_610 (2006-07-12 15:37:00) [12]читал, да я дебил, что тут поделать(
Сергей М. (2006-07-12 15:36:00) [13]Ну нельзя же быть таким тупым)..
[11] читал ?
Levin_610 (2006-07-12 15:34:00) [14]MyHookHandle := SetWindowsHookEx(WH_Keyboard - первый параметр такой?, а др7
Сергей М. (2006-07-12 15:34:00) [15][1] читал ?
Levin_610 (2006-07-12 15:31:00) [16]это я понял, а что у неё должно быть в параметрах SetWindowsHookEx(?)
и что она возвращает?
Сергей М. (2006-07-12 15:25:00) [17]
> мне нужно знать, как поставить хук
В соответствии с MSDN - с пом. ф-ции SetWindowsHookEx
Levin_610 (2006-07-12 15:20:00) [18]нет, меня не правильно поняли), мне не нужно сказок про бычка, мне нужно знать, как поставить хук) - очень нужно, вопрос жизни и смерти.
Сергей М. (2006-07-12 15:18:00) [19]
> про пушкина тоже что читал
Про дуб зеленый ?)
> как поставить хук на клавиатуру\мышь не на отдельную кнопку
> а вообще
сказка про белого бычка)..
см. [1]
?
Levin_610 (2006-07-12 15:18:00) [20]ок, пусть начинающим, но на вопрос ответ напишите пожалуйста