![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать нажатие клавиши другой программе [D6, WinXP]
oleg2 © (2002-09-18 19:03:00)Уважаемые мастера, подскажите как мне передать нажатие последовательности кнопок на клавиатуре другой программе?
Song (2002-09-23 17:27:00) [1]Работать не хочет потому что вероятно всего у Вас MyWnd - дискриптор прилоожения, а не дискриптор того окна, которое эти клавиши на самом деле обрабатывает. Т.е. другими словами, если применительно к блокноту,
то SendMessage(FindWindow(nil,"Блокнот"),WM_KEYDOWN,Ord("a"),1) - ничего не даст. Чтобы буква действительно нажалась и показалась в поле ввода, нужно посылать её именно в тот контрол, где она и должна отображаться:
SendMessage(GetWindow(FindWindow(nil,"Блокнот"),GW_CHILD),WM_KEYDOWN,Ord("a"),1);
Если это всё непонятно, значит вероятно Вам ещё рано работать с сообщениями.
Codec (2002-09-23 17:20:00) [2]
> Попробовал вот такую конструкцию:
> SendMessage(MyWnd, WM_KEYDOWN, Ord(VK_F1),1);
клавишу нужно не только "нажать", но и "отжать" :-) - WM_KEYUP
А keybd_event() передаёт нажатия клавиш только в АКТИВНОЕ окно (если я ничего не путаю :-)) ).
Удачи!
oleg2 (2002-09-19 10:23:00) [3]Попробовал вот такую конструкцию:
SendMessage(MyWnd, WM_KEYDOWN, Ord(VK_F1),1);
- работать не хочет, а вот что касается:
SendMessage(MyWnd, WM_CLOSE, 0,0); - работает чудесно.
В чем тут может быть закавыка?
Song (2002-09-18 19:42:00) [4]SendMessage(),keybd_event()