Ver Mensaje Individual
  #5  
Antiguo 02-05-2008
Avatar de Draker
Draker Draker is offline
Miembro
 
Registrado: ene 2005
Posts: 27
Reputación: 0
Draker Va por buen camino
Hola, como siempre buscando unas cosas encuentras otras, y este tema como bien lo dice zastilla, es relamente interesante, bien pues yo les paso lo que he realizado, por ejemplo el trabajo sería sobre la pagina de Hotmail (aqui utilizaremos el componente TWebBrowse):

1.- Para ello buscariamos la página que pide logearse y en tu botón de conexión pones:
Código Delphi [-]
WN.Navigate('http://login.live.com/login.srf?');

2.- Ahora lo que tenemos que averiguar es el nombre de los elementos a los que les pasaremos los parametros, para ello, hay que averiguar el codigo de la pagina (cualquier navegador lo hace ejemplo: Maxthon), para el ejemplo dentro del codigo vemos algo como:

Dirección de correo electrónico:
input name="login" type="text"
Contraseña:
input name="passwd" type="password"
El botón de Iniciar Sesion:
input name="SI" type="submit" value=" Iniciar sesión "


En este caso lo que nos interesa son los input name, van a variar dependiendo de la pagina, obviamente la talacha sera buscar estos elementos y prevenir si no los encontramos, para que sea actualizado el codigo de nuestro programa.

2.- Ahora el que controla los parametros que pasaremos sera el evento DocumentComplete del WebBrowser, y nos ayudaremos de la interfaz IDispatch, para pasar los parametros, te dejo el código de el evento:

Código Delphi [-]
procedure TForm1.WNDocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
var
  iDisp: IDispatch;
  iColl: IHTMLElementCollection;
  iDoc: IHtmlDocument2;
  i: integer;
  ov: OleVariant;
  iInputElement: IHTMLInputElement;
begin
  WN.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc);
  If Not assigned(iDoc) then begin
    ShowMessage('Página de Correo no Valida!!!!! ... ');
    Exit;
  end;
  ov := 'INPUT';
  IDisp := iDoc.all.tags(ov);
  If assigned(IDisp) Then
  Begin
    IDisp.QueryInterface(IHTMLElementCollection, iColl);
    If assigned(iColl) Then
    Begin
      For i:=1 To iColl.Get_length Do
      Begin
        iDisp := iColl.item(pred(i), 0);
        iDisp.QueryInterface(IHTMLInputElement, iInputElement);
        If assigned(iInputElement)
        Then
          Begin
            If iInputElement.Get_name = 'login'  Then iInputElement.Set_value('tucorreo@hotmail.com');
            If iInputElement.Get_name = 'passwd' Then iInputElement.Set_value('lacontraseña');
            If iInputElement.Get_name = 'SI'     Then iInputElement.Get_form.submit;
          End;
      End;
    End;
  End;
End;

Bueno pongo esto por que muchos estamos buscando información en lo foros y da cosa que encontremos el hilo que nos interesa y no veamos informacion que nos ayude, esperoque les sea de utilidad, yo lo utilizo con D7...

Última edición por Draker fecha: 02-05-2008 a las 19:25:25. Razón: se perdio el formato de delphi
Responder Con Cita