Hej,
Jeg har brugt rutinen før men det har været til text-filer og det viser sig at jeg desværre har husket noget forkert. Den tager ikke scripts eller andre ting, ej heller billeder, men kun den rå HTML-kode. Men den virker perfekt.
Men her er den:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, WinInet;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
function GetInetFile (const fileURL, FileName: String): boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
internetFile,
localFileName: string;
begin
// URL (=InternetFile) er sat til en "idiot-adresse " må ændres efter behov
internetFile := '
http://www.lalala.com/index.php'; localFileName := 'c:\Myfile.htm';
if GetInetFile(internetFile, localFileName) then
ShowMessage('Download successful.')
else
ShowMessage('Error in file download.') ;
end;
function TForm1.GetInetFile (const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
result := false;
sAppName := ExtractFileName(Application.ExeName) ;
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) ;
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0) ;
try
AssignFile(f, FileName) ;
Rewrite(f,1) ;
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
BlockWrite(f, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(f) ;
result := True;
finally
InternetCloseHandle(hURL);
end;
finally
InternetCloseHandle(hSession);
end
end;
END.
Bruger selv TWebbrowser en del og har ikke problemer med at læse HTML-koden, men skal finde Delphi-koden på en gammel harddisk Plug-in enhed.. (og erindrer ikke umiddelbart hvor den er... ).
KRISTIAN