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