:: MVP ::
|
|
:: RSS ::
|
|
|
Как сделать ссылку - 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
{...,} ShellApi;
// Просто запустить почтовый клиент
ShellExecute( Handle, 'open',
PChar( 'mailto:decoding@narod.ru' ),
'', '', SW_SHOW );
// Если в письмо нужно вставить тему, то пишите так
ShellExecute( Handle, 'open',
PChar( 'mailto:decoding@narod.ru?Subject=Tema' ),
'', '', SW_SHOW );
// А если и текст нужно вставить, то так
ShellExecute( Handle, 'open',
PChar( 'mailto:decoding@narod.ru?Subject=Tema&Body=Text' ),
'', '', SW_SHOW );
// Добавляем адресатов
ShellExecute( Handle, 'open',
PChar( 'mailto:decoding@narod.ru?Subject=Tema&Body=Text&cc=адрес@получателя&bcc=скрытая@копия' ),
'', '', SW_SHOW );
// Ну и для полного счастья...
ShellExecute( Handle, 'Open',
'mailto:decoding@narod.ru?subject=Tema&Body=Строка%201%0D%0AСтрока%202&CC=decoding@narod.ru',
nil, nil, SW_RESTORE );
// Краткие пояснения к последнему примеру
// 1) Пробелы в тексте желательно заполнять сочетанием %20
// 2) Конец строки обозначать как %0D%0A
// 3) Поля отделять друг от друга символом &
|
Как скопировать файл из сети?
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;
|
Как проверить, есть ли соединение с Интернет?
// Способ первый
const
INTERNET_CONNECTION_MODEM = 1;
INTERNET_CONNECTION_LAN = 2;
INTERNET_CONNECTION_PROXY = 4;
INTERNET_CONNECTION_MODEM_BUSY = 8;
function InternetGetConnectedState( lpdwFlags: LPDWORD; dwReserved:DWORD ): BOOL; stdcall;
external 'wininet.dll' name 'InternetGetConnectedState';
{...}
function IsInternetConnected: Boolean;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes := INTERNET_CONNECTION_MODEM or
INTERNET_CONNECTION_LAN or
INTERNET_CONNECTION_PROXY;
Result := InternetGetConnectedState( @dwConnectionTypes, 0 );
end;
// Способ второй
const
NETWORK_ALIVE_LAN = $00000001;
NETWORK_ALIVE_WAN = $00000002;
function IsNetworkAlive(flags: LPDWORD) : BOOL; stdcall; external 'sensapi.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
Flags: DWORD;
Res: Boolean;
begin
Flags := NETWORK_ALIVE_WAN;
Res := IsNetworkAlive(@Flags);
if Res then
case Flags of
NETWORK_ALIVE_LAN: ShowMessage('Подключено по локальной сети');
NETWORK_ALIVE_WAN: ShowMessage('Можемное подключение');
end
else
ShowMessage('Подключения нет');
end;
|
Как закодировать URL адрес?
// Способ первый
uses
{...,} NetEncoding;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Кодируется как :// так и кириллица
ShowMessage(TNetEncoding.URL.Encode('http://qwerty/йцукен'));
end;
// Способ второй
uses
{...,} HTTPApp;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Кодируется как :// так и кириллица
ShowMessage(HTTPEncode('http://qwerty/йцукен'));
end;
// Способ третий
uses
{...,} IdURI;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Не кодируется ://, только кириллица
ShowMessage(TIdURI.URLEncode('http://qwerty/йцукен'));
end;
// Способ четвертый (Synapse)
uses
{...,} synacode;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Не кодируется ://, только кириллица
ShowMessage(EncodeUrl('http://qwerty/йцукен'));
end;
// Способ пятый
uses
{...,} REST.Utils;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Кодируется как :// так и кириллица
ShowMessage(URIEncode('http://qwerty/йцукен'));
end;
|
Как раскодировать URL адрес?
// Способ первый
uses
{...,} NetEncoding;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(TNetEncoding.URL.Decode('http%3A%2F%2Fqwerty%2F%D0%B9%D1%86%D1%83%D0%BA%D0%B5%D0%BD'));
end;
// Способ второй
uses
{...,} HTTPApp;
procedure TForm1.Button3Click(Sender: TObject);
begin
ShowMessage(HTTPDecode('http%3A%2F%2Fqwerty%2F%D0%B9%D1%86%D1%83%D0%BA%D0%B5%D0%BD'));
end;
// Способ третий
uses
{...,} IdURI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(TIdURI.URLDecode('http%3A%2F%2Fqwerty%2F%D0%B9%D1%86%D1%83%D0%BA%D0%B5%D0%BD'));
end;
// Способ четвертый (Synapse)
uses
{...,} synacode;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Utf8ToAnsi(DecodeUrl('http%3A%2F%2Fqwerty%2F%D0%B9%D1%86%D1%83%D0%BA%D0%B5%D0%BD')));
end;
|
При использовании материала - ссылка на сайт обязательна
|
|