Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Como descargar una pagina web completa??? (https://www.clubdelphi.com/foros/showthread.php?t=33715)

jhonny 14-07-2006 17:51:44

Como descargar una pagina web completa???
 
Hola amigos, mi situación es la siguiente, tengo en un formulario un TWebBrowser y necesito que al presionar un boton este decargue toda la pagina (Imagenes, texto, menus) a un archivo local, tal y cual como lo hace la opcion "Guardar como..." del internet explorer que coloca la pagina web junto a una carpeta con los sus recursos.

¿Como lograr dicho efecto sin utilizar las Indy?

Desde ahora muchisimas gracias por su atención y tiempo prestados

dec 14-07-2006 19:44:03

Hola,

Me he comido un poco la cabeza, pero, no he conseguido mi objetivo: poder indicar dónde guardar la página Web, tal como lo hace Internet Explorer, sin intervención del usuario además. Creo que puede hacerse, es más, casi estoy seguro, pero, ya digo que me comí la cabeza un rato y no he sido capaz.

La ayuda de Microsoft MSDN en este caso... no diré que no sirva, pero, deja que desear, cuando menos. La siguiente función es capaz de "invocar" el diálogo estándar que muestra Internet Explorer para "Guardar cómo..." una página Web. Pero, ya digo, es precisa la intervención del usuario, entre otros fallos y limitaciones que pudieran acharcarse a la siguiente función:

Código Delphi [-]
function DlgGuardar(Document: IDispatch) : boolean;
var
  varIn, varOut: OleVariant;
  CmdTarget: IOleCommandTarget;
begin
  Result := false;
  if (Document <> nil) then
  begin
    Document.QueryInterface(IOleCommandTarget, CmdTarget);
    if (CmdTarget <> nil) then
    try
      Result := (CmdTarget.Exec(nil, OLECMDID_SAVEAS,
        OLECMDEXECOPT_DODEFAULT, varIn, varOut) = S_OK);
    finally
      CmdTarget._Release;
    end;
  end;
end;

{ Uso de la función DlgGuardar
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  DlgGuardar(WebBrowser1.Document);
end;

Pruébalo Jhonny, lo mismo te sirve más o menos así. Acaso se me ocurra algo o a alguien se le ocurra la manera de conseguir la "no intervención del usuario" para guardar la página Web en donde nos fuera menester.

De hecho... no iba a publicar este mensaje, porque creo que no está conseguida la respuesta, pero, en fin,... al cabo me he decidido por si alguien tiene arredros como para liarse con ella y dejarla pintiparada. ;)

PD. Por cierto que he partido del código fuente del componente EmbeddedWB, al que podrías echar un vistazo, si no lo conoces. Puede que te venga bien.

jhonny 15-07-2006 17:58:23

Bueno, dec muchas gracias por tu ayuda, y tu tiempo, la verdad es que siempre a sido muy valiosa. En cuanto a lo de que el usuario no tenga que intervenir pues si alguna otra persona no logra descifrar el enigma y yo si, pues lo publicare. Gracias dec.


La franja horaria es GMT +2. Ahora son las 16:01:04.

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