我有下一个任务。有必要等待编辑 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 Office 中。OpenOffice 使用一个进程来打开多个文件,就像 MS Office 一样。但是使用 OpenOffice Writer 有一些问题:函数 FileIsBusy 在OpenOffice Writer首次保存文件后返回 false。有什么建议吗?
==============================
我找到下一个解决方案:
repeat
WaitFile(FFileInfo.lpFile, 333);
Sleep(1000);
until not FileIsBusy(FFileInfo.lpFile);
保存后,ОО 发布文件一段时间,一次又一次独占共享