Обработка событий от клавиатурыI. Эмуляция нажатия клавиши. Внутри приложения это выполняется достаточно просто с помощью вызова функции Windows API SendMessage() (можно воспользоваться и методом Perform того объекта (или формы), кому посылается сообщение о нажатой клавише). Код Memo1.Perform(WM_CHAR, Ord('A'), 0); или SendMessage(Memo1.Handle, WM_CHAR, Ord('A'), 0); приведет к печати символа "A" в объекте Memo1.
II. Перехват нажатий клавиши внутри приложения. Задача решается очень просто. Можно у формы установить свойство KeyPreview в True и обрабатывать событие OnKeyPress. Второй способ - перехватывать событие OnMessage для объекта Application.
III. Перехват нажатия клавиши в Windows. Существуют приложения, которым необходимо перехватывать все нажатия клавиш в Windows, даже если в данный момент активно другое приложение. Это может быть, например, программа, переключающая
раскладку клавиатуры, резидентный словарь или программа, выполняющая иные действия по нажатию "горячей" комбинации клавиш. Перехват всех событий в Windows (в том числе и событий от клавиатуры) выполняется с помощью вызова функции SetWindowsHook(). Данная функция регистрирует в системе Windows ловушку (hook) для определенного типа событий/сообщений. Ловушка - это пользовательская процедура, которая будет обрабатывать указанное событие. Основное здесь то, что эта процедура должна всегда присутствовать в памяти Windows. Поэтому ловушку помещают в DLL и загружают эту DLL из программы. Пока хоть одна программа использует DLL, та не может быть выгружена из памяти.
Пример работающей программы можно скачать здесь: http://delphi.mastak.ru/download/HookDLL.zip Он отлавливает нажатия клавиш во всех приложениях и выводит их в окно
основной программы, которая ставит хук. (За программу отдельное спасибо "Raptor" и Юрию Зотову)
Тормаза
Набросал на вторую форму 161 BitBtn-ов она так стала тормазить при перетаскивании А в VCL столько же - нормально ...
Ввод данных в поле типа TIME FB 1.5
Здравствуйте ! Прошу у Вас помощи вот в какой проблеме: Создана база в 3 диалекте FB 1.5, создана таблица Tab1 с ...
User32.dll и DCOM
Как обяснить, что некоторые функции вызываемые СОМ сервером из User32.dll не работают?
Экстремальное программирование: планирование. Библиотека программиста
Эта книга харизматических лидеров экстремального программирования — о том, как планировать проекты разработки программного обеспечения по технологии XP. В основном она предназначена руководителям — тем, кто должен составлять план работ, а потом следить, чтобы он соответствовал действительности. Она будет полезна и программистам с заказчиками, поскольку это две основные роли в процессе планирования и разработки ПО.
Автор: Kent Beck, Martin Fowler
VoidSoft Свежие новости мира Borland (и не только), авторские программы, статьи, компоненты, ссылки. Если у Вас есть вопросы по программированию - добро пожаловать на наш форум "Дельфинарий". Вы также ...
» Оценка сайта: 4
Хокку дня
матричный принтер стрекочет пронзительно и отчаянно он обречен
Афоризмы
Справедливость - это когда нам можно делать все, что угодно....
Фраза дня
Любовь за деньги обходится дешевле.
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Огайо (США) особым законом запрещено предлагать рыбам спиртные напитки.
В Германии по закону подушка может считаться "пассивным" оружием .
И на закуску коротенький анекдот
Заключённый рассуждает: "Какая это все-таки странная вещь - закон: вот меня посадили за то, что я украл буханку хлеба - и теперь им приходится выдавать мне по буханке в день бесплатно".