Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.358 c
3-1078075764
Wlad
2004-02-29 20:29
2004.03.28
dbgrid


1-1078997336
senator
2004-03-11 12:28
2004.03.28
Как сделать так чтобы Mainmenu главной формы не перекрывалось


3-1077629735
Desdechado
2004-02-24 16:35
2004.03.28
Странное поведение в TClientDataset


1-1078836392
hexone
2004-03-09 15:46
2004.03.28
Функция Move из system.pas


1-1078932225
В л а д и м и р
2004-03-10 18:23
2004.03.28
Как прочитать слово из середины предложения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский