How to make Word invisible when automating OLE from Delphi

In our application, we use OLE automation to create a rather complex Word document. I would like to make Word invisible during the creation of the document, since a lot of attachments and inserts take quite a lot of time.

I use the following code to establish a Word connection:

function ConnectToWord : TWordAutomationResult;
begin
  WordApp := TWordApplication.Create(nil);

  try
    WordApp.Connect;
    WordApp.Visible := false; 
  except on E: Exception do
    begin
      Result := waeErrorConnectingToWord;
      exit;
    end;
  end;
end;      

And I use the following code to open an existing document, which is then edited by my application.

function TWordAUtomation.OpenDocument(aFileName: string) : WordDocument;
var vFileName,
    vConfirmConversions,
    vReadOnly,
    vAddToRecentFiles,
    vPasswordDocument,
    vPasswordTemplate,
    vRevert,
    vWritePasswordDocument,
    vWritePasswordTemplate,
    vFormat,
    vEncoding,
    vVisible,
    vOpenConflictDocument,
    vOpenAndRepair,
    vWdDocumentDirection,
    vNoEncodingDialog  : OleVariant;
begin
  Result := nil;
  if not FileExists(aFileName) then exit;

  vFileName                := aFileName;
  vConfirmConversions      := True;
  vReadOnly                := False;
  vAddToRecentFiles        := False;
  vPasswordDocument        := EmptyParam;
  vPasswordTemplate        := EmptyParam;
  vRevert                  := True; 
  vWritePasswordDocument   := EmptyParam;
  vWritePasswordTemplate   := EmptyParam;
  vFormat                  := wdOpenFormatAuto;
  vEncoding                := EmptyParam;
  vVisible                 := False; //Document should be invisible
  vOpenConflictDocument    := EmptyParam;
  vOpenAndRepair           := EmptyParam;
  vWdDocumentDirection     := EmptyParam;
  vNoEncodingDialog        := EmptyParam;

  Result := WordApp.Documents.Open(vFileName, vConfirmConversions, vReadOnly, vAddToRecentFiles, vPasswordDocument, vPasswordTemplate, vRevert, vWritePasswordDocument, vWritePasswordTemplate, vFormat, vEncoding, vVisible, vOpenAndRepair, vWdDocumentDirection, vNoEncodingDialog);
end;

It works on my computer! (TM)

Word . ? , , - , .. , , ..? : - (

+5
2

Word , Word Citrix. , .

, Word, , Word- . , .

PS: TWordApplication.Connect, Visible to False. , Connect ConnectKind, Word. , . , ConnectKind NewInstance, winword.exe. winword.exe , , .

, :

  • Word-, Word
  • Normal.dot,
+4

TWordApplication CreateOLEObject:

var WordApp: Variant;

procedure OpenWordFIle( const Filename: String );
begin
  WordApp := CreateOLEObject('Word.Application');
  WordApp.Visible := False;
  WordApp.Documents.Open( Filename );
  Application.ProcessMessages;
end;

:

procedure CloseWordFile;
begin
   WordApp.ActiveDocument.Close( $00000000 );
   WordApp.Quit;
   WordApp := unassigned;
end;

, Word Delphi.

, / Word:

http://msdn.microsoft.com/en-us/library/office/ff835182.aspx

document.open ?

+1

All Articles