从我们的应用程序中,我们使用OLE自动化来构建相当复杂的Word文档。我希望在制作文档时让Word看不见,因为粘贴和插入的时间很长。如何让Word在Delphi自动化OLE自动化过程中不可见
我使用下面的代码来建立一个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;
,而且我用下面的代码打开一个现有文档,然后通过我的应用程序进行编辑。
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;
它适用于我的电脑! (TM)
对于我们的一些客户保持的Word在编辑过程中可见。这有什么原因?据我所知,使用某种远程计算的客户(如托管客户端等)会出现问题。是否有一些其他属性可以处理仅在远程桌面连接等情况下才有效的应用程序可见性?我没有这样的事情非常熟悉:-(
感谢您的输入。我会尝试将ConnectKind更改为NewInstance。我将把这个问题留给开放,所以如果你找到了可视性问题的答案,请放下一行:-) – 2010-10-15 08:11:22