1

Visual Studio 拡張機能でファイルの貼り付けイベントをインターセプトするにはどうすればよいですか?
ファイルの貼り付け = ソリューション エクスプローラーにファイル全体を貼り付けます。

私の目標は、コピーされたファイルに特定の置換を適用することです。

4

1 に答える 1

1

コマンドguidおよびコマンドIDとしてDTE.Events.CommandEventsMSDN)を使用してインターセプトできます。typeof(VSConstants.VSStd97CmdID).GUIDVSConstants.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貼り付け中のイベントを見て、貼り付けたアイテムを取得することもできます。

于 2013-03-15T12:20:40.537 に答える