Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];

Вниз

Ctrl+A и Ctrl+C в компоненте TWebBrowser   Найти похожие ветки 

 
Pcrepair ©   (2011-10-08 21:45) [0]

Добрый день
есть код простейшего браузера

procedure TForm1.Button1Click(Sender: TObject);
 var
 URL, Flags, TargetFrameName, PostData, Headers: Olevariant;
begin
 URL := Edit1.Text;
 Flags := 0;
 TargetFrameName := 0;
 Postdata := 0;
 Headers := 0;
 EmptyParam;
 WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
end;
initialization
 // prevent floating point errors
 Set8087CW($133F);
end.

программа позволяет загрузить и отобразить ХТМЛ-страницу

Вопрос:
Как организовать выделение и копирование содержимого ХТМЛ-страницы в буфер обмена по событию "загрузка закончена"

procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
 ????????????????????????
end;

Нет ли у кого похожего кода, чтоб на пустом месте не гадать?
Заранее спасибо


 
sniknik ©   (2011-10-08 22:14) [1]

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


 
Омлет ©   (2011-10-08 22:30) [2]

function GetWB_HTML(const WebBrowser: TWebBrowser): string;
var
 ResultStream: TStringStream;
 Adapter: IStream;
 WBStream: IPersistStreamInit;
begin
 Result := "";
 if assigned(WebBrowser.Document) then
 begin
   ResultStream := TStringStream.Create("");
   try
     WBStream := WebBrowser.Document as IPersistStreamInit;
     Adapter := TStreamAdapter.Create(ResultStream, soReference);
     if Succeeded(WBStream.Save(Adapter, true)) then
       Result := ResultStream.DataString;
   finally
     ResultStream.Free;
   end;
 end;
end;


+ Clipboard.SetTextBuf


 
Loginov Dmitry ©   (2011-10-08 22:31) [3]

в помощь:
http://matrix.kladovka.net.ru/index.php?page=htmleditor


 
sniknik ©   (2011-10-08 22:35) [4]

блин какие все сложные...

вот в "помощь" http://www.cryer.co.uk/brian/delphi/twebbrowser/twebbrowser_oleobject.htm#OleObject.Document.documentElement.innerHTML

а вот что из этого получается
ShowMessage(Variant(WebBrowser1.Document as IHTMLDocument2).documentElement.innerHTML);


 
Омлет ©   (2011-10-08 22:52) [5]

А, я, возможно, неверно понял, и автору надо не html, а просто отображаемый текст без разметки. Тогда см. [4] + innerText.


 
Pcrepair ©   (2011-10-09 10:11) [6]

Всем спасибо, даже sniknik
мне нужна имитация действий пользователя  Ctrl+A и Ctrl+C, причем именно в том случае когда страница с TWebBrowser не в фокусе (у меня там три страницы - страница с TWebBrowser, страница с вводом УРЛ и кнопкой "грузить", страница с Тмемо, куда нужно потом вводить скопированный текст со сслылками

конечно, в теории, можно было бы просто загрузить код ХТМЛ-страницы через компоненту ИНДИ и удалить все лишние теги, если бы не ЖАБА.

поэтому используется TWebBrowser со встроенным JavaScript, поскольку нынче ЖАБА напихана практически повсюду


 
sniknik ©   (2011-10-09 10:34) [7]

> А, я, возможно, неверно понял
судя по последнему наоборот верно... где телепатор брал? ;)

> если бы не ЖАБА.
а если Ajax или "длинные" обработке на яваскрипте? WebBrowser1DownloadComplete будет далеко не Complete с точки зрения готовности страницы, а не ее скачивания.


 
Pcrepair ©   (2011-10-09 11:00) [8]

ну пусть хоть как то работает, пока
совершенства нет


 
Loginov Dmitry ©   (2011-10-09 13:47) [9]


> WebBrowser1DownloadComplete будет далеко не Complete с точки
> зрения готовности страницы, а не ее скачивания.


Он и для самой простой страницы не комплит. Новые версии IE после этого события еще порядка четверти секунды чем-то своим занимаются, в связи с этим не все операции проходят корректно (возможны сбои).


 
Pcrepair ©   (2011-10-09 14:00) [10]


> Омлет ©   (08.10.11 22:30) [2]

так эта функция она что делает?
вообще нужно:
- после окончания загрузки кода ХТМЛ-страницы
- после отработки JavaScript
- после отображения страницы в окне браузера (раз отображено - значит все действия со страницей закончены)
скопировать текст страницы в буфер или ПЕРЕМ(что лучше)
- с сохранением всех УРЛ (ссылок)
- с сохранением структуры текста (таблицы)
- без сохранения картинок
- удалить все ненужные теги и их содержимое (стили всякие дИВы и прчую мутотень, которой так много в нынешних сайтах)
отобразить в МЕМО или другом типе окна (только для визуального контроля) страницу в уже упрощенном виде
никто ничего похожего не делал?


 
Palladin ©   (2011-10-09 19:05) [11]

мясо все браузер пишет ) минимум затрат максимум огазма )


 
DiamondShark ©   (2011-10-09 20:43) [12]


> мне нужна имитация действий пользователя  Ctrl+A и Ctrl+C,

Ctrl+A:
http://msdn.microsoft.com/en-us/library/aa770025

Ctrl+C:
http://msdn.microsoft.com/en-us/library/aa769872

Любите хелп -- источник знаний.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.01.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
15-1317413710
TUser
2011-10-01 00:15
2012.01.15
Задача


15-1317303611
БарЛог
2011-09-29 17:40
2012.01.15
Контроллеры домена для разных сайтов


15-1317134857
PreDatoR
2011-09-27 18:47
2012.01.15
Ваши партии с шахматными движками.


15-1316494673
xayam
2011-09-20 08:57
2012.01.15
АНТИВИРУСЫ НА ВОЙНЕ


1-1279540450
crossmark
2010-07-19 15:54
2012.01.15
Delphi and Interface





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский