Это может быть перехвачено с помощью DTE.Events.CommandEvents
(MSDN) с typeof(VSConstants.VSStd97CmdID).GUID
в качестве команды и GUID VSConstants.VSStd97CmdID.Paste
как идентификатор команды.
Пример:
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
во время пасты, чтобы получить вставленные предметы.