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

Вниз

Как сохранить содержимое окна IE   Найти похожие ветки 

 
Moisha   (2005-04-26 17:08) [0]

Уважаемые мастера, подскажите пожалуйста, как сохранить содержимое нужного окна IE (название окна известно)


 
easy ©   (2005-04-26 17:40) [1]

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, activex, mshtml, SHDocVw;
type
 TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
type
 TForm1 = class(TForm)
   Memo1: TMemo;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
function WB_GetHTMLCode(WebBrowser: iwebbrowser2; ACode: TStrings): Boolean;
implementation
{$R *.dfm}
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
 hInst: HWND;
 lRes: Cardinal;
 MSG: Integer;
 pDoc: IHTMLDocument2;
 ObjectFromLresult: TObjectFromLresult;
begin
 hInst := LoadLibrary("Oleacc.dll");
 @ObjectFromLresult := GetProcAddress(hInst, "ObjectFromLresult");
 if @ObjectFromLresult <> nil then begin
   try
     MSG := RegisterWindowMessage("WM_HTML_GETOBJECT");
     SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
     Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
     if Result = S_OK then
       (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);
   finally
     FreeLibrary(hInst);
   end;
 end;
end;
function WB_GetHTMLCode(WebBrowser: iwebbrowser2; ACode: TStrings): Boolean;
var
 ps: IPersistStreamInit;
 ss: TStringStream;
 sa: IStream;
 s: string;
begin
 ps := WebBrowser.Document as IPersistStreamInit;
 s := "";
 ss := TStringStream.Create(s);
 try
   sa := TStreamAdapter.Create(ss, soReference) as IStream;
   Result := Succeeded(ps.Save(sa, True));
   if Result then ACode.Add(ss.Datastring);
 finally
   ss.Free;
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
 Wnd: HWND;
 WndChild: HWND;
 IE: iwebbrowser2;
begin
 Wnd := FindWindow("IEFrame", "название окна");
 if Wnd = 0 then //No running instance of Internet Explorer so stop!
 begin
   showmessage(Not found.");
   exit;
 end;
// walk Shell DocObject View->Internet Explorer_Server
 WndChild := FindWindowEX(Wnd, 0, "Shell DocObject View", nil);
 if WndChild <> 0 then begin
   WndChild := FindWindowEX(WndChild, 0, "Internet Explorer_Server", nil);
   if WndChild <> 0 then
   begin
     GetIEFromHWnd(WndChild, IE); //Get Iwebbrowser2 from Handle
     memo1.Clear;
     WB_GetHTMLCode(IE, memo1.Lines);
   end;
 end;
end;
end.


 
Moisha   (2005-04-26 18:52) [2]

благодарю покорнейше


 
Moisha ©   (2005-04-26 19:17) [3]

Easy, будешь в Севасе с меня пиво


 
easy ©   (2005-04-26 23:22) [4]


> Moisha ©   (26.04.05 19:17) [3]

в обязательном порядке..



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

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
14-1121404689
Ega23
2005-07-15 09:18
2005.08.07
С днем рождения! 15 июля


1-1121405141
Анастасия
2005-07-15 09:25
2005.08.07
Перетаскивание текста между формами


4-1118032871
Салават
2005-06-06 08:41
2005.08.07
описание файлов


1-1121531102
Defunct
2005-07-16 20:25
2005.08.07
AV при создании формы-фрейма


3-1119542398
Koala
2005-06-23 19:59
2005.08.07
Помогите организовать ХП (Firebird)