Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Turtorial Dicas de Delphi - Comunicação e Internet


Surfistinha£
 Compartilhar

Posts Recomendados

Indice

 

* Desativar PopupMenu do TWebBrowser

 

 

* Verificar se está conectado à Internet

 

 

* Enviando e-mail com Delphi5

 

 

* Abrir uma conecção Dial-Up

 

 

* Obter o endereço IP do Dial-Up

 

 

* Preparando e-mail via programação

 

 

 

 

Desativar PopupMenu do TWebBrowser

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, OleCtrls, SHDocVw;

 

type

TForm1 = class(TForm)

WebBrowser1: TWebBrowser;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

procedure AppMsg(var Msg: TMsg; var Handled: Boolean);

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

function NomeClasse(const Janela: HWND): string;

var

Buffer: array[0..250] of Char;

begin

if GetClassName(Janela, Buffer, SizeOf(Buffer)) > 0 then

Result := string(Buffer)

else

Result := '';

end;

 

procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean);

var

P: TPoint;

Janela: HWND;

begin

case Msg.Message of

WM_RBUTTONDOWN, WM_RBUTTONUP:

if GetCursorPos(P) then

Handled := NomeClasse(WindowFromPoint(P)) = 'Internet Explorer_Server';

end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Application.OnMessage := AppMsg;

WebBrowser1.Navigate('www.webcheats.com.br');

end;

 

 

Verificar se está conectado à Internet

 

A função abaixo retorna true se estiver conectado e false

caso contrário.

 

function RemoteConnection: boolean;

const

Key = '\System\CurrentControlSet\Services\RemoteAccess';

Value = 'Remote Connection';

var

Reg: TRegistry;

Buffer: DWord;

begin

Result := false;

 

Reg := TRegistry.Create;

try

Reg.RootKey := HKEY_LOCAL_MACHINE;

if Reg.OpenKey(Key, false) then

begin

Reg.ReadBinaryData(Value, Buffer, SizeOf(Buffer));

Result := Buffer = 1;

end;

finally

Reg.CloseKey;

Reg.Free;

end;

end;

 

Exemplo de uso

 

Para testar a função coloquei um Timer e um Label no

formulário. No evento OnTimer do Timer escrevi o

código abaixo.

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if RemoteConnection() then

Label1.Caption := 'Conectado'

else

Label1.Caption := 'Desconectado';

end;

 

 

 

 

Observações

 

 

Encontrei outras dicas com o mesmo propósito na Internet, no entanto apenas esta funcionou corretamente nos testes que realizei.

 

 

 

Enviando e-mail com Delphi5

 

aplicativo completo para manipulação de e-mails é um

tanto trabalhoso e não é o assunto desta dica. Muitas vezes,

porém, queremos apenas dar ao nosso software a capacidade de

enviar simples e-mails. Isto é fácil, especialmente porque o

Delphi5 nos oferece o componente TNMSMTP (paleta FastNet) que

faz praticamente todo o trabalho para nós. Precisamos apenas

alterar algumas propriedades e chamar alguns métodos para que

a mensagem seja enviada. Vamos para a prática:

 

1. Coloque um componente TNMSMTP no form.

2. Coloque um botão e no evento OnClick deste botão escreva:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

{ Host do servidor de e-mail }

NMSMTP1.Host := 'mail.servidor.com.br';

 

NMSMTP1.Port := 25;

 

{ Nome de login do usuário }

NMSMTP1.UserID := 'nome-do-usuario';

 

NMSMTP1.Connect;

 

if not NMSMTP1.Connected then

raise Exception.Create('Erro de conexão');

 

with NMSMTP1.PostMessage do begin

{ E-mail do remetente }

FromAddress := '[email protected]';

 

{ Nome do remetente }

FromName := 'Fulano de Tal';

 

{ E-mail do destinatário }

ToAddress.Clear;

ToAddress.Add('[email protected]');

 

Subject := 'Assunto da mensagem';

 

{ Corpo da mensagem }

Body.Clear;

Body.Add('Primeira linha da mensagem');

Body.Add('Segunda linha da mensagem');

Body.Add(''); { Linha em branco }

Body.Add('Última linha da mensagem');

 

{ Anexar arquivos }

Attachments.Clear;

Attachments.Add('c:\diretorio\arquivo.ext');

end;

 

NMSMTP1.SendMail;

NMSMTP1.Disconnect;

end;

 

Pronto! É só fazer as adaptações necessárias e você terá envio

de e-mails em sua aplicação.

 

 

 

 

Observações

 

 

Para enviar o mesmo e-mail para vários destinatário de uma só vez basta adicionar os endereços de e-mails de todos os destinatários em NMSMTP1.PostMessage.ToAddress.

 

Abrir uma conecção Dial-Up

 

Inclua na seção uses: Windows

 

 

{ A função abaixo abre a caixa de diálogo de conexão

com a rede Dial-Up. O parâmetro "name" é o nome da

conexão previamente configurada.

}

 

procedure DialUpConnect(const Name: string);

begin

WinExec(PChar('rundll32.exe rnaui.dll,RnaDial ' + Name), SW_SHOW);

end;

 

{ Exemplo de uso: }

 

procedure TForm1.Button1Click(Sender: TObject);

begin

DialUpConnect('NomeDaConexão');

end;

 

Obter o endereço IP do Dial-Up

 

Inclua na seção uses: WinSock

 

 

{ Esta função retorna o endereço IP do Dial-Up. }

 

function GetLocalIP : string;

type

TaPInAddr = array [0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;

var

phe : PHostEnt;

pptr : PaPInAddr;

Buffer : array [0..63] of char;

I : Integer;

GInitData : TWSADATA;

begin

WSAStartup($101, GInitData);

Result := '';

GetHostName(Buffer, SizeOf(Buffer));

phe :=GetHostByName(buffer);

if phe = nil then Exit;

pptr := PaPInAddr(Phe^.h_addr_list);

I := 0;

while pptr^ <> nil do begin

result:=StrPas(inet_ntoa(pptr^^));

result := StrPas(inet_ntoa(pptr^^));

Inc(I);

end;

WSACleanup;

end;

 

 

 

 

Observações

 

 

Se o endereço IP for designado pelo servidor, a cada conexão teremos um endereço IP diferente e, obviamente, se não estivermos conectados, não conseguiremos obtê-lo.

 

Preparando e-mail via programação

 

Inclua na seção uses: ShellApi

 

 

Problema:

 

Desejo que meu programa prepare e-mail e abra o Outlook Express

para enviá-lo.

 

Solução:

 

A solução apresentada abaixo deve funcionar com a maioria dos

programas de correio eletrônico.

 

procedure PrepararEmail(Para, Assunto, Msg: string);

var

S: string;

begin

S := 'mailto:' + Para + '?subject=' + Assunto +

'&body=' + Msg;

ShellExecute(0, 'open', PChar(S), nil, nil, SW_SHOW);

end;

 

=== Exemplo de uso: ===

 

PrepararEmail('[email protected]',

'Teste de e-mail', 'Esta é a mensagem do e-mail de teste.');

 

 

 

 

Observações

 

 

Outra alternativa é o programa preparar e também enviar o e-mail.

 

Créditos

Surf

Daniel

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.