Visual Studioエディターにプログラムでフックされているかどうかを知りたいので、誰かがエディターに入力しているかどうかを判断できます。
ありがとう!
Visual Studioエディターにプログラムでフックされているかどうかを知りたいので、誰かがエディターに入力しているかどうかを判断できます。
ありがとう!
Visual Studio でこれを行う方法はいくつかあります。利用可能ないくつかの異なるフックを次に示します。
IOleCommandTarget
: Visual Studio でのキー ストロークは、最終的にコマンドとして表示され、このチェーンを介してルーティングされます。KeyProcessor
: ストレートな WPF キーボード入力の場合、MEFIKeyProcessorProvider
コンポーネントを作成し、作成したコンポーネントKeyProcessor
に入力を処理させることができますITextBuffer::Changed
: 基礎となるバッファーの変更を直接リッスンして、入力を解釈します。これらはそれぞれかなり複雑であり、SO の質問に完全なサンプルを追加することは合理的ではありません。しかし、彼らの名前をGoogleに入力するだけで、正しい方向に向けられるはずです.
ただし、Visual Studio でのキーボード入力は非常に複雑なプロセスであることに注意してください。Windows メッセージ、古いスタイルの Visual Studio コマンド、WPF、MEF フック、アクセラレータの変換などを処理する必要があります。非常に面倒で、1 つのチョーク ポイントですべての入力に取り組もうとすると、問題が発生します。プラグインの作業中の Visual Studio キーボード入力の現在の状態を文書化するために最善を尽くしました。ここで見つけることができます
とはいえ、完全に理解しているわけではありません。
間違いなくあります。プラグインのスタックは同じことを行います (ViEmu、Resharper など)。MEF を使用した VS エディターの拡張に関するドキュメントを参照してください。そこにはたくさんあります。単純な Google クエリで十分な結果が得られます。