Ver Mensaje Individual
  #2  
Antiguo 19-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Para acceder a los distintos elementos de la página, debes acceder al DOM (document object model), y el punto de entrada a éste es la propiedad WebBrowser.Document.

Esta propiedad es una interfaz que tienes que moldear de acuerdo a lo que requieras. Por ejemplo, la interfaz IHTMLDocument3 contiene el método getElementsByName que te devuelve la lista de todos los elementos que lleven un nombre dado. Si sólo hay un elemento con ese nombre, la lista contendrá un sólo elemento (el de índice 0).

Tal elemento debes averiguar si es del tipo deseado, lo cual logras preguntando a la interfaz si soporta la interfaz deseada, por ejemplo la de IHTMLInputElement. De ser así, podrias verificar si es del tipo adecuado (TEXT) y entonces tomar su propead value.

Te dejo un ejemplo, que carga la página de búsqueda avanzada de Google y lee el valor del campo Dominio que se llama as_sitesearch:

Código Delphi [-]
uses MSHTML;

procedure TForm1.WebBrowser1DocumentComplete(
  Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
  Document: IHTMLDocument3;
  Collection: IHTMLElementCollection;
  Element: IHTMLElement;
  InputElement: IHTMLInputElement;

begin
  Document := (WebBrowser1.Document as IHTMLDocument3);
  Collection := Document.getElementsByName('as_sitesearch');

  if (Collection.length >= 0) then
  begin
    Element := Collection.item(0, 0) as IHTMLElement;
    Element.QueryInterface(IHTMLInputElement, InputElement);

    if Assigned(InputElement) and (InputElement.type_ = 'text') then
      ShowMessage(InputElement.value);
  end;
end;

Si te fijas, el código está en el evento OnDocumentComplete, para asegurarte que ya está descargado todo el documento al momento de buscar el elemento.

// Saludos
Responder Con Cita