次の作業があります。ファイル編集が終了するまで待つ
function FileIsBusy(AFileName: string): Boolean;
var
F: Integer;
begin
F := FileOpen(AFileName, fmShareExclusive);
Result := F = -1;
FileClose(F);
end;
function WaitFile(AFileName: string; ASpeepDelay: integer): Boolean;
begin
while FileIsBusy(AFileName) do
Sleep(ASpeepDelay);
Result := True;
end;
のMicrosoft Wordによる編集ファイルではなく、オープンオフィスではこのアプローチ良い仕事:ファイルがビジー状態ですが、ファイルが編集されています。次の従来のアプローチを使用して編集のMicrosoft Office files.Iの終了を待つ必要があります。 OpenOfficeは、MS Officeのようなオープンな多重度ファイルに対して1つのプロセスを使用します。しかし、OpenOffice Writerにはいくつかの問題があります。関数FileIsBusyは、の最初ののファイルをOpenOffice Writerで保存した直後にfalseを返します。何か提案がありますか?保存後
repeat
WaitFile(FFileInfo.lpFile, 333);
Sleep(1000);
until not FileIsBusy(FFileInfo.lpFile);
:私は次の解決策を見つける
============================
、ООしばらくの間ファイルを解放し、再び排他的に共有する
私はProcessMonitorを使用します。 OpenOfficeはファイルを一旦保存するまでロックします。 –