Добрый день! 
Как средствами языка можно проверить, открыт ли файл по некоторому пути? Файл - Excel-таблица. Путь может быть сетевым, а сам файл может быть открыт и на другой машине, необязательно на той, на которой запускается проверка. Нужно выяснить, не открыт ли он, и если уже открыт, выдать сообщение.
Я сделал проверку на наличие в папке с проверяемым файлом файла с именем "~$" + [имя файла], но это ненадежный способ.
			
			
									
						
										
						Проверка открытия файла
Модераторы: m0p3e, edward_K, Модераторы
Re: Проверка открытия файла
В теории, можно сделать так:
Полученный "открытые_файлы.txt" анализировать объектом file.
			
			
									
						
										
						Код: Выделить всё
ExecProgram('powershell', 'CMD /C "openfiles /query /s ИМЯ_СЕРВЕРА /fo csv | find /I ""*.xlsx"""|Out-File -FilePath c:\открытые_файлы.txt', pfDontWait, 0)- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Проверка открытия файла
Без попытки открыть файл фиг знает как
А так ...как то так
В документации много исключений может выбрасывать Openfile Найдете...
			
			
									
						
										
						А так ...как то так
Код: Выделить всё
   _try
  {
   OpenFile('c:\temp\123.xls',StOpen);
  }
    _Except
    On ExFileSharingViolation :{
     Message('Нарушение разделения файла!', Error);
     abort;
     exit;
    }
В документации много исключений может выбрасывать Openfile Найдете...
- 
				edward_K
- Заслуженный деятель интернет-сообщества
- Сообщения: 5189
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Проверка открытия файла
Если файл требуется перезаписать, то можно попробовать удалить - если он будет , то значит либо нет прав, либо кто то открыл.
Если файл требуется открыть на чтение вы можете его открыть в режиме совместного доступа(если кто то открыл на запись скорей всего получите ошибку).
			
			
									
						
										
						Если файл требуется открыть на чтение вы можете его открыть в режиме совместного доступа(если кто то открыл на запись скорей всего получите ошибку).