Von unserer Anwendung verwenden wir OLE-Automatisierung, um ein ziemlich komplexes Word-Dokument zu erstellen. Ich möchte Word während der Erstellung des Dokuments unsichtbar machen, da viel Einfügen und Einfügen ziemlich lange dauert.Wie man Word während der OLE-Automatisierung von Delphi aus unsichtbar macht
Ich verwende den folgenden Code ein Word-Verbindung herzustellen:
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;
Und ich verwende den folgenden Code ein vorhandenes Dokument zu öffnen, die dann durch meine Anwendung bearbeitet wird.
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;
Es funktioniert auf meinem Computer! (TM)
Für einige unserer Kunden bleibt Word während des Bearbeitungsprozesses sichtbar. Welche Gründe kann es dafür geben? Soweit ich das beurteilen kann, tritt das Problem bei Kunden auf, die irgendeine Art von Remote-Computing verwenden, wie verwaltete Clients usw. Gibt es einige zusätzliche Eigenschaften, die sich mit der Anwendungssichtbarkeit befassen, die nur während Remote-Desktop-Verbindungen usw. wirksam sind? Ich bin nicht sehr kenntnisreich über solche Dinge :-(
Vielen Dank für die Eingabe. Ich werde versuchen, ConnectKind zu NewInstance zu ändern.Ich werde diese Frage offen lassen, wenn Sie also eine Antwort auf die Sichtbarkeitsfrage finden, schreiben Sie bitte eine Zeile :-) –