Ver Mensaje Individual
  #2  
Antiguo 08-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Vamos a ver que sale de aquí. No tengo mucha experiencia usando el TWebBrowser, pero creo que esto puede funcionar:

Código Delphi [-]
// El evento OnBeforeNavigate2 del TWebBrowser
procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  NewPostData: OleVariant;
begin
  // Comprobamos que el PostData es un array
  if VarIsArray(PostData) then
  with TStringList.Create do
  try
    Delimiter:= '&';
    DelimitedText:= String(PChar(VarArrayLock(PostData)));
    VarArrayUnlock(PostData);
    // Usamos un parametro para saber si debemos interceptar 
    if Values['Vamos']=EmptyStr then
    begin
      // Lo paramos
      Cancel:= TRUE;
      // Añadimos 'hola' a la password (o cualquier otra modificación)
      Values['Pass']:= Values['Pass'] + 'hola';
      // Indicamos con este parámetro que la petición ya ha sido modificada
      Values['Vamos']:= 'Si';
      NewPostData:= VarArrayCreate([0, Length(DelimitedText)], varByte);
      StrCopy(PChar(VarArrayLock(NewPostData)),PChar(DelimitedText));
      VarArrayUnlock(NewPostData);
      // Volvemos a llamar al método navigate con los el PostData modificado
      (ASender as TWebBrowser).Navigate2(URL,EmptyParam,EmptyParam,
        NewPostData,EmptyParam);
    end;
  finally
    Free;
  end;
end;

Bueno, seguro que se puede hacer mejor, pero es un comienzo. Por cierto 'Pass' es el nombre que tiene el campo password en el formulario y 'Vamos' tiene que ser un nombre que no corresponda con el de ningún campo del formulario.
Responder Con Cita