方法: ツール メニューにアドインを表示する (Visual Basic)
アドイン ウィザードを使用してアドインを作成し、作成したアドインをコマンドとして表示するオプションを選択すると、そのコマンドは既定で [ツール] メニューに表示されます。 アドインの作成時にこのオプションを選択しなかった場合でも、再度アドイン ウィザードを実行するだけで、このオプションを選択し、既存のコードを新しいアドインにコピーできます。
この操作を行うことができない場合、次に示す手順によっても同じ効果が得られます。
注意
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。
メニュー コマンドを既存のアドインに追加するには
アドインの Connect クラスに、Implements IDTCommandTarget のコードを追加します。
これにより、コマンドの作成に必要な IDTCommandTarget コマンド インターフェイスにアクセスできるようになります。
OnConnection プロシージャに次のコードを追加します。
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) If connectMode = ext_ConnectMode.ext_cm_Startup Then Dim commands As Commands2 = CType(_applicationObject.Commands, _ Commands2) Dim toolsMenuName As String Try Dim resourceManager As System.Resources.ResourceManager = _ New System.Resources.ResourceManager _ ("MyAddin1.CommandBar", System.Reflection.Assembly. _ GetExecutingAssembly()) Dim cultureInfo As System.Globalization.CultureInfo = New _ System.Globalization.CultureInfo(_applicationObject. _ LocaleID) toolsMenuName = resourceManager.GetString(String.Concat _ (cultureInfo.TwoLetterISOLanguageName, "Tools")) Catch e As Exception toolsMenuName = "Tools" End Try Dim commandBars As CommandBars = _ CType(_applicationObject.CommandBars, CommandBars) Dim menuBarCommandBar As CommandBar = _ commandBars.Item("MenuBar") Dim toolsControl As CommandBarControl = _ menuBarCommandBar.Controls.Item(toolsMenuName) Dim toolsPopup As CommandBarPopup = CType(toolsControl, _ CommandBarPopup) Try Dim command As Command = _ commands.AddNamedCommand2(_addInInstance, "MyAddin1", _ "MyAddin1", "Executes the command for MyAddin1", True, _ 59, Nothing, CType(vsCommandStatus. _ vsCommandStatusSupported, Integer) + _ CType(vsCommandStatus.vsCommandStatusEnabled, _ Integer), vsCommandStyle.vsCommandStylePictAndText, _ vsCommandControlType.vsCommandControlTypeButton) command.AddControl(toolsPopup.CommandBar, 1) Catch argumentException As System.ArgumentException End Try End If
このコードは、Visual Studio でアドインが読み込まれる (アドインに "接続される") ときに実行されます。 このコードにより、アドインが ext_cm_UISetup の ext_ConnectMode 値を使用して読み込まれたかどうかが判断されます。 これは、アドインがインストール後初めて起動されたことを意味します。 該当する場合、AddNamedCommand メソッドによって、このアドインに対するコマンドが [ツール] メニューに作成されます。 詳細については、「方法 : コマンドを追加、処理する」を参照してください。
Connect クラスに次の 2 つのプロシージャを追加します。
QueryStatus メソッドは、コマンドが使用できるかどうかの状態が更新されたときに呼び出されます。 Exec メソッドはコマンドの起動時に呼び出されます。
Public Sub QueryStatus(ByVal commandName As String, _ ByVal neededText As vsCommandStatusTextWanted, ByRef status As _ vsCommandStatus, ByRef commandText As Object) Implements _ IDTCommandTarget.QueryStatus If neededText = vsCommandStatusTextWanted. _ vsCommandStatusTextWantedNone Then If commandName = "MyAddin1.Connect.MyAddin1" Then status = CType(vsCommandStatus.vsCommandStatusEnabled _ + vsCommandStatus.vsCommandStatusSupported, _ vsCommandStatus) Else status = vsCommandStatus.vsCommandStatusUnsupported End If 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 = "MyAddin1.Connect.MyAddin1" Then handled = True Exit Sub End If End If End Sub
IDTCommandTarget を実装する際は必ずこの 2 つのプロシージャを追加する必要があります。 この操作を簡単に行うには、エディターの左上隅にある [クラス名] ボックスの一覧の [IDTCommandTarget] を選択します。 次に、右上隅にある [メソッド名] ボックスの一覧のプロシージャを 1 つずつ順に選択します。 これにより、必要な空のプロシージャが、適切なパラメーターが指定された状態で 2 つ作成されます。これに後からコードを追加できます。
Exec プロシージャは、ユーザーがメニュー コマンドをクリックしたときに呼び出されます。そのため、このプロシージャにはそのときに実行するコードを挿入してください。
参照
処理手順
方法: ツール メニューにアドインを表示する (Visual C#)