GhostVento
GhostVento

Reputation: 21

Delphi 11.3: save MHT with resources without dialog

My code:

uses
  System.SysUtils, MSHTML, ActiveX, SHDocVw;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('google.com');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Dispatch: IDispatch;
  OleCommand: IOleCommandTarget;
  vaIn, vaOut: OleVariant;
  FilePath: WideString;
begin
  Dispatch := (WebBrowser1.Document as IHTMLDocument2) as IDispatch;

  if Succeeded(Dispatch.QueryInterface(IOleCommandTarget, OleCommand)) then
  begin
    FilePath := ExtractFilePath(ParamStr(0)) + 'google.mht'; // Путь для сохранения MHT файла

    vaIn := FilePath;
    vaOut := OleVariant(True); // Передаем True для перезаписи файла, если он уже существует

    OleCommand.Exec(nil, OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
  end;
end;

When you click the button, a dialog box for saving the web page opens. I need to save web page with resources in MHT without dialog boxes.

command
OLECMDID_
option
OLECMDEXECOPT_
dialog box
hidden?
saves MHT?
_SAVEAS _DONTPROMPTUSER ❌ appears ❌ only HTML
_SAVEAS _PROMPTUSER ❌ appears ✅ yes
_SAVEAS _DODEFAULT ❌ appears ✅ yes
_SAVE _DONTPROMPTUSER ❌ don't save at all
_SAVE _PROMPTUSER ❌ don't save at all
_SAVE _DODEFAULT ❌ don't save at all

What do I wrong? How to save a web page in FilePath as MHT format without showing a dialog box? Complete project on GitHub.

Upvotes: 2

Views: 111

Answers (0)

Related Questions