У меня есть следующая задача.Необходимо дождаться окончания редактирования файлов Microsoft Office. Я использую следующий традиционный подход: файл редактируется, когда файл занят:
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, а не в OpenОфис.OpenOffice использует один процесс для открытия файлов множественности, как MS Office.Но с OpenOffice Writer есть некоторые проблемы: функция FileIsBusy возвращает false сразу после первого сохранения файла OpenOffice Writer.Есть какие-нибудь предложения?
===================================
Я нашел следующее решение:
repeat
WaitFile(FFileInfo.lpFile, 333);
Sleep(1000);
until not FileIsBusy(FFileInfo.lpFile);
После сохранения ОО некоторое время выпускает файл и снова эксклюзивно делится