Desde nuestra aplicación utilizamos la automatización OLE para compilar un Word-document bastante complejo. Me gustaría hacer que Word sea invisible mientras se está haciendo el documento, ya que hay muchas pegadas e inserciones que llevan bastante tiempo.Cómo hacer que Word sea invisible durante la automatización OLE desde Delphi
uso el siguiente código para establecer una conexión Palabra:
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;
Y uso el siguiente código para abrir un documento existente, que se editó luego por mi solicitud.
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;
¡Funciona en mi computadora! (TM)
Para algunos de nuestros clientes Word permanece visible durante el proceso de edición. ¿Qué razones puede haber para esto? Por lo que puedo decir, el problema surge para los clientes que utilizan algún tipo de computación remota, como clientes administrados, etc. ¿Hay algunas propiedades adicionales que se ocupan de la visibilidad de la aplicación que solo tienen efecto durante las conexiones de escritorio remoto, etc.? No estoy muy enterado de tales cosas :-(
Gracias por la entrada. Intentaré cambiar ConnectKind a NewInstance.Voy a dejar esta pregunta abierta, así que si alguna vez encuentras una respuesta a la pregunta de visibilidad, por favor escribe una línea :-) –