我有下一個任務。這是需要等待的編輯月底的Microsoft Office files.I下次使用傳統的方法:文件編輯雖然文件是忙:等到文件編輯結束
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,而不是開放式辦公。 OpenOffice使用一個進程來開放多重文件,就像MS Office一樣。但是用OpenOffice Writer有一些問題:函數FileIsBusy在第一個由OpenOffice Writer保存文件之後返回false。有什麼建議嗎?
============================
我找到一個解決方案:
repeat
WaitFile(FFileInfo.lpFile, 333);
Sleep(1000);
until not FileIsBusy(FFileInfo.lpFile);
保存後,ОО發佈文件一段時間再次獨家分享
我使用ProcessMonitor。 OpenOffice鎖定文件直到保存爲止。 – 2010-12-10 09:55:05