Ответы на некоторые вопросы связанные с Интернетом.

Ответы на некоторые вопросы связанные с Интернетом.

Как открыть почтовую программу с нужным адресом?

uses
ShellApi;

// Просто запустить почтовый клиент
ShellExecute( Handle, 'open',
PChar( 'mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.' ),
'', '', SW_SHOW );
// Если в письмо нужно вставить тему, то пишите так
ShellExecute( Handle, 'open',
PChar( 'mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.?Subject=Tema' ),
'', '', SW_SHOW );
// А если и текст нужно вставить, то так
ShellExecute( Handle, 'open',
PChar( 'mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.?Subject=Tema&Body=Text' ),
'', '', SW_SHOW );
// Добавляем адресатов
ShellExecute( Handle, 'open',
PChar( 'mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.?Subject=Tema&Body=Text&cc=адрес@получателя&bcc=скрытая@копия' ),
'', '', SW_SHOW );
// Ну и для полного счастья...
ShellExecute( Handle, 'Open',
'mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.?subject=Tema&Body=Строка%201%0D%0AСтрока%202&CC=Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.',
nil, nil, SW_RESTORE );

// Краткие пояснения к последнему примеру
// 1) Пробелы в тексте желательно заполнять сочетанием %20
// 2) Конец строки обозначать как %0D%0A
// 3) Поля отделять друг от друга символом &

Как сделать ссылку - URL?

uses
ShellApi;

// Для того, чтобы Internet Explorer запустился,
// обязательно нужно, чтобы Label1.Caption начинался с
// "www." или "http://" { естественно без ковычек }
procedure TForm1.Label1Click(Sender: TObject);
begin
ShellExecute( 0, nil, PChar( Label1.Caption ),
nil, nil, SW_NORMAL );
end;

Как скопировать файл из сети?

uses
..., WinInet;

function 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;

procedure TForm1.Button1Click(Sender: TObject);
var
FileOnNet, LocalFileName: string;
begin
// Полный путь к файлу
FileOnNet := 'http://decoding.narod.ru/book/doc/synchronization.zip';
// Имя, под которым файл будет сохранен
LocalFileName:='File Downloaded From the Net.zip';
if GetInetFile( FileOnNet, LocalFileName ) then
ShowMessage( 'Download successful' )
else
ShowMessage( 'Error in file download' );
end;

Как узнать размер файла в интернете?

// Способ первый
uses
..., WinInet;

(* Функция возвращает размер файла в байтах *)
function GetUrlSizeInByte( const URL: string ): integer;
var
hSession, hFile: hInternet;
dwBuffer: array[1..20] of char;
dwBufferLen, dwIndex: DWORD;
begin
Result := 0;
hSession := InternetOpen( 'GetUrlSize', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil ,0 );
if Assigned( hSession ) then
begin
hFile := InternetOpenURL( hSession, PChar( URL ), nil, 0, INTERNET_FLAG_RELOAD, 0 );
dwIndex := 0;
dwBufferLen := 20;
if HttpQueryInfo( hFile, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex ) then
Result := StrToInt( StrPas( @dwBuffer ) );
if Assigned( hFile ) then
InternetCloseHandle( hFile );
InternetCloseHandle( hSession );
end;
end;

// Способ второй
uses
..., WinInet;

function GetHttpFileSize( const URL: string ): Int64;
var
hSession, hRequest: Pointer;
lpBuf: array[0..30] of Char;
dwBufLen: DWORD;
begin
hSession := InternetOpen( nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0 );
hRequest := InternetOpenUrl( hSession, PChar( URL ), nil, 0, 0, 0 );
dwBufLen := SizeOf( lpBuf );
if not HttpQueryInfo( hRequest, HTTP_QUERY_CONTENT_LENGTH, @lpBuf, dwBufLen, PDWORD( nil )^ ) then
Result := -1
else
Result := StrToInt64Def( lpBuf, -1 );
InternetCloseHandle( hRequest );
InternetCloseHandle( hSession );
end;

Добавить комментарий


Защитный код
Обновить