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

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

TWebBrowser и копирование страницы в ПЕРЕМ


Pcrepair ©   (2011-12-14 16:48:00) 

Добрый день. Есть простой код браузера, позволяющий скачать странцу, "выделить все" на странице и скопировать в буфер обмена ОС. все работает (кроме ХТМЛ-страниц с фреймами, там ничего не выделяется)
Но использовать Буфер обмена нежелательно, его могут использовать и другие программы что может привести к ошибкам
вот текущий код:

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.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
 repeat
   Application.ProcessMessages;
 until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
 if WebBrowser1.Document <> nil then
 (Webbrowser1.Document as IHTMLDocument2).ParentWindow.Focus;
 WebBrowser1.ExecWB(OLECMDID_SELECTALL,OLECMDEXECOPT_DONTPROMPTUSER);
 Application.ProcessMessages;
 if (Webbrowser1.Document as IHTMLDocument2).queryCommandEnabled('Copy') then
 WebBrowser1.ExecWB(OLECMDID_COPY,OLECMDEXECOPT_DONTPROMPTUSER); //вот тут копируем в буфер обмена
 Application.ProcessMessages;
end;

initialization
 Set8087CW($133F);
 OleInitialize(nil);
finalization
 OleUninitialize;
end.

ВОПРОС: каким образом копировать содержимое страницы в ПЕРЕМ?
Наверно что то вроде:

var
HTML : TMemoryStream; //та самая ПЕРЕМ, далее остальной код, меняем {WebBrowser1.ExecWB(OLECMDID_COPY,OLECMDEXECOPT_DONTPROMPTUSER);} на что то типа

if (Webbrowser1.Document as IHTMLDocument2).queryCommandEnabled('Copy') then
 begin
   HTML := TMemoryStream.create; //создадим поток
    вот тут какой то код, который переносит в ПЕРЕМ содержимое контейнера браузера
 end;
Application.ProcessMessages; //хотя зачем это несовсем понятно
end;

Если кто в курсе, подскажите код
Заранее спасибо.


Pcrepair   (2011-12-15 17:49:00) [1]

димок, пойди уже лучше дворником поработай, на свежем воздухе, не погрязуй во флуде


Dimka Maslov   (2011-12-15 17:28:00) [2]

1. Вообще-то это форум для законченных.
2. Опыта у нас нет
3. Даже если бы и был делиться им мы не обязаны
4. Мы знаем, где можно прочитать про это
5. У нас нет времени читать, разбираться и докладывать, это можно сделать самостоятельно.
6. Да, у нас есть время флудить здесь.


Pcrepair   (2011-12-15 17:18:00) [3]

хватит уже теорий, тут форум для начинающих
или делитесь опытом или флудите в другом месте


Dimka Maslov   (2011-12-15 16:59:00) [4]

Любой программист должен знать, что есть MSDN, в которой написано буквально всё, что касается программирования под венду. В частности описание интерфейса IHTMLDocument2
http://msdn.microsoft.com/en-us/library/aa752574%28v=vs.85%29.aspx

Впрочем, если программист не знает, зачем у него в коде Application.ProcessMessages
и
Set8087CW($133F)...


Pcrepair   (2011-12-15 14:36:00) [5]

по существу вопроса кто что знает?

> а чем тебе не нравится для хранения Webbrowser1.Document
> as IHTMLDocument2 ?

то есть получается что у ТВебБраузер свои типы переменных? и в TMemoryStream данные из браузера не запихнуть?
в ПЕРЕМ данные размещаются для последующей обработки - удаления всего лишнего (скриптов, флэш, картинок, стилей)


Palladin   (2011-12-15 14:29:00) [6]

кто сказал что он программист ? )


KilkennyCat   (2011-12-14 23:43:00) [7]


> Dimka Maslov ©   (14.12.11 21:29) [2]

скорее всего. ибо вряд ли программист, знающий Set8087CW($133F);не сообразит столь банальной вещи.


Dimka Maslov   (2011-12-14 21:29:00) [8]


> а чем тебе не нравится для хранения Webbrowser1.Document
> as IHTMLDocument2 ?


Это же не та самая ПЕРЕМ!


KilkennyCat   (2011-12-14 20:09:00) [9]


> Application.ProcessMessages; //хотя зачем это несовсем понятно

если непонятно, то зачем написал?

а чем тебе не нравится для хранения Webbrowser1.Document as IHTMLDocument2 ?


Наверх

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