|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.08.2013, 23:25 | #1 |
Пользователь
Регистрация: 14.07.2012
Сообщений: 31
|
КопиПаст или как вставить текст в нужное место
Добрый день , возникла такая проблемка , нужно сделать что то вроде этого :
к примеру в edit1 есть текст , мне нужно чтоб этот текст попал туда где находится курсор , к примеру курсор мигает в поле для поиска на сайте и мне нужно чтоб в это место попал текст из edit1 . кто то знает как это сделать ? и все это должно быть программно ... post,get запросы НЕ предлагать , нужно чтоб все происходило в реальном времени ... пож очень нужно , заранее всем спасибо иными словами: Как определить в каком элементе формы находится курсор(для текстовых полей ввода)? Например, чтобы узнать вставлять текст в этот элемент или нет и если надо вставить туда текст Последний раз редактировалось admin-one; 13.08.2013 в 23:36. |
14.08.2013, 00:08 | #2 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Ну, все довольно просто. Для начала, нужно получить Handle окна на котором стоит фокус ввода. Для этого нужно пройтись по всем существующим окнам и проверить если у них фокус. Если фокус установлен, можно смело вписывать текст в это окно:
Код:
В планах порабощение вселенной...
|
14.08.2013, 00:51 | #3 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Может быть есть способ другой... Какая конечная цель программы? Быстрый поиск на просматриваемой странице чего-либо? А обычные ctrl-c/ctrl-v не подойдут?
Один из вариантов - хуком или просто по таймеру или ещё как искать активное окно (см например GetForegroundWindow), затем перебор элементов окна (см FindWindow/FindWindowEx или EnumChildWindows), затем вставка текста (см SendMessage+WM_SETTEXT/WM_PASTE или SetWindowText). НО! Тут есть куча (большая) неприятностей. Например, текстовые поля могут иметь разные классы - какой-нибудь TMyEdit. И если это ещё можно определить по свойствам компонента, то проблему с текстовыми полями которые не являются оконными компонентами таким способом решить нельзя (это касается и многих браузеров). Обойти, конечно, можно - имитация ctrl-v через буфер обмена, но нет гарантии что курсор в поле ввода. Далее ещё надо будет предусмотреть ситуацию исключающую повторное копирование текста - тут можно приципить код к "горячей клавише". В итоге приходим к тому с чего начали (хотя чуть более быстрее). |
14.08.2013, 10:59 | #4 | |
Пользователь
Регистрация: 14.07.2012
Сообщений: 31
|
Цитата:
Этот код работает , но только не там где мне нужно , мне нужно чтоб работал на всех приложениях , будь то браузер , текстовик ,ворд , паинт и т.д , а этот только на моем приложении .... есть еще идеи ? |
|
14.08.2013, 11:57 | #5 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
admin-one, этот код должен работать на любом приложении. Конечно же, при условии, что это приложение использует оконные компоненты.
В планах порабощение вселенной...
|
14.08.2013, 12:17 | #6 | |
Пользователь
Регистрация: 14.07.2012
Сообщений: 31
|
Цитата:
Код HTML:
MainProcessID := GetWindowThreadProcessId(Handle, nil); EnumWindows(@CheckWindow, LParam(MainProcessID)); |
|
14.08.2013, 13:01 | #7 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
Скорее всего, гугл хром использует свои компоненты. Рисованные контролы, которые не являются оконными. Попробуйте на другом приложении.
В планах порабощение вселенной...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скопировать текст содержащийся в ячейке таблицы и вставить этот текст в место документа помеченное закладкой. | LiliPOOtin | Microsoft Office Word | 3 | 17.04.2013 19:51 |
Можно ли как-нибудь удалить, а затем вставить в нужное место в текстовике текст, не копируя весь документ. | Jony217 | PHP | 3 | 17.01.2013 10:11 |
Курсор в нужное место | Apostol13 | Общие вопросы Delphi | 3 | 13.06.2011 19:38 |
переход на заданный сайт или как вставить в заданное место заданный текст | Biker89 | Общие вопросы Delphi | 23 | 29.05.2011 01:59 |
Поставить CreateThread в нужное место | Sam Gold | C/C++ Сетевое программирование | 4 | 20.05.2010 23:46 |