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;
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.