![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetAsyncKeyState - использование ? [D5]
SemFLY © (2002-01-13 18:24:00)Мне надо, чтобы при нажатие клавиши (любой) на клавиатуре в Edit появлялось "нажата клавиша < F > ", к примеру. В FAQ я нашел, что это можно сделать с помощью этой функции
GetAsyncKeyState, но как не разберусь.
Спасибо ! :))
SemFLY (2002-01-14 21:09:00) [1]Мне тут посоветовали функцию
SetWindowsHookEx, но как ею пользоваться я не рзобрался, а точнее вроде всё работает, но как сунуть то, что получила эта функция в Edit не знаю.
TonnyS (2002-01-14 13:23:00) [2]GetAsyncKeyState выдаёт клавиши (скорее их скан-коды), нажатые с момента последнего вызова GetAsyncKeyState.
пример:
if GetAsyncKeyState(ord("A"))<>0 then Label1.caption := "Нажата A";
при этом отлавливается нажатие именно на клавишу, на которой латинское A написано, в не зависимости от раскладки клавиатуры и регистра.
Чтоб более-менее нормально получать информацию о нажатии клавиш, надо GetAsyncKeyState в таймер засунуть, при этом если важна точность (нажата/ненажата) то её лучше не использовать. Но для некоторых задач подходит - например, регулировка звука в системе, где плюс-минус пару делений роли не играют.
valery_f (2002-01-14 12:10:00) [3]Чтобы ловить совсем уж все клавиши (включая Alt) нужно перехватить целую кучу сообщений - CM_DIALOGKEY, WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP. Главное - не забыть после анализа кнопки направить обработчик по стандартному пути (inherited). Впрочем - это не единственный вариант :)
SemFLY (2002-01-13 22:10:00) [4]Извеняюсь что столько мессаджей напихал, у меня что-то эксплорер глюкнулся я сам чессно слово не ожидал, мне тут на форуме сначала ошибку выдавало.