如何拦截Visual Studio扩展中的文件粘贴事件?
文件粘贴=在解决方案资源管理器中粘贴整个文件。
我的目标是将某些替换应用于复制的文件。
答案 0 :(得分:1)
可以使用DTE.Events.CommandEvents
(MSDN)typeof(VSConstants.VSStd97CmdID).GUID
作为命令guid和VSConstants.VSStd97CmdID.Paste
作为命令ID拦截它。
示例:
protected override void Initialize() {
var dte = (DTE)GetService(typeof(DTE));
var pasteGuid = typeof(VSConstants.VSStd97CmdID).GUID.ToString("B");
var pasteID = (int)VSConstants.VSStd97CmdID.Paste;
_pasteEvent = dte.Events.CommandEvents[pasteGuid, pasteID];
_pasteEvent.BeforeExecute += delegate { Trace.WriteLine("Before paste."); };
_pasteEvent.AfterExecute += delegate { Trace.WriteLine("After paste."); };
}
这不是很完美,因为它可能会在其他环境中拦截粘贴,但这是一个很好的第一步。也可以在粘贴期间观看ItemAdded
事件以获取粘贴的项目。