FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; Código:
Mensage.From.Address := email.Text; Código:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL'; y como puedo valizar el email del usuario. Gracias
__________________
Sitrico |
#2
|
|||
|
|||
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) |
#3
|
|||
|
|||
si trabaja en modem y lan
pero lo del e-mail ni idea y no se si trabaj en todos los win |
#4
|
||||
|
||||
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; |
#5
|
||||
|
||||
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 Última edición por Delphius fecha: 11-08-2005 a las 08:25:41. |
|
|
|