24.06.2015, 16:39 | #1 |
MCTS
|
Как проверить, что файл Excel уже открыт другим?
Здравствуйте
Как проверить, что файл Excel уже открыт другим пользователем? Ax 3.0 |
|
24.06.2015, 17:00 | #2 |
Гость
|
|
|
24.06.2015, 17:09 | #3 |
Участник
|
Конечно пользователя конкретного вот этим не получите:
X++: try { System.IO.File::Open( @'C:\TMP\1234I_13.05.2015_1.xlsx', System.IO.FileMode::Open, System.IO.FileAccess::ReadWrite, System.IO.FileShare::None ); if (stream != null) stream.Close(); } catch( Exception::CLRError ) { error(CLRInterop::getLastException().ToString()); } |
|
24.06.2015, 17:31 | #4 |
MCTS
|
c .Net в Ax3.0 туговато
|
|
25.06.2015, 01:06 | #5 |
Участник
|
Более, по-моему, правильная постановка вопроса: как проверить, что текущий пользователь(ский процесс) может открыть файл в необходимых режимах чтения/записи и совместного доступа. Посмотрите справку по енуму System.IO.FileShare в примере выше - это .net-представление соотв.флагов для Win32 API-функции CreateFile, которую вы можете вызывать из 3.0 с теми же целями проверки доступности файла. Также посмотрите примеры её использования в классе WinApi.
|
|
25.06.2015, 09:23 | #6 |
Программатор
|
В 12-ке нашел. Может подойдет?
X++: #winapi public client static boolean fileLocked(Filename filename) { int handle; if (! WinAPI::fileExists(filename)) return false; handle = WinAPI::createFile(filename, #OPEN_EXISTING, #GENERIC_WRITE); if (handle == #INVALID_HANDLE_VALUE) return true; WinAPI::closeHandle(handle); return false; } |
|
|
За это сообщение автора поблагодарили: Eldar9x (5). |
25.06.2015, 16:16 | #7 |
MCTS
|
да, его как раз и использовал
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|