Скачиваем и запускаем файл из инета средствами Delphi
uses Windows, Messages, Wininet, ShellAPI;
function GetInetFile(const URL, FileName: string): boolean;
const
BufferSize = 1024; // размер буффера для закачки фаила в килобайтах
//следовательно если фаил большего размера то работать не будет
//для таких случаев более удобен динамический массив
var
hSession, hURL: HInternet; //переменные соединения и открытия сессии
Buffer: array[1..BufferSize] of Byte; //сам буфер
BufferLen: DWORD; //длина прочитанного
myfile: 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(URL), nil, 0, 0, 0); //получаем указатель на фаил в интернете
try //-\\-
AssignFile(myfile, FileName); //указываем и открываем на запись
Rewrite(myfile,1); // фаил для заполнения скаченым из нета
repeat //повторяем -
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen); //пытаемся скачать
BlockWrite(myfile, Buffer, BufferLen); //записываем в фаил
until // - пока
BufferLen = 0; //ничего не скачено а если уже скачали то…
CloseFile(myfile); //закрываем закачанный фаил
Result := True; //и говорим что закачали
finally // на конец
InternetCloseHandle(hURL); //закрываем соедениние
end;
finally // -\\-
InternetCloseHandle(hSession); //закрываем указатель
end;
end;