如何在Delphi的OLE自动化过程中使Word不可见
从我们的应用程序,我们使用OLE自动化来构建一个相当复杂的Word文档.我希望在制作文档时使Word不可见,因为有很多粘贴和插入需要相当长的时间.
我使用以下代码建立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,vNoEncodingDialog); end; 它适用于我的电脑! (TM值) 对于我们的一些客户,Word在编辑过程中仍然可见.有什么理由可以做到这一点?据我所知,使用某种远程计算的客户(如托管客户端等)会出现问题.是否有一些其他属性可以处理仅在远程桌面连接等情况下有效的应用程序可见性?我对这些事情不是很了解:-( 解决方法
我正在为我们的软件维护Word自动化,并且还有关于Citrix客户端中弹出Word窗口的报告.我不知道是什么导致这种情况以及如何摆脱它.
只有一种方法可以模拟Word再次可见,并且在应用程序处理时打开Word文档.但我不认为这是你的问题的原因. PS:您调用TWordApplication.Connect然后将Visible设置为False.知道当你调用Connect并且你没有更改ConnectKind时,它将连接到正在运行的Word实例.当您的客户正在编辑文档时,该文档将突然消失.也许最好将ConnectKind设置为NewInstance,这样您就可以使用新的winword.exe进程.现有的winword.exe将保留给您的客户端,并且当您的应用程序正在处理另一个时,他可以继续处理他的文档. 当然,这种方法也有一些缺点: >当您的客户端打开一个新的Word文档时,它将在您的Word实例中打开>您可以在Normal.dot上被另一个应用程序修改时出错 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |