![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Здравствуйте,
Такой вопрос: как сделать, чтобы при выделении текста(в браузере например)и при нажатии определенных клавиш(ctrl+что-то, например), то что выделено передавалось в программу. + чтобы не создавать новую тему: Всем известный квип: как делается всплывающее окошко. Точнее как делается понятно, что за компонент? Заранее спс. PS в шапке написанные источники посмотрел. не нашел ибо даже не знаю что искать |
|||
|
||||
| DeadMage |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Простейший, и при том самый действенный способ - эмулировать нажатие ctrl+c, и потом забирать из буфера обмена. |
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Поподробнее плс..
Как перехватить нажатие клавиши и нажать ctrl+c? Это сообщение отредактировал(а) lazutov - 17.4.2008, 19:08 |
|||
|
||||
| DeadMage |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Перехват нажатия клавиш - установкой хоткея. SetHotkey, кажись. Нажать ctrl+c - вот это уже более интерестно, нужно получить текущее окно (GetForegroundWindow вроде), потом последовательно посылать ему сообщений WM_KEYDOWN, WM_KEYUP. Точную реализацию не скажу, попробуй поискать, скорее всего уже было.
|
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
теперь такой вопрос:
итак при исполнении выделенной строки текст не копируется, вопрос почему? и что нужно сделать чтоб копировало. Спасибо. также не работает и первый вариант. сама ловушка устанавливается и нажатие alt+Z отлавливает. |
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Тогда конкретный вопрос: как програмно нажать ctrl+c
но с наверное так
а как это сделать чтобы и ctrl был нажат? Можно ли сначала нажать(KeyDown) crtl потом нажать и отпустить С, затем отпустить ctrl? и как это реализовать? Спасибо!. |
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
||||
|
||||
| lazutov |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Делаю так. но текст не копируется, кто знает в чем проблема? Заранее спасибо! PS аналогично не работает
Это сообщение отредактировал(а) lazutov - 20.4.2008, 12:29 |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
интересно, а как же лингво 12й работает... ведь почти отовсюду выделенный текст вытягивает на перевод
-------------------- There are always someone smarter than you... |
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
именно Лингво мне этоу идею и подкинул.
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
напрашивается несколько вариантов возможной реализации (в лингво):
1. Распознавание текста под курсором (маловероятно). "+" определение текста даже из TLabel, "-" не определяет текст на картинке. 2. Явно видно, что внедряется хук (LvHook.dll - Lingvo Hook DLL)... вот только как все-таки определяется выводимый текст? возможно перехватываются функции вывода текста на экран... другие варианты в голову не приходят пока Это сообщение отредактировал(а) MetalFan - 20.4.2008, 13:30 -------------------- There are always someone smarter than you... |
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
SendMessage(H, WM_COPY, 0, 0); тоже не работает...
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
lazutov, нет, там явно все хитрее сделано
-------------------- There are always someone smarter than you... |
|||
|
||||
| lazutov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
сейчас меня интересует как просто программно копировать текст в буфер обмена.
|
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 29 Всего: 191 |
MetalFan, Lingvo ставит два хука, на WH_KEYBOARD и WH_MOUSE. Ну а дальше все просто, по нажатию нужных клавиш идет получение данных из буфера обмена и передача в Lingvo.
И даже неудивительно, перед тем как перехватить текст в буфере, сначала "жмутся" клавиши копирования - Ctrl+C или Shift+Ins. Из HookProc:
Это сообщение отредактировал(а) Rrader - 20.4.2008, 16:22 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |