Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где excel хранит информацию о том, что файл открыт, другим?(относится к программированию) 
:(
    Опции темы
cd-r
  Дата 3.3.2003, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.3.2003




Здравствуйте.

Подскажите, может быть, кто-то сталкивался с таким: excel при открытии документа пишет в него(?) что-то, и после этого файл становится заблокированным. Если попытаться открыть его из другого места Экселем - "файл используется...". А если я ловлю FindFirstChangeNotification на LAST_WRITE, то CopyFile все получается замечательно скопировать в другое место, и потом открыть. Из чего я делаю вывод, что информация о блокировке хранится не в файле. С другой стороны, сразу после открытия xls приходит сообщение в Find___ChangeNotification, и меняется содержимое этого файла. Тогда где же хранится информация о том, что файл открыт?

Мне это надо, чтобы снимать точную копию файла при каждом сохранении (то есть сразу после сохранения).
PM MAIL   Вверх
Chingachguk
Дата 4.3.2003, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва




Он открывает рядом с основным еще какой-то временный (имя с $...), основной, видимо, открывает не в share-mode - вот ты его и не можешь читать. Попробуй поиграться со временным - этим, с $...
Если надо подробнее, могу в отладчике посмотреть, с какими атрибутами он их открывает ...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cd-r
Дата 5.3.2003, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.3.2003




Спасибо за ответ. Тем не менее, Word - этот да, создает временный невидимый. И с ним работает. А Excel почему-то нет. Ни в TEMP, ни где бы там еще не было - не создает.

Я имел в виду не то, что я не могу его открыть (CopyFile прекрасно справляется с этим), а то, что когда я его пытаюсь открыть с другого компьютера в сети - тот эксель уже "знает", что файл открыт другим пользователем и далее - "Выберите тип 1. Открыть для чтения 2. Отмена" и флажок "Уведомить о закрытии файла другим пользователем". Откуда он берет эту информацию(что файл УЖЕ кто-то открыл)? Если логически подумать, то в этом самом файле. Об этом говорит также попытка записи в файл при самом его открытии. Но. Далее для проверки этой теоремы я делаю следующее
1. Открываю файл экселем как обычно (т.е. и для чтения, и для записи). Жду секунд 15, чтобы все устаканилось.
2. С помощью CopyFile из своей программы копирую этот файл (уже открытый экселем) под другим именем на дискету.
3. Вынимаю дискету.
4. Закрываю эксель (и файл, соответственно, тоже).
5. Вставляю дискету, копирую файл на его прежнее место под его старым именем (затирая предыдущий, естественно).
6. Открываю файл экселем. Файл открывается как ни в чем не бывало.

Из чего я делаю вывод, что если бы эксель писал информацию о том, что файл уже открыт кем-то другим в сам этот файл, то я, открывая файл с дискеты, получил бы сообщение что файл уже открыт другим. Но я его не получаю. Блин.

Вот такая вот ерундистика.
PM MAIL   Вверх
Chingachguk
Дата 5.3.2003, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва




1. Все-таки я не пойму в этом случае: разве если один пользователь открыл файл, например, в моде share_read (Другим: читать только), то если другой пользователь открывает после этот же файл, то он может элементарно выяснить то, что файл уже открыт кем-то (на уровне операционной системы) ?

2. Далее. Я провел мониторинг открытия Экселем документа:

"C:\Program Files\Microsoft Office\Office\XL8GALRY.XLS "

Вот что он делает при этом (вызовы АПИ):

1. Открывает файл "..XL8GALRY.XLS", получает дескриптор 07Ch;

2. Открывает файл "..XL8GALRY.XLS", получает дескриптор 07Ch (еще раз);

2.1 Читает что-то (SetFilePointer) с позиции 0 по дескриптору 07Ch;
2.2 Читает что-то (SetFilePointer) с позиции 020200h по дескриптору 07Ch;
2.3 Читает что-то (SetFilePointer) с позиции 0400h по дескриптору 07Ch;

3. Открывает файл "C:\TEMP\~DFCE83.TMP", получает дескриптор 0A8h;

3.1 Ставит указатель SetFilePointer по дескриптору 07Ch в позицию 1000h;
3.2 Пишет по дескриптору 07Сh 1000h байт;
3.3 Ставит указатель SetFilePointer по дескриптору 07Ch в позицию 0400h;
3.4 Пишет по дескриптору 07Сh 2000h байт;

Так что эксель реально пишет что-то в открываемый файл. Вот только нафига confused.gif


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.