如何在我的 Visual Studio 扩展中拦截文件粘贴事件?
文件粘贴 = 在解决方案资源管理器中粘贴整个文件。
我的目标是对复制的文件应用某些替换。
如何在我的 Visual Studio 扩展中拦截文件粘贴事件?
文件粘贴 = 在解决方案资源管理器中粘贴整个文件。
我的目标是对复制的文件应用某些替换。
可以使用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
在粘贴期间观看事件以获取粘贴的项目。