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

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

горячие клавиши в webbrowser [D6, WinXP]


Oleg_ ©   (2004-03-21 23:24:00) 

Для отрабатывания сабж  использую

id2 := GlobalAddAtom('Hotkey_m1');
RegisterHotKey(self.Handle,id2,0,107);

обрабатываю нажатия в процедуре
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;

и если активно другое приложение, скажем ворд, сообщение надо бы вернуть.
Активное окно нахожу через GetForegroundWindow
Логично из TWMHotKey вытянуть сообщение и отправить
PostMessage(GetForegroundWindow,msg.Msg,0,0);
но в ворде так и не отображается нажатие клавиши -(
Заранее спасибо


nikkie   (2004-03-22 13:28:00) [1]

видишь, как я угадал ;)


Oleg_   (2004-03-22 12:47:00) [2]

На самом деле
postMessage(GetForegroundWindow,WM_KEYDOWN,ord('t'),0);
postMessage(GetForegroundWindow,WM_KEYUP,ord('t'),0);
эквивалентно  нажатию F5


nikkie   (2004-03-22 12:15:00) [3]

если стоит нужда эмулировать нажатие клавиши, то проще воспользоваться keybd_event.

а если спортивный интерес - то во-первых, почему lParam=0, во-вторых, почему SendMessage, в-третьих, Ord('t')=116=VK_F5.


Oleg_   (2004-03-22 12:03:00) [4]

Это уже скорее спортивный интерес, ведь должен быть какой то способ форвардирования или пропуска "горячим обработчиком" нажатия клавиши.
странно почему не дышит нажатие некоторой буквы через сообщения


nikkie   (2004-03-22 11:47:00) [5]

а зачем наворачивать такое с hot-key?

я, собственно, предположил, что ты пытаешься сделать shortcut с помощью hot-key. если я не угадал, то извиняюсь.


Oleg_   (2004-03-22 10:49:00) [6]

если перевести вопрос в плоскость именно RegisterHotKey
пусть даже никакого webbrowser нету, как можно или пропустить зарегестрированное сочетание клавиш на обработку активным приложением или послать активному приложению сообщение о нажатии клавиши?

SendMessage(GetForegroundWindow,WM_KEYDOWN,ord('t'),0);
SendMessage(GetForegroundWindow,WM_KEYUP,ord('t'),0);
не работает

а вот
PostMessage(GetForegroundWindow,WM_QUIT,0,0);
закрывает активное приложение


nikkie   (2004-03-22 00:22:00) [7]

когда скачаешь EmbeddedWB, обрати внимание на
http://www.euromind.com/iedelphi/embeddedwb/ontranslateaccelerator.htm


Наверх

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