Visual Studio拡張機能/パッケージ内からグローバルホットキーを動的に追加する方法はありますか?
パッケージの*.vsctファイルでホットキーを宣言することはできません。実行時にどのホットキーを使用できるかわからないためです。拡張機能には、ホットキーを動的に追加/削除できるプラグインシステムがあります。
メッセージフィルターの追加は、.NETがメッセージループを実行している場合にのみ機能します。これは、VSの場合には当てはまりません。
ご協力ありがとうございました!
Visual Studio拡張機能/パッケージ内からグローバルホットキーを動的に追加する方法はありますか?
パッケージの*.vsctファイルでホットキーを宣言することはできません。実行時にどのホットキーを使用できるかわからないためです。拡張機能には、ホットキーを動的に追加/削除できるプラグインシステムがあります。
メッセージフィルターの追加は、.NETがメッセージループを実行している場合にのみ機能します。これは、VSの場合には当てはまりません。
ご協力ありがとうございました!
ホット キーを追加する最善の方法は、キー バインディングを使用せずにコマンドを定義することです。基本的に、コマンドMyExtension.MyOperation
が使用可能であるがキーにバインドされていないことを確認してください。
実行時DTE.Command
に、拡張コマンドのオブジェクトを取得できます。Commands
オブジェクトのプロパティから利用できDTE
ます。そこから、Binding
プロパティを設定することで、特定のコマンドがバインドされているキーを変更できます。
たとえば、バインディングを次のように変更したい場合CTRL+oは、次のようにします
command.Binding = "Global::ctrl+o";
キー バインドの構文は、実際には MSDN でかなり詳しく説明されています。