|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"[Wininet]Internetよりファイルを取得"
usesにWininetを加えてください。Wininet.dllはInternet Explorerで使われ
ているDLLです。
InternetからファイルをGETメソッドで取得します。InternetOpenの1番目は
Agent名(Mozilla/4.0とか)なんですが、nilでもOK。2番目のパラメーターに
INTERNET_OPEN_TYPE_PRECONFIGを指定するとレジストリを見に行って、IEと同
じ設定になります。
Wininetに関する詳細は、
http://msdn.microsoft.com/workshop/networking/wininet/wininet.asp
function GetFileFromInternet(const AUrl:string; AStream:TStream): boolean;
var
hSession, hConnect: hInternet;
Buf: array[0..1023] of Char;
ReadCount: Cardinal;
begin
Result := False;
hSession := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hConnect := InternetOpenUrl(hSession, PChar(AUrl), nil, 0, 0, 0);
try
while True do //ストリームに書き込み
begin
if not InternetReadFile(hConnect, @Buf, SizeOf(Buf), ReadCount) then
Break;
if ReadCount = 0 then
Break
else
begin
AStream.Write(Buf, ReadCount);
Result := True;
end;
end;
finally
InternetCloseHandle(hConnect);
end;
finally
InternetCloseHandle(hSession);
end;
end;
■使い方■
FormにMemoとButtonを1つ置いて下さい。
procedure TForm1.Button1Click(Sender: TObject);
var
M: TMemoryStream;
begin
if InternetAttemptConnect(0) = ERROR_SUCCESS then
begin
M := TMemoryStream.Create;
try
if GetFileFromInternet('http://www.inprise.co.jp/', M) then
begin
M.Position := 0;
Memo1.Lines.LoadFromStream(M);
end else
Memo1.Lines.Text := '失敗';
finally
M.Free;
end;
end;
end;
00/05/22 (Mon) ぶんぶん鈴木
Original document by ぶんぶん鈴木 氏 ID:(EZA00106)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|