Проверил, у меня ваш вариант стабильно 1 возвращает, независимо от занятости файла, хотя должен 0.
А вот такой вот вариант, работает, но с небольшой паузой, что мне не нравится.
Код:
var
Handle: THandle;
ErrCode: DWORD;
begin
Handle := CreateFile(PChar('\\server\c$\Documents and Settings\Administrator\My Documents\Tel.docx'),
GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
if Handle = INVALID_HANDLE_VALUE
then begin
ErrCode := GetLastError;
if ErrCode = ERROR_SHARING_VIOLATION
then ShowMessage('The process cannot access the file because it is being used by another process.')
else ShowMessage(SysErrorMessage(ErrCode));
end
else CloseHandle(Handle);
end;