Форум: "Начинающим";
Текущий архив: 2012.04.08;
Скачать: [xml.tar.bz2];
ВнизTWebBrowser и копирование страницы в ПЕРЕМ Найти похожие ветки
← →
Pcrepair © (2011-12-14 16:48) [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.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;
Если кто в курсе, подскажите код
Заранее спасибо.
← →
KilkennyCat © (2011-12-14 20:09) [1]
> Application.ProcessMessages; //хотя зачем это несовсем понятно
если непонятно, то зачем написал?
а чем тебе не нравится для хранения Webbrowser1.Document as IHTMLDocument2 ?
← →
Dimka Maslov © (2011-12-14 21:29) [2]
> а чем тебе не нравится для хранения Webbrowser1.Document
> as IHTMLDocument2 ?
Это же не та самая ПЕРЕМ!
← →
KilkennyCat © (2011-12-14 23:43) [3]
> Dimka Maslov © (14.12.11 21:29) [2]
скорее всего. ибо вряд ли программист, знающийSet8087CW($133F);
не сообразит столь банальной вещи.
← →
Palladin © (2011-12-15 14:29) [4]кто сказал что он программист ? )
← →
Pcrepair © (2011-12-15 14:36) [5]по существу вопроса кто что знает?
> а чем тебе не нравится для хранения Webbrowser1.Document
> as IHTMLDocument2 ?
то есть получается что у ТВебБраузер свои типы переменных? и в TMemoryStream данные из браузера не запихнуть?
в ПЕРЕМ данные размещаются для последующей обработки - удаления всего лишнего (скриптов, флэш, картинок, стилей)
← →
Dimka Maslov © (2011-12-15 16:59) [6]Любой программист должен знать, что есть MSDN, в которой написано буквально всё, что касается программирования под венду. В частности описание интерфейса IHTMLDocument2
http://msdn.microsoft.com/en-us/library/aa752574%28v=vs.85%29.aspx
Впрочем, если программист не знает, зачем у него в коде Application.ProcessMessages
и
Set8087CW($133F)...
← →
Pcrepair © (2011-12-15 17:18) [7]хватит уже теорий, тут форум для начинающих
или делитесь опытом или флудите в другом месте
← →
Dimka Maslov © (2011-12-15 17:28) [8]1. Вообще-то это форум для законченных.
2. Опыта у нас нет
3. Даже если бы и был делиться им мы не обязаны
4. Мы знаем, где можно прочитать про это
5. У нас нет времени читать, разбираться и докладывать, это можно сделать самостоятельно.
6. Да, у нас есть время флудить здесь.
← →
Pcrepair © (2011-12-15 17:49) [9]димок, пойди уже лучше дворником поработай, на свежем воздухе, не погрязуй во флуде
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c