VS2005のお話ですが、2008でもだいたい同じだと思われます。
まずは対象のメニューの名前を見つけないといけません。
VSマクロで適当にサンプルのメソッドを作りましょう。
1 2 3 4 5 6 |
Public Sub Test() Dim vs As EnvDTE.DTE = DTE For Each bars As CommandBar In vs.CommandBars Debug.WriteLine(bars.Name & ", " & bars.NameLocal) Next End Sub |
これを実行すると
コマンドバーの一覧を見ることができるのでこっから対象っぽいのを探します。
ファイル(F)とかがあるところなら、MenuBarとか
ソリューションエクスプローラ内のそれぞれのアイテムだったら Item とか。
実はこれだけでも結構一苦労。。。
もっといい方法を見つけたい。
対象の名前が決まったらそのコマンドバーを取得して
メニューをひとつ足してみましょう。
1 2 3 4 5 6 7 |
Public Sub Test2() Dim vs As EnvDTE.DTE = DTE
Dim bar As CommandBar = vs.CommandBar("Item") Dim ctl As CommandBarControl = bar.Controls.Add(MsoControlType.msoControlButton) ctl.Caption = "Test" End Sub |
これで、Form1.vbなんかのファイルを右クリックすると[Test]という名前のメニューが表示されます。
でもこれだとクリック時のアクションが実行できないからもちょっとちゃんとやるには
Visual StudioのCommandオブジェクトを使ってあげないといけないかも。
でも続きは次回で。