如何编程获得Twebbrowser的网页(50分)

  • 主题发起人 主题发起人 sxx
  • 开始时间 开始时间
S

sxx

Unregistered / Unconfirmed
GUEST, unregistred user!
如同Tthml控件一样:Tthml.sourcetext可以获得一个网页的源文件,在Twebbrowser中将如何做?
 
use urlmon
他的function
function URLDownloadToFile(p1: IUnknown; p2: PChar; p3: PChar; p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
参数分别是:
NULL,HTTP,本地文件,0,NULL
 
我先试一下。
 
请问crane,最后一个参数好象编译时犯一个类形不匹的问题;想请教如是好?
 
[Error] Unit1.pas(28): Incompatible types: 'Variant' and 'IBindStatusCallback'
 
源代码如下:
use urlmon
//
procedure TForm1.Button1Click(Sender: TObject);
begin
URLDownloadToFile(null,'http://www.yahoo.com','c:/liu.htm',0,null);
end;
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, OleCtrls, SHDocVw,mshtml;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
webbrowser1.Navigate('http://202.114.98.12/book/');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
all:IHTMLElementcollection;
doc:IHTMLDocument2;
item:OleVariant;
begin
doc:=webbrowser1.document as ihtmldocument2;
all:=doc.all;
item:=all.item(0,varEmpty);
Memo1.Clear;
memo1.Lines.Add(item.innerhtml);//item.innerhtml就是源文件内容
end;

end.
 
另外 crane的方法这么写才对
use urlmon;
//
procedure TForm1.Button1Click(Sender: TObject);
begin
URLDownloadToFile(nil,'http://www.yahoo.com','c:/liu.htm',0,nil);
end;

 
hubdog:
我还想再深入问一下,memo1.Lines.Add(item.innerhtml);编译是通了,但运行时
却又报错,我想请你再详细解说一下,当然如果令人满意我会再给你加分(你知道我
还有180分,最好只告诉我一个用E-mail).
 
喂!我们都想知道一下。
 
不会啊,我用的一点问题都没有,怎么会出错?错误信息是什么?
你必须先navigate到'http://202.114.98.12/book/站点后,才能Get
item.innerhtml.
至于编译问题,olevariant是后期编译,编译时不会检查参数的有效性
你在olevariant后面放什么都行,当然不会报错
 
网站到是不错,可总出现一个“未指定错误”。
 
liuminghao说的对,我也遇到了类似的问题。
 
我还想知道item.innerhtml中innerhtml是什么意思。
 
问题可能出在:item:=all.item(0,varEmpty) ;这一句上。
 
我不清楚为什么,我这上面一点问题都没有,我刚试
着连了一下www.gislab.ecnu.edu.cn,完全能够得到
html的内容。要不你试一下别的网址
 
噢!我实在是太可怜了。
请大家继续讨论。我将为些再加50分。
 
hubdog:
交个朋友,在这里我实在是遇到了问题!我在网上等着你。
 
答案我还有些不满意。
 
to sxx:
也可能和你的ie版本有关,你试一下ie5或ie5.5吧
 
后退
顶部