次の方法で共有


方法: ショートカット メニューにアドインを表示する

Visual Studio オートメーション モデルは、アドイン コマンドをトップレベル メニュー ([ツール] メニューなど) に配置したり、コマンドをショートカット メニューやサブメニューに登録したりすることを簡単に実現できるように設計されています。

ただし、そのためには、Microsoft Visual Studio の Command Bar オブジェクト モデルを使用して、登録先のショートカット メニューやサブメニューを明示的に定義する必要があります。その上で、Visual Studio の AddControl メソッドを呼び出すことになります。

ショートカット メニューは、Visual Studio が元から備えているメニューと同じ感覚で使用できます。これらのショートカット メニューには、ドロップダウン メニューの下向きの矢印をポイントするか、統合開発環境 (IDE: Integrated Development Environment) で項目をダブルクリックするとアクセスできます。

コマンドをショートカット メニュー (または任意のメニューまたはツール バー) に追加するには、最初にそのコマンド名を知っている必要があります。[ツール] メニューの [オプション] ダイアログ ボックスに表示される [キーボード] ノードで確認できます。

アドイン コマンドを [タスク一覧] のショートカット メニューに追加する方法を次の手順に示します。

[!メモ]

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

アドイン コマンドをショートカット メニューに追加するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスの [その他のプロジェクトの種類] を展開します。次に、[機能拡張] をクリックして、[テンプレート] ペインの [Visual Studio アドイン] をクリックします。

    アドインに ContextCmd という名前を付け、[OK] をクリックすると、Visual Studio アドイン ウィザードが起動します。

  3. [アドイン用のコマンド バー UI を作成しますか?] ボックスをオンにして、アドインにユーザー インターフェイス (UI) を作成するオプションを選択します。

    これにより、OnConnection メソッドに UI 用のコードが追加されます。さらに、ユーザーがアドイン コマンドをクリックしたときのイベントを処理するための Exec メソッドと、アドインのステータス情報を提供する QueryStatus メソッドが追加されます。

  4. このコードを次のコードを使って置き換えます。

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Connect
    
        Implements IDTExtensibility2
        Implements IDTCommandTarget
    
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
    
        Dim cmdBarCtl As CommandBarControl
    
        Public Sub New()
        End Sub
    
        Public Sub OnConnection(ByVal application As Object, ByVal _
          connectMode As ext_ConnectMode, ByVal addInInst As Object, _
          ByRef custom As Array) Implements _
          IDTExtensibility2.OnConnection
            Dim cmd As Command
            Dim cmdBar As CommandBar
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
    
            Try
                If CType(ext_ConnectMode.ext_cm_AfterStartup Or _
                  ext_ConnectMode.ext_cm_Startup, Boolean) Then
                    ' If the command does not exist, add it.
                    If cmd Is Nothing Then
                        cmd = _applicationObject.Commands. _
                          AddNamedCommand(_addInInstance, _
                          "newCmd", "newCmd", "Runs the add-in.", _
                          True, 59, Nothing, _
                          vsCommandStatus.vsCommandStatusSupported _
                          Or vsCommandStatus.vsCommandStatusEnabled)
                    End If
    
                    ' Reference the Task List shortcut menu.
                    cmdBar = CType(_applicationObject. _
                      CommandBars.Item("Task List"), _
                      Microsoft.VisualStudio.CommandBars.CommandBar)
    
                    ' Add a command to the Task List's shortcut menu.
                    cmdBarCtl = CType(cmd.AddControl(cmdBar, _
                      cmdBar.Controls.Count + 1), _
                      Microsoft.VisualStudio.CommandBars. _
                      CommandBarControl)
                    cmdBarCtl.Caption = "A New Command"
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnDisconnection(ByVal disconnectMode As _
          ext_DisconnectMode, ByRef custom As Array) Implements _
          IDTExtensibility2.OnDisconnection
            Try
                ' Delete the command bar control from the 
                   ' shortcut menu.
                If Not (cmdBarCtl Is Nothing) Then
                    cmdBarCtl.Delete()
                End If
            Catch e As System.Exception
                System.Windows.Forms.MessageBox.Show(e.ToString)
            End Try
        End Sub
    
        Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
          IDTExtensibility2.OnAddInsUpdate
        End Sub
    
        Public Sub OnStartupComplete(ByRef custom As Array) Implements _
          IDTExtensibility2.OnStartupComplete
        End Sub
    
        Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
          IDTExtensibility2.OnBeginShutdown
        End Sub
    
        Public Sub QueryStatus(ByVal commandName As String, ByVal _
          neededText As vsCommandStatusTextWanted, ByRef status As _
          vsCommandStatus, ByRef commandText As Object) Implements _
          IDTCommandTarget.QueryStatus
            If commandName = "ContextCmd.Connect.newCmd" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            End If
        End Sub
    
        Public Sub Exec(ByVal commandName As String, ByVal _
          executeOption As vsCommandExecOption, ByRef varIn As _
          Object, ByRef varOut As Object, ByRef handled As Boolean) _
          Implements IDTCommandTarget.Exec
            handled = False
            If executeOption = vsCommandExecOption. _
              vsCommandExecOptionDoDefault Then
                If commandName = "ContextCmd.Connect.newCmd" Then
                    handled = True
                    System.Windows.Forms.MessageBox.Show("Add-in _
                      running...")
                End If
            End If
        End Sub
    End Class
    
  5. Exec プロシージャに、コマンドがクリックされたときに実行するコードを追加します。

  6. アドインをビルドして実行します。

  7. [表示] メニューの [タスク一覧] をクリックして、[タスク一覧] を表示します。

  8. [ツール] メニューの [アドイン マネージャー] をクリックします。

  9. [アドイン マネージャー] で、ContextCmd アドインに対応するチェック ボックスをオンにして、アドインをアクティブにします。

  10. [タスク一覧] を右クリックします。

    [ContextCmd] アドイン コマンドがショートカット メニューに表示されます。

参照

処理手順

方法: アドイン マネージャーを使用してアドインを制御する

方法 : アドインを作成する

チュートリアル : ウィザードの作成

関連項目

Visual Studio のコマンドおよびスイッチ

概念

ツール バーおよびメニューでのアドインの表示

アドインの登録

オートメーション オブジェクト モデルの階層図

その他の技術情報

アドインおよびウィザードの作成