Форум: "Сети";
Текущий архив: 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