Главная страница
    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.035 c
3-1077773925
BanderLog
2004-02-26 08:38
2004.03.28
Проблемы с запросом


3-1077783340
Mamed
2004-02-26 11:15
2004.03.28
SQL Transaction(SQlServer 2000)


7-1073742498
Veace$lav
2004-01-10 16:48
2004.03.28
Преобразование


14-1074855022
mfender
2004-01-23 13:50
2004.03.28
Беда!


6-1074309872
olegking
2004-01-17 06:24
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский