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

Вниз

Как прочитать текст странички из окна эксплорера?   Найти похожие ветки 

 
SergP ©   (2004-01-18 10:23) [0]

Нужно прочитать в переменную string содержимое определенного фрейма сайта, открытого в окне IE.
Дело в том что как это сделать юзая TWebbrowser  я знаю, а вот с окнами самого IE не пробовал еще работать.
Кто может приведите код. (Если не фрейма, то хотя-бы самого сайта, или хотя бы как добраться до него, а с фреймом тогда я уже сам разберусь).

И еще вопрос:
Если у меня открыто несколько окон браузера, как мне прочитать данные из нужного мне окна? Т.е. по каким параметрам я их смогу отличить друг от друга? (Например УРЛ или еще чего-нить)...


 
Opuhshii ©   (2004-01-18 15:47) [1]

http://podgoretsky.com/ftp/Docs/Delphi/Tenser/9/WebBrowser.doc


 
SergP ©   (2004-01-18 16:43) [2]


> Opuhshii ©   (18.01.04 15:47) [1]
> http://podgoretsky.com/ftp/Docs/Delphi/Tenser/9/WebBrowser.doc


Но ведь я же не это просил. Там по поводу моего вопроса ничего нет.


 
SergP ©   (2004-01-19 02:26) [3]

Если в прогу встроить TWebbrowser и из него вытягивать текст странички то у меня с этим проблем нет никаких.

Но хотелось бы не использовать встроенный в прогу TWebbrowser, а работать с окном Эксплорера , поэтому и возникают проблемы. Я не знаю как с ним работать, ведь моя прога и эксплорер - это разные приложения, и я не знаю как из своего приложения добраться до чужого...
Вроде бы когда-то мелькали сообщения по подобным темам, но меня тогда это не интересовало, а сегодня пробовал искать и ничего не нашел по этому поводу...


 
Opuhshii ©   (2004-01-19 14:51) [4]

IShellWindows, IWebBrowser2, IHTMLDocument ...


 
easy ©   (2004-01-19 15:44) [5]

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)
   Button2: TButton;
   Memo1: TMemo;
   procedure Button2Click(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.Button2Click(Sender: TObject);
var
 Wnd: HWND;
 WndChild: HWND;
 IE: iwebbrowser2;
begin
 Wnd := FindWindow("IEFrame", nil);
 if Wnd = 0 then //No running instance of Internet Explorer so stop!
 begin
   showmessage("No Running instance of Internet Explorer");
   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.


http://www.euromind.com/iedelphi/ie5tools/ieautomate.htm
http://oleg.webzone.ru/faqansw.asp?id=55


 
int64   (2004-01-19 16:06) [6]

http://www.euromind.com/iedelphi/ie5tools/ieautomate.htm



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
14-1077866459
Карелин Артем
2004-02-27 10:20
2004.03.28
Где взять инфу по репликации баз?


3-1077868815
ildar
2004-02-27 11:00
2004.03.28
Как узнать значение выделенной ячейки DBGrid?


3-1077782258
Alex*
2004-02-26 10:57
2004.03.28
Как пользоваться командой DbiPackTable


4-1073768458
tytus
2004-01-11 00:00
2004.03.28
Нуль-терминал в OLE-строку.


6-1073669581
Gringer
2004-01-09 20:33
2004.03.28
результат net time