Якщо ваша програма містить модулі (BPL або DLL) або є необхідність оновлювати саму програму, то напевно стояла проблема поновлення копій програми. З розвитком Internet з'явилася прекрасна можливість зробити це швидко і красиво. У даній статті ми розповімо, як додати опцію автооновлення програм з Internet.
Delphi дає нам повний доступ до API WinInet (wininet.pas), що дозволяє підключитися і завантажити будь-який файл з зазначеного веб, використовуючи протоколи FTP або HTTP. Наприклад, ми можемо використовувати функції API WinInet для створення FTP-браузера або програми для пошуку на публічних FTP-серверах заданих файлів.
Основна функція нашої програми - GetInetFile:
Зауваження: звичайно, цей приклад потрібно розширити, вставивши, наприклад, код для відображення прогресу скачування в цикл.
Використовувати функцію GetInetFile дуже просто:
А що якщо загубиться з'єднання - програма зависне.
Як цього уникнути (встановити нове з'єднання і докачати файл?
і антивірус розпізнає як вірус програму. з вашим кодом)
а якщо мені треба з фтп скачати, де треба вказати логін і пароль?
var FileOnNet, LocalFileName: string;
if GetInetFile (FileOnNet, LocalFileName) = True then
ShowMessage ( 'Download successful')
else
ShowMessage ( 'Error in file download')
end;
в C ++ Builder6 - IdHTTP і IdFTP (Indy Clients)
uses urlmon;
var i. hresult;
begin
if ParamCount <> 2 then begin
writeln ( 'format: wload
end;
i: = URLDownloadToFile (nil, pchar (ParamStr (1)), pchar (ParamStr (2)), 0, nil);
if i <> 0 then writeln ( 'download error.', I);
end.
Имхо, все ж краще такі речі писати з використанням сокетів.
Щоб показувати прогрес, добре-б дізнатися розмір завантажувати файли.
може хто знає як програмно перевести IE в режим Online?
Угу, так і зробили в Shareaza 2.2.0.0
В результаті якщо Internet Explorer в offline режимі, або якщо включена Посилена Конфігурація Безпеки - нічого не працювало нафіг.