Я использую COM DTE для создания приложения, в котором при сохранении документа в Visual Studio Solution выполняется определенное действие. Например, если документ в решении сохранен, запускается новая компиляция.
Я использую C ++, но единственная документация, которую мне удалось выяснить, написана на C # [DTE events] [https://docs.microsoft.com/en-us/dotnet/api/envdte.events?view=visualstudiosdk-2017].
Я попробовал несколько методов объектов DTE, но мне не удалось обнаружить событие, которое вызывается при сохранении документа, например, с помощью [DocumentEvents] [https://docs.microsoft.com/en-us/dotnet/api/envdte.events.documentevents?view=visualstudiosdk-2017] (Я опускаю проверку ошибок для простоты):
TComPtr<EnvDTE::Events> events;
DTE->get_Events(&events);
TComPtr<EnvDTE::_DocumentEvents> docsEvents;
TComPtr<EnvDTE::Document> doc;
events->get_DocumentEvents(doc, &docsEvents);
Затем я заблокирован в docsEvents, что я ожидал, что дает мне события для управления (подключение их к обработчикам, например, с помощью __hook).
Поэтому мне было интересно, какова была правильная последовательность вызовов для доступа к событиям документов в решении (особенно тот, который запускается при сохранении документа решения) (документация на C ++ относительно плохая)
Вы на правильном пути. Теперь просто подпишитесь на DocumentSaved событие.
Других решений пока нет …