Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как послать нажатие клавиши F2 а затем клавишу "A" [D7, WinXP]


trix ©   (2009-09-23 18:25:00) 

Как послать нажатие клавиши F2 а затем клавишу "A" стороннему приложению. Приложение со скрытой формой, знаю только хендл заголовка, разные keybd_event не подходят. Если можно пример для F2, дальше сам справлюсь.


Leonid Troyanovsky   (2009-09-23 19:36:00) [1]


> trix   (23.09.09 19:15) [7]

> Хорошо, как вообще послать нажатие клавиши любому приложению.
>  Клавиша F2, приложение неактивно, знаем только хендл заголовка.

Считай, что никак.

> обычный notepad

А чего такого notepad делает по F2?

Впрочем, notepad проcт:
http://groups.google.com/group/fido7.ru.delphi/msg/925bebee0309bec9

--
Regards, LVT.


trix   (2009-09-23 19:32:00) [2]

для нотепада работает
 PostMessage(h, WM_keydown, vk_f2, 0);
 PostMessage(h, WM_keyUP, vk_f2, 0);

но этоне для всех приложений, для других просто нет такой обработки


trix   (2009-09-23 19:22:00) [3]

обычный notepad


trix   (2009-09-23 19:15:00) [4]

Хорошо, как вообще послать нажатие клавиши любому приложению. Клавиша F2, приложение неактивно, знаем только хендл заголовка.


Leonid Troyanovsky   (2009-09-23 19:14:00) [5]


> trix   (23.09.09 19:10) [5]

> PostMessage(h,WM_SYSKEYDOWN,79,440001);
> PostMessage(h,WM_SYSKEYUP,79,$C0440001);

> хендл окна получаю верный, но ничего не происходит.

Ерундой болтаешь.

Я ж, вроде, понятно спросил.

И с чего это вдруг WM_SYSKEY.

--
Regards, LVT.


trix   (2009-09-23 19:10:00) [6]

WM_SYSKEYDOWN   79 440001
WM_SYSKEYUP  79 C0440001

при нажатии в любой открытой форме, пытаюсь сделать вот так, чтобы повторить это нажатие в любой форме.

PostMessage(h,WM_SYSKEYDOWN,79,440001);
PostMessage(h,WM_SYSKEYUP,79,$C0440001);

хендл окна получаю верный, но ничего не происходит.


Leonid Troyanovsky   (2009-09-23 19:00:00) [7]


> trix   (23.09.09 18:52) [3]

> keybd_event не подходит ввиду того, что оконо не активно!

Значит, RegisterHotKey можно исключить.

Партизанство, IMHO, неуместно.
У приложения есть другие (нескрытые) окна?
Скрытое окно есть child?

> прекрасно работает и на приложениях со скрытой формой.

Это свезло.

--
Regards, LVT.


trix   (2009-09-23 18:52:00) [8]

keybd_event не подходит ввиду того, что оконо не активно!

все равно как-то можно, так как
 PostMessage(cwnd, WM_LBUTTONDOWN, 0, 0);
 PostMessage(cwnd, WM_LBUTTONUP, 0, 0);


прекрасно работает и на приложениях со скрытой формой.


Leonid Troyanovsky   (2009-09-23 18:46:00) [9]


> trix   (23.09.09 18:29) [1]

> SendMessage(h, wm_char, 121, 0);

Скрытые окна, во-ще, не обязаны обрабатывать клавиатурный ввод.

Если это, дейс-но, скрытое окно, то, вероятно, на F2 оно срабатывает
через RegisterHotKey, и, сл-но, keybd_event вполне уместен.

Подозрительно лишь то, что F2 vs Ctrl+Shift+Alt+F2, бо конфликт
слишком вероятен.

Поэтому, лучше неторопливо рассказать, про приложение
и что за окна оно скрывает.

--
Regards, LVT.


trix   (2009-09-23 18:29:00) [10]

пробовал так
SendMessage(h, wm_char, 121, 0);

не работает.


Наверх

Титульная страница Поиск, карта сайта Написать письмо