Код:
uses
ActiveX, ComObj,
...
function IsRunning(const PathName: string): Boolean;
var
bc: IBindCtx;
mk: IMoniker;
begin
OleCheck(CreateBindCtx(0, bc));
OleCheck(CreateFileMoniker(PChar(PathName), mk));
Result:=mk.IsRunning(bc, nil, nil)=S_OK;
end;
компилировал на Delphi 2010, проверял на сетевых и локальных файлах с MS Word 2010. работает корректно.