Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Existe conexión a Internet?

Tengo una rutina de autoregistro para mis aplicaciones que consiste en un formularo que me envía los datos del Usuario de mis aplicaciones, para ello uso los componentes Indy TIdSMTP y tIdMessage dento del siguiente código:

Código:
if InetIsOffline(0) then
   Begin
   Application.MessageBox('Debe conectarse a internet antes de enviar el Registro en Línea','Atención',MB_Ok);
   Exit;
   End;
Screen.Cursor := crHourGlass;
SMTP.Host := MiHost;
SMTP.Port := 25;
SMTP.Username := MiUserName;
Try
   If not(SMTP.Connected) then
      SMTP.Connect;
   Mensage.Body.Add('Envío de autoregistro de datos del Sistema');
   Mensage.Body.Add('');
   Mensage.Body.Add('Empresa : '+empre.text);
   Mensage.Body.Add('Contacto : '+Contac.text);
   Mensage.Body.Add('Serial : '+Serial.text);
   Mensage.Body.Add('Verificación : '+Verif.text);
   Mensage.Body.Add('País : '+Pais.text);
   Mensage.Body.Add('Ciudad : '+ciudad.text);
   Mensage.Body.Add('Dirección : '+Dir.text);
   Mensage.Body.Add('Teléfonos : '+Telf.text);
   Mensage.Body.Add('e-Mail : '+email.text);
   Mensage.Body.Add('Fecha y hora : '+DateTimeToStr(now));
   Mensage.Body.Add('Versión del SisArm : '+LaVersion);
   Mensage.From.Address := email.Text;
   Mensage.From.Name := 'Sistema';
   Mensage.Subject := 'Registro en Linea: '+empre.Text;
   Mensage.ContentType := 'text/plain';
   Mensage.Recipients.EMailAddresses := miEmail;
   SMTP.Send(Mensage);
   SMTP.Disconnect;
   Application.MessageBox('El Registro se Completo con exito','Atención',MB_Ok);
   ModalResult := mrOk;
Except
   Application.MessageBox('El Registro no pudo ser completado, es posible que no este conectado a Internet','Atención',MB_Ok);
   End;
En algunas ocasiones falla el InetIsOnLine (tomado de los trucos de internet del foro) y en otras sin razón aparente se genera el mensaje de error por excepción pero llega el mail. Creo que tiene que ver con la validez del EMail del Usuario

Código:
   Mensage.From.Address := email.Text;
Alguien sabe si la función:

Código:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';
Trabaja en todos los casos (Modem-LAN)

y como puedo valizar el email del usuario.

Gracias
__________________
Sitrico
Responder Con Cita
  #2  
Antiguo 08-01-2004
jorch_yr jorch_yr is offline
Miembro
 
Registrado: ago 2003
Posts: 26
Poder: 0
jorch_yr Va por buen camino
En la ayuda de M$ pone que la funcion se encuentra en SHELL32.DLL,
pero en mi Windowz98 no esta en esa DLL pero si en URL.DLL.
Desconozco como ira en otros sistemas Windows.

----------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);

function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
{
Devuelve true si la funcion _funcname esta disponible en la DLL _dllname.
Si es asi, almacena en _p la direccion de la función.
}
var _lib: tHandle;
begin
Result := false;
if LoadLibrary(PChar(_dllname)) = 0 then exit;
_lib := GetModuleHandle(PChar(_dllname));
if _lib <> 0 then
begin
_p := GetProcAddress(_lib, PChar(_funcname));
if _p <> nil then Result := true;
end;
end;


var
InetIsOffline : function(dwFlags: DWORD): BOOL; stdcall;

begin
{ Ojo: 'InetIsOffline' debe de estar escrito con estas mayusculas y
minusculas.}
if FuncAvail('URL.DLL', 'InetIsOffline', @InetIsOffline) = true then
if InetIsOffLine(0) = true
then ShowMessage('No estas conectado')
else ShowMessage('Estas conectado!');
end;


(Texto estraido de Tmania Explorer Truco Numero 448 Saver si estamos conectado a internet)
Responder Con Cita
  #3  
Antiguo 08-01-2004
jorch_yr jorch_yr is offline
Miembro
 
Registrado: ago 2003
Posts: 26
Poder: 0
jorch_yr Va por buen camino
si trabaja en modem y lan
pero lo del e-mail ni idea

y no se si trabaj en todos los win
Responder Con Cita
  #4  
Antiguo 12-01-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Esto me funciona con mi supermodem 56k en windows 98 y XP
Ojalá te pueda servir de algo.

Código:
uses wininet;

procedure TForm1.Button1Click(Sender: TObject);
var conectado:boolean;
begin
conectado:= internetgetconnectedstate(0,0);
label1.Visible:=true;

if conectado then
begin
  label1.Caption:='SI';
end
else
begin
  label1.Caption:='NO';
end;

end; // button1click


procedure TForm1.Button2Click(Sender: TObject);
begin
InternetAutodialHangup(INTERNET_STATE_DISCONNECTED_BY_USER);
//  internethangup(0,0);
end;

procedure TForm1.Button3Click(Sender: TObject);
var c:boolean;
begin
c:=internetgetconnectedstate(lpdword(INTERNET_CONNECTION_MODEM),0);
label2.Visible:=true;

if c then
begin
  label2.Caption:='SI';
end
else
begin
  label2.Caption:='NO';
end;


end;

procedure TForm1.Button4Click(Sender: TObject);
var c:boolean;
begin
c:=internetgetconnectedstate(lpdword(INTERNET_CONNECTION_MODEM_BUSY),0);
label3.Visible:=true;

if c then
  label3.Caption:='SI'
else
  label3.Caption:='NO';
end;
Responder Con Cita
  #5  
Antiguo 11-08-2005
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
una aclaración

Para que funcione correctamente lo de lepe debes incluir en uses la unidad WinInet.


InternetGetConnectedState(@Estado, 0) // Estado: Cardinal
Esta función puede dar False, o True

Pero si se realiza la operación: Trunc(Log2(Estado)) se puede saber el estado:
// para que funcione Log2 hay que agregar en uses "Math".

-- 0 -- INTERNET_CONNECTION_MODEM => Hay conexión mediante módem
-- 1 -- INTERNET_CONNECTION_LAN => Hay una conexión mediante red local
-- 2 -- INTERNET_CONNECTION_PROXY => Hay una conexión a través de proxy
-- 3 -- INTERNET_CONNECTION_MODEM_BUSY => El módem está ocupado
-- 4 -- INTERNET_CONNECTION_OFFLINE => No hay conexión activa
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 11-08-2005 a las 08:25:41.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:46:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi