2013-03-14 3 views

ответ

1

Это может быть перехвачено с помощью 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 во время пасты, чтобы получить вставленные предметы.

Смежные вопросы