1

Visual Studio コマンドがキーボードまたはメニューからトリガーされたかどうかを知ることは可能ですか? VS コマンドを監視し、メニューから選択したコマンドのキーボード ショートカットを提案するプラグインを作成したいと考えています。

4

1 に答える 1

2

コマンド自体から、それがどのようにトリガーされたかを判断することはできません。CommandEvent からこの情報を取得することもできません。これは仕様によるものです。コマンドは任意の種類の任意の数のトリガーにバインドできるためです (一部のコードでの明示的な呼び出しを含む)。

ただし、できることは、ツリー DTE.CommandBars.Controls 内のすべての CommandBarButton.OnClick および CommandBarComboBox.OnChange のリスナーとして自分自身を登録することです。上記のイベントのいずれかが発生するたびに、次の CommandEvent をキャプチャします。これは、それぞれの CommandBarControl によってすぐにトリガーされるコマンドです。

あなたが説明したシナリオにはこれで十分だと思います。ただし、コマンドは (他のコマンドを介して) 暗黙的にトリガーされる可能性があるため、このことから、他のすべてのコマンドが何らかのショートカットによってトリガーされると結論付けることはできないことに注意してください。コマンドが発生したときにキーが押されたかどうかを確認することでこれを概算できますが、これはかなり壊れやすいアプローチです...誰かがここでより良いアプローチを知っている場合は、追加を歓迎します!

于 2013-09-26T11:44:13.247 に答える