4

Visual Studioエディターにプログラムでフックされているかどうかを知りたいので、誰かがエディターに入力しているかどうかを判断できます。

ありがとう!

4

2 に答える 2

7

Visual Studio でこれを行う方法はいくつかあります。利用可能ないくつかの異なるフックを次に示します。

  • IOleCommandTarget: Visual Studio でのキー ストロークは、最終的にコマンドとして表示され、このチェーンを介してルーティングされます。
  • KeyProcessor: ストレートな WPF キーボード入力の場合、MEFIKeyProcessorProviderコンポーネントを作成し、作成したコンポーネントKeyProcessorに入力を処理させることができます
  • ITextBuffer::Changed: 基礎となるバッファーの変更を直接リッスンして、入力を解釈します。

これらはそれぞれかなり複雑であり、SO の質問に完全なサンプルを追加することは合理的ではありません。しかし、彼らの名前をGoogleに入力するだけで、正しい方向に向けられるはずです.

ただし、Visual Studio でのキーボード入力は非常に複雑なプロセスであることに注意してください。Windows メッセージ、古いスタイルの Visual Studio コマンド、WPF、MEF フック、アクセラレータの変換などを処理する必要があります。非常に面倒で、1 つのチョーク ポイントですべての入力に取り組もうとすると、問題が発生します。プラグインの作業中の Visual Studio キーボード入力の現在の状態を文書化するために最善を尽くしました。ここで見つけることができます

とはいえ、完全に理解しているわけではありません。

于 2010-10-18T16:37:00.050 に答える
0

間違いなくあります。プラグインのスタックは同じことを行います (ViEmu、Resharper など)。MEF を使用した VS エディターの拡張に関するドキュメントを参照してください。そこにはたくさんあります。単純な Google クエリで十分な結果が得られます。

于 2010-10-18T10:51:51.337 に答える