Dicas de Delphi - Comunicação e Internet
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('http://www.tecnobyte.com.br');
end;
Autor: Daniel P. Guimarães Home-page: www.tecnobyte.com.br Início
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.Autor: Daniel P. Guimarães Home-page: www.tecnobyte.com.br Início
Enviando e-mail com Delphi5
Fazer um 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 := 'fulano@servidor.com.br';
{ Nome do remetente }
FromName := 'Fulano de Tal';
{ E-mail do destinatário }
ToAddress.Clear;
ToAddress.Add('beltrano@servidor.com.br');
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.Autor: Daniel P. Guimarães Home-page: www.tecnobyte.com.br Início
Abrir uma conecção Dial-UpInclua 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;Autor: Daniel P. Guimarães Home-page: www.tecnobyte.com.br Início
Obter o endereço IP do Dial-UpInclua 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^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
result := StrPas(inet_ntoa(pptr^[I]^));
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. Início
Preparando e-mail via programaçãoInclua 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('fulano@servidor.com.br',
'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.Autor: Daniel P. Guimarães Home-page: www.tecnobyte.com.br Início
Página atualizada em 23 de janeiro de 2012 Todos os direitos reservados www.tecnobyte.com.br |