Обработка событий от клавиатуры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" и Юрию
Зотову)
Не запускается сервис базы (оракле)
Установил оракл 8i, винда w2k prof 4sp, создал базу с именем DB2000 он под нее создал сервис имя OracleServiceDB2000 ...
Работа с объединенными ячейками в Word
Когда я считываю данные из таблиц с объединенными ячейками Word-a в Delphi возникает ошибка: prject project1.exe ...
Вывод графики на рабочий стол Windows с использованием оверлеев DirectX
Рисование на рабочем столе "под значками" с большой скоростью и без всяких визуальных конфликтов с GDI - "то-что-делает-WinAmp'овский-AVS-если-включить-overlay-mode-и-set-desktop-to-color". Как оно работает, как сделать подобное и для чего ещё можно использовать.
Технологии Пентагона на службе российских программистов
В книге рассмотрены методологические подходы к созданию крупных программных систем. Выделены важнейшие навыки программирования, даны рекомендации, направленные на повышение индивидуального мастерства разработчиков программ. Обобщена практика управления проектами, представлены современные методики разработки программного обеспечения: модели CMM и SPMN, спиральная и итерационная концепции, методика персонального совершенствования PSP, технологии экстремального программирования и гибкая методика управления проектами SCRUM. Книга предназначена для широкого круга программистов и руководителей проектов в области информационных технологий.
Автор: Бобровский С. И.
Опрос населения :)
Какую ОС вы используете _в_основном_ при написании програм для Win32
Хокку дня
Разлука... - Кепкою машу Подножьям алых гор.
Афоризмы
Опыт отнюдь не мешает нам повторить прежнюю глупость, но мешает получить от нее прежнее удовольствие (Тристан Бернар)
Фраза дня
Любовь - это торжество воображения над интеллектом.
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Оттумва в Айове (США) мужчина не может подмигивать женщине, если он с ней не знаком.
В Лос Анжелесе (США) существует постановление, запрещающее купать одновременно двух младенцев в одной и той же купели.
И на закуску коротенький анекдот
Беседуют две подруги: - Доктор советует мне сменить работу... - А ты что? - А на что её менять, если я не работаю?!!