![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проверка - открыт ли файл другим приложением
stud © (2005-12-19 17:02:00)народ, подскажите как проверить открыт ли файл любой другой программой
я использую функцию Openfile/
f_handle:=openfile(pchar(source+'\'+sr.name),buffer,OF_SHARE_EXCLUSIVE);
if (f_handle>0) then
если я с помощью нее открываю файл - то другим программам отказано в доступе.
но если другая программа открыла этот же файл раньше меня - то я все равно могу открыть этот файл.
umbra (2005-12-20 16:08:00) [1]в общем случае - никак. если файл кто-то открыл эксклюзивно - тогда Вы его не откроете. НО если это текстовый файл - ничего не гарантируется. некоторые программы ставят лок на него, некоторые - нет.
Leonid Troyanovsky (2005-12-20 15:47:00) [2]
> fast2 (20.12.05 14:53) [2]
> Возврат false - файл не занят.
И что это дает?
Сейчас не занят, а в следующий момент занят.
Т.е., не нужно никакой такой функции: нужен файл - открываем,
работаем (закрываем), если отлуп - изучаем причины.
--
Regards, LVT.
fast2 (2005-12-20 14:53:00) [3]Исспользуй функцию:
function UseFile(FilePath:string):boolean;
var HFileRes:HFILE;
begin
Result := False;
try
if not FileExists(FilePath) then Exit;
HFileRes := CreateFile(Pchar(FilePath),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then CloseHandle(HFileRes)
finally
end;
end;
Возврат false - файл не занят. Функция написаная не мной - нарыл где-то на этом форуме. Спасибо автору!
programania (2005-12-19 21:26:00) [4]А если
OF_READWRITE+OF_SHARE_EXCLUSIVE