![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как эмулировать нажатие клавиш на клавиатуре для чужой программы [D7, Win2k, WinXP]
ANB © (2005-05-04 18:04:00)Пытаюсь эмулировать нажатие клавиш для программ написанных на Magic (вряд ли кто слышал). Программы пишут наши проги, а исходников оболочки нет. Работает как интерпретатор. Столкнулся с проблемой : не могу эмулировать по человечески нажатие клавиш. Для делфовых приложений сделал через WM_KEYDOWN, WM_KEYUP и WM_CHAR. Все работает. А для Magic смог эмулировать только через keybd_event. Это плохо, так как при работе нельзя будет переключатся в другие программы.
Кто подскажет, куда рыть при разбирательстве ? Какими хитрым способом этот д..й Magic может обрабатывать сообщения клавиатуры ? Мышь он по человечески обрабатывает.
Я пробовал посылать WM_KEYDOWN, WM_KEYUP и WM_CHAR и главному окну и MDI Child и едитам - эффекта 0. Даже просто буквы и цифры не печатаются.
ANB (2005-05-05 09:24:00) [41]Вот козлы. Ну никак сообщения не ест. Причем он их получает и выбирает из очереди, я это хуком вижу. И, похоже, полностью игнорит. А как определить момент, что он уже вытащил клавишу через GetKeyState и можно записывать следующую ?
alpet (2005-05-04 18:09:00) [42]Может он просто не ловит сообщения, а использует функции типа Get(Async)KeyState. Попробуй внедрить библиотеку с клавирным хуком которая будет устанавливать нажатия клавиш с помощью функции SetKeyboardState (работает в пределах одного потока), в момент обработки сообщения WM_KEYDOWN.