Форум программистов CodeGuru
25 Сентябрь 2018, 04:56:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: копирование текста в буфер из TWebBrowser - проблема  (Прочитано 18011 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Voffko
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« : 23 Октябрь 2009, 09:22:43 »

Доброго времени суток. Суть проблемы - необходимо выделенный фрагмент текста из браузера TWebBrowser скопировать в буфер а затем в поле TMemo. Привожу пример кода.
Код:
void __fastcall TForm2::OpredClick(TObject *Sender)
{
SendMessage(BrowserText->Handle, WM_COPY, 0, 0);
SendMessage(Edit1->Handle, WM_PASTE, 0, 0);
}
Проблема заключается в том, что текст не копируется из браузера. Если его выделить и нажать ctrl+c то вторая функция (SendMessage(Edit1->Handle, WM_PASTE, 0, 0)Подмигивание срабатывает как надо. Помогите разобраться с копированием, пожалуйста
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 23 Октябрь 2009, 19:06:25 »

Имхо, надо по другому делать.
Сразу скажу, что с билдером знаком слабо, не знаю, есть ли там объекты-обертки для соответствующих интерфейсов.
Но если есть, то и есть у них соответствующие методы или даже свойства их заменяющие.
Но я просто в терминах COM напишу что надо делать.

Итак. Как я понимаю, BrowserText - это, по сути, объект, работающий с IE через интерфейс IWebBrowser или IWebBrowser2.

Так вот...
Надо получить через этот объект интерфейс для взаимодействия с объектом загруженного документа (IHTMLDocument или IHTMLDocument2).
Это делается методом IWebBrowser2::get_Document (или же в билдере у объекта BrowserText будет свойство Document, возвращающее какой то объект.

У интерфейса IHTMLDocument2 есть метод IHTMLDocument2::execCommand (ну или у того, возвращенного объекта будет такой метод).

execCommand выполняет различные команды (надо передавать код команды).
Так вот, среди этих кодов, есть код Copy (а в числовом значении x3 как).

Надо это выполнить, и выделенное содержимое скопируется в буфер.

Т.е. на билдере надо сделать что-то типа: BrowserText->Document.execCommand(Copy);
Или как то так.
Следует также учесть, что надо проверять указатель, возвращаемый Document на действительность.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!