Dalla nostra applicazione utilizziamo l'automazione OLE per creare un documento Word piuttosto complesso. Mi piacerebbe rendere Word invisibile mentre il documento è in fase di realizzazione, dal momento che ci sono molte incisioni e inserimenti che richiedono molto tempo.Come rendere invisibile Word durante l'automazione OLE da Delphi
Io uso il seguente codice per stabilire una connessione di Word:
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;
e io uso il seguente codice per aprire un documento esistente, che viene poi modificato dalla mia domanda.
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;
Funziona sul mio computer! (TM)
Per alcuni dei nostri clienti, Word rimane visibile durante il processo di modifica. Quali ragioni possono esserci per questo? Per quanto posso dire il problema sorge per i clienti che usano una sorta di computer remoto, come client gestiti, ecc. Ci sono alcune proprietà aggiuntive che riguardano la visibilità delle applicazioni che hanno effetto solo durante le connessioni desktop remote, ecc? Non sono molto ben informato su queste cose :-(
Grazie per l'input. Proverò a cambiare ConnectKind in NewInstance.Lascerò questa domanda aperta, quindi se dovessi trovare una risposta alla domanda di visibilità per favore lascia una riga :-) –