【发布时间】:2019-04-25 21:04:23
【问题描述】:
我正在使用 COM DTE 来制作一个应用程序,当保存 Visual Studio 解决方案中的文档时,会执行某个操作。例如,如果保存解决方案中的文档,则会触发新的编译。
我使用的是 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++ 中的文档相对较差)
【问题讨论】:
标签: c++ visual-studio events com envdte