Я разработал Shared Addin для Excel с использованием интерфейса Extensibility IDTExtensibility2 в Visual Studio 2008.
Это довольно простой по функциональности. Когда рабочая книга открыта, она сохраняется в списке открытых рабочих книг, когда она закрывается, надстройка создает новый текстовый файл, затем записывает в него какой-то XML, этот файл затем читается другим процессом, который затем десериализует XML .
Надстройка работает в обычных условиях - поэтому, если пользователь открывает и закрывает файл, надстройка делает то, что должна, если она выходит из Excel с открытыми книгами, она делает то, что должна.
Проблема в том, что у пользователя открыт Excel с открытыми книгами и он выходит из системы. Два метода: OnDisconnection и OnBeginShutdown не вызываются вообще.
Я сделал две вещи, чтобы проверить это:
Я создал TextWriterTraceListener, который записывал в файл журнала при вызове этих двух методов. Когда Excel выходит из системы, они обычно нажимаются, и информация регистрируется в файле журнала, но когда пользователь выходит из системы, в файле журнала ничего нет.
Внутри обоих этих методов с использованием File.CreateText (имя файла) я создал пустой файл. Когда пользователь обычно выходит из Excel, эти файлы создаются, но еще раз, когда Excel закрывается через выход из системы, эти файлы не создаются.
У кого-нибудь есть идеи, как мне обойти эту проблему? Мне нужно захватить, когда Excel закрывается, когда пользователь выходит из машины ...