Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MS Excel открывает документ в temp - директории не с первого раза / 6 сообщений из 6, страница 1 из 1
17.11.2019, 19:24
    #39890213
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
Всем привет.
Древний код взбунтовался.
Создается temp - директория, в которую выбрасывается файл и на него напускается создаваемый в соответствии с системными настройками (зарегистрированные приложения, привязка к "расширениями имени файла") процесс методом ShellExecuteEx().

Раньше как-то все работало, а тут таким образом решили открывать и .xls файлы; MS Excel запускается, но выводит сообщение, что файл "полное имя файла" открыть невозможно.

Повторные запуски отрабатывают нормально. До перезагрузки ОС.
С другими типами (txt, jpg, bat, png) файлов - нормально. Только xls.

Что может быть?
...
Рейтинг: 0 / 0
17.11.2019, 19:33
    #39890214
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
Что-то ч/з "ж" формируется временная директория:
- в переменную fTempDir получаем имя, вызывая GetTempFileName, при этом системой создается пустой файл.
Потом файл убивается DeleteFile(fTempDir) , и сразу же создается директория с тем же именем.
Полубред. Может, как-то с этим связано. Типа, иксель тоже создает временный файл, с тем же именем, файла такого не было - операция завершена нормально, но файл не создается, т.к. уже есть директория с тем же именем... а повторный вызов инкрементирует счетчик в генераторе темп-имен - нормально...
...
Рейтинг: 0 / 0
17.11.2019, 20:25
    #39890223
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
В общем, дело в следующем. MS Excel, запущенный с параметром <имя файла>, при самом первом запуске что-то делает, потом запускает другой экземпляр процесса, передает ему параметр и завершается. Мое приложение, увидев смерть первого процесса, удаляет и файл и директорию.

Аналогичная фигня происходит, когда есть открытый экземпляр MS Excel, в котором нет загруженного документа. В этом случае "мой" экземпляр также завершается, а команда передается в уже открытый экземпляр.
...
Схему работы менять надо, то есть.
...
Рейтинг: 0 / 0
18.11.2019, 15:08
    #39890550
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
ёёёёё
Схему работы менять надо, то есть.
FILE_FLAG_DELETE_ON_CLOSE ?
...
Рейтинг: 0 / 0
18.11.2019, 15:36
    #39890580
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
ёёёёё
Схему работы менять надо, то есть.

Запускать процесс в задаче (job object) и ожидать, когда просигналит она?
...
Рейтинг: 0 / 0
18.11.2019, 15:49
    #39890590
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Excel открывает документ в temp - директории не с первого раза
_Vasilisk_
ёёёёё
Схему работы менять надо, то есть.
FILE_FLAG_DELETE_ON_CLOSE ?

Сделано ч/з COM, подписка на событие WorkbooksOnBeforeClose (ну и там мой частный случай - WorkbooksOnAfterSave).
Плюс, после завершения икселя, пришлось дожидаться, пока файл станет доступен (иксель отцепится, и еще в т.ч. из-за его анализа антивирусом).
Работает.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MS Excel открывает документ в temp - директории не с первого раза / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]