Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.08;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1324049370
Валерий
2011-12-16 19:29
2012.04.08
Не компилируеться проэкт на удаленной машине


8-1222425668
M3
2008-09-26 14:41
2012.04.08
Формат WAV GSM 6.10 Определить длительность звучания


2-1324028884
Alatiel
2011-12-16 13:48
2012.04.08
помогите пожалуйста решить задачку по delphi


15-1323418760
_Андрей_
2011-12-09 12:19
2012.04.08
Наложение прозрачного изображения на сканируемые документы


15-1323234832
Генсек
2011-12-07 09:13
2012.04.08
Законность. Программа использует другую программу.