如何用Delphi做一个服务程序读取网页中的一段文本 我想做一个Delphi的服务程序,它的功能是,读取一个特定的ip地址上的一个页面中的内容(如 http://192.168.0.3/ip/GetIp.aspx),然后返回这个页面的所有显示的字符串,如何操作?本人没有做过网络Delphi,希望能具体说一下要放入什么组件来实现这个功能.还有就是如何创建成一个服务程序而不是应用程序.多谢!!!最好给我贴个源代码! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Webbrowseruses MSHTML, ActiveX,comobj;function GetHtml(const WebBrowser:TWebBrowser): string;constBufSize = $10000;varSize: Int64;Stream: IStream;hHTMLText: HGLOBAL;psi: IPersistStreamInit;beginif not Assigned(WebBrowser.Document) then Exit;OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));try hHTMLText := GlobalAlloc(GPTR, BufSize); if 0 = hHTMLText then RaiseLastWin32Error; OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream)); try OleCheck(psi.Save(Stream, False)); Size := StrLen(PChar(hHTMLText)); SetLength(Result, Size); CopyMemory(PChar(Result), Pointer(hHTMLText), Size); finally Stream := nil; end;finally psi := nil;end;end; 如果只要html源码,下面这样就行procedure TForm1.Button1Click(Sender: TObject);var htmlStr: string;begin htmlStr := idhttp1.Get('http://192.168.0.3/ip/GetIp.aspx');end; 如果要得到显示在页面上的文本,用下面的方法uses MSHTML, ActiveX;procedure TForm1.Button1Click(Sender: TObject);var HtmlStr: string; doc2: IHTMLDocument2; V: OleVariant;begin try try HtmlStr := IdHTTP1.Get('http://192.168.0.3/ip/GetIp.aspx'); except end; doc2 := CoHTMLDocument.Create as IHtmlDocument2; try V := VarArrayCreate([0, 0], varVariant); V[0] := HtmlStr; doc2.Write(PSafeArray(TVarData(v).VArray)); doc2.Close; HtmlStr := Trim(doc2.body.innerText); Caption := HtmlStr; finally end; doc2 := nil; except end;end; procedure TForm1.Button1Click(Sender: TObject);var strm: TStringStream; doc2: IHTMLDocument2; V: OleVariant; HtmlStr: string;begin strm := TStringStream.Create('', 936); IdAntiFreeze1.OnlyWhenIdle := False; // 设置使程序有反应 try IdHTTP1.Get('http://hi.baidu.com/', strm); doc2 := CoHTMLDocument.Create as IHTMLDocument2; try V := VarArrayCreate([0, 0], varVariant); V[0] := strm.DataString; doc2.Write(PSafeArray(TVarData(V).VArray)); doc2.Close; HtmlStr := Trim(doc2.body.innerText); Memo1.Lines.Text := HtmlStr; finally end; except ShowMessage('网络错误!'); strm.Free; Exit; end;end;这个代码中文没有乱码了。 procedure TForm1.Button1Click(Sender: TObject);var strm: TStringStream; doc2: IHTMLDocument2; V: OleVariant; HtmlStr: string;begin strm := TStringStream.Create('', 936); IdAntiFreeze1.OnlyWhenIdle := False; // 设置使程序有反应 try IdHTTP1.Get('http://hi.baidu.com/', strm); doc2 := CoHTMLDocument.Create as IHTMLDocument2; try V := VarArrayCreate([0, 0], varVariant); V[0] := strm.DataString; doc2.Write(PSafeArray(TVarData(V).VArray)); doc2.Close; HtmlStr := Trim(doc2.body.innerText); Memo1.Lines.Text := HtmlStr; finally end; except ShowMessage('网络错误!'); strm.Free; Exit; end;end;这个代码中文没有乱码了。 如何用代码获得当前窗本的name和caption Delphi之家(群号:18591982)关于招收MM学员的通告 关于用DELPHI+SQL SERVER开发简繁双语言版本的问题。高手请进! 求救:Tadoconnection连接oracle 关于MDI关闭的问题 调试问题 关于XMLMapper 这是什么问题,是关于分辨率的问题?? 一个窗体中的TADODataSet组件怎样可以给使一个窗体使用? 我在上台湾的网站时,显示的是乱吗,有没有解决的方法,大家看看。! delphi中如何导入excel表格 Delphi病毒
uses MSHTML, ActiveX,comobj;function GetHtml(const WebBrowser:TWebBrowser): string;
const
BufSize = $10000;
var
Size: Int64;
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
hHTMLText := GlobalAlloc(GPTR, BufSize);
if 0 = hHTMLText then RaiseLastWin32Error; OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
try
OleCheck(psi.Save(Stream, False)); Size := StrLen(PChar(hHTMLText));
SetLength(Result, Size);
CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
finally
Stream := nil;
end;
finally
psi := nil;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
htmlStr: string;
begin
htmlStr := idhttp1.Get('http://192.168.0.3/ip/GetIp.aspx');
end;
uses
MSHTML, ActiveX;procedure TForm1.Button1Click(Sender: TObject);
var
HtmlStr: string;
doc2: IHTMLDocument2;
V: OleVariant;
begin
try
try
HtmlStr := IdHTTP1.Get('http://192.168.0.3/ip/GetIp.aspx');
except end; doc2 := CoHTMLDocument.Create as IHtmlDocument2;
try
V := VarArrayCreate([0, 0], varVariant);
V[0] := HtmlStr;
doc2.Write(PSafeArray(TVarData(v).VArray));
doc2.Close;
HtmlStr := Trim(doc2.body.innerText);
Caption := HtmlStr;
finally end; doc2 := nil;
except end;
end;
var
strm: TStringStream;
doc2: IHTMLDocument2;
V: OleVariant;
HtmlStr: string;begin
strm := TStringStream.Create('', 936);
IdAntiFreeze1.OnlyWhenIdle := False; // 设置使程序有反应
try IdHTTP1.Get('http://hi.baidu.com/', strm); doc2 := CoHTMLDocument.Create as IHTMLDocument2;
try
V := VarArrayCreate([0, 0], varVariant);
V[0] := strm.DataString;
doc2.Write(PSafeArray(TVarData(V).VArray));
doc2.Close;
HtmlStr := Trim(doc2.body.innerText);
Memo1.Lines.Text := HtmlStr;
finally end;
except
ShowMessage('网络错误!');
strm.Free;
Exit;
end;
end;这个代码中文没有乱码了。
var
strm: TStringStream;
doc2: IHTMLDocument2;
V: OleVariant;
HtmlStr: string;begin
strm := TStringStream.Create('', 936);
IdAntiFreeze1.OnlyWhenIdle := False; // 设置使程序有反应
try IdHTTP1.Get('http://hi.baidu.com/', strm); doc2 := CoHTMLDocument.Create as IHTMLDocument2;
try
V := VarArrayCreate([0, 0], varVariant);
V[0] := strm.DataString;
doc2.Write(PSafeArray(TVarData(V).VArray));
doc2.Close;
HtmlStr := Trim(doc2.body.innerText);
Memo1.Lines.Text := HtmlStr;
finally end;
except
ShowMessage('网络错误!');
strm.Free;
Exit;
end;
end;这个代码中文没有乱码了。