Adding the WinForms Automation Code

 < Free Open Study > 



Creating the New Add-in

To create the new add-in, open Visual Studio .NET. Click the New Project button in the Start window. When the New Project dialog box opens, click the Other Projects folder and then click the Extensibility Projects folder to open it. Type WinFormsAutomation as the Name of the project. Set the path of the new project, either by typing it into the Location box or by using the Browse button to select the destination path for your new add-in project. Highlight the Visual Studio .NET Add-in icon and click the OK button to start the Add-in Wizard.

In Step 1 of the Add-in Wizard, select the "Create an Add-in using Visual Basic" option and click the Next button. In Step 2, check only the Microsoft Visual Studio .NET check box and click the Next button. In Step 3, enter WinFormsAutomation as the name of your add-in. Also, enter a description such as Demo of the WinForms Automation Object Model. Click the Next button to move to Step 4.

Step 4 is where you choose options for running the add-in. Check the first box, which will cause the wizard to create a menu item on the Tools menu. Do not check the second box, which would otherwise indicate that your add-in would never put up a modal dialog box. Although this add-in will not display a UI form, it will display multiple message boxes to describe the process that the add-in is performing. Therefore, the add-in cannot be considered "command line safe". Check the third box, which indicates that you want the add-in to be loaded when the host application is started. Check the fourth box to allow anyone to use the add-in. Click the Next button to move to the next step.

Because the Add-in Wizard in the current version of Visual Studio will not create an About box, simply skip Step 5 by clicking the Next button. Step 6 is just asummary of the options you have selected. Click the Finish button to cause the wizard to create the initial code for the new add-in.

The code generated by the wizard will be almost identical to the code generated by your first use of the wizard in Chapter 2. Only the name, description, and menu command caption will be different because you have selected a different name, description, and so forth. The code in Listing 6-1 includes the standard template generated by the Add-in Wizard, with a few minor changes. The changes that you have made thus far are the same ones that you made back in the Chapter 2 wizard-generated code. These include such things as moving the CommandObj variable up to the module level, shortening the reference variable from applicationObject to oVB, deleting the add-in's menu from the IDE on shutdown of the add-in, and so forth. In Listing 6-1, the changes made to the wizard-generated code appear in bold.

Listing 6-1: Add-in Generated Code

start example
 Imports Microsoft.Office.Core Imports Extensibility Imports System.Runtime.InteropServices Imports EnvDTE #Region " Read me for Add-in installation and setup information. " ' When run, the Add-in wizard prepared the registry for the Add-in. ' At a later time, if the Add-in becomes unavailable for reasons such as: '   1) You moved this project to a computer other than the one it was originally '      created on. '   2) You chose 'Yes' when presented with a message asking if you wish to '      remove the Add-in. '   3) Registry corruption. ' you will need to re-register the Add-in by building the ' WinFormsAutomationSetup project ' by right-clicking the project in the Solution Explorer, then choosing install. #End Region <GuidAttribute("B404B902-65A3-4335-8BA3-24CE23DA3E24"),  ProgIdAttribute("WinFormsAutomation.Connect")> _ Public Class Connect     Implements Extensibility.IDTExtensibility2     Implements IDTCommandTarget     Dim oVB As EnvDTE.DTE     Dim addInInstance As EnvDTE.AddIn     Dim CommandObj As Command     Public Sub OnBeginShutdown(ByRef custom As System.Array) Implements _         Extensibility.IDTExtensibility2.OnBeginShutdown     End Sub     Public Sub OnAddInsUpdate(ByRef custom As System.Array) Implements _         Extensibility.IDTExtensibility2.OnAddInsUpdate     End Sub     Public Sub OnStartupComplete(ByRef custom As System.Array) Implements _         Extensibility.IDTExtensibility2.OnStartupComplete     End Sub     Public Sub OnDisconnection(ByVal RemoveMode As _           Extensibility.ext_DisconnectMode, _           ByRef custom As System.Array) _           Implements Extensibility.IDTExtensibility2.OnDisconnection          Try              ' remove the addins UI menu              CommandObj.Delete()          Catch e As System.Exception              MsgBox("OnDisconnection: " & e.Message)          End Try     End Sub     Public Sub OnConnection(ByVal application As Object, ByVal connectMode As _           Extensibility.ext_ConnectMode, ByVal addInInst As Object, _           ByRef custom As _           System.Array) Implements Extensibility.IDTExtensibility2.OnConnection         oVB = CType(application, EnvDTE.DTE)         addInInstance = CType(addInInst, EnvDTE.AddIn)         If connectMode = Extensibility.ext_ConnectMode.ext_cm_AfterStartup Or _             connectMode = Extensibility.ext_ConnectMode.ext_cm_Startup _             Then             Dim objAddIn As AddIn = CType(addInInst, AddIn)             ' When run, the Add-in wizard prepared the registry for the Add-in.             ' At a later time, the Add-in or its commands may become unavailable             ' for reasons such as:             '   1) You moved this project to a computer other than the one it was             '      originally created on._             '   2) You chose 'Yes' when presented with a message asking if you             '      wish to remove the Add-in.             '   3) You add new commands or modify commands already defined.             ' You will need to re-register the Add-in by building the             ' WinFormsAutomationSetup project,_             ' right-clicking the project in the Solution Explorer, and then             ' choosing install.             ' Alternatively, you could execute the ReCreateCommands.reg file the             ' Add-in Wizard generated in _             ' the project directory, or run 'devenv /setup' from a command prompt.             Try                 CommandObj = oVB.Commands.AddNamedCommand(objAddIn, _                 "WinFormsAutomation", "WinFormsAutomation", _                 "Executes the command for                 WinFormsAutomation", True, 59, Nothing, 1 + 2) '1+2 == _                   vsCommandStatusSupported+vsCommandStatusEnabled                 CommandObj.AddControl(oVB.CommandBars.Item("Tools"))             Catch e As System.Exception                 MsgBox("OnConnection, Can't Add Command: " & e.Message)             End Try         End If     End Sub     Public Sub Exec(ByVal cmdName As String, _                     ByVal executeOption As vsCommandExecOption, _                     ByRef varIn As Object, _                     ByRef varOut As Object, _                     ByRef handled As Boolean) _                     Implements IDTCommandTarget.Exec         handled = True         If (executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault) Then             If cmdName = "WinFormsAutomation.Connect.WinFormsAutomation" Then                 handled = True                 Exit Sub             End If         End If     End Sub     Public Sub QueryStatus(ByVal cmdName As String, ByVal neededText As _          vsCommandStatusTextWanted, ByRef statusOption As vsCommandStatus, _           ByRef commandText As Object) Implements IDTCommandTarget.QueryStatus       If neededText = _           EnvDTE.vsCommandStatusTextWanted.vsCommandStatusTextWantedNone _          Then           If cmdName = "WinFormsAutomation.Connect.WinFormsAutomation" Then             statusOption = CType(vsCommandStatus.vsCommandStatusEnabled + _                vsCommandStatus.vsCommandStatusSupported, vsCommandStatus)           Else             statusOption = vsCommandStatus.vsCommandStatusUnsupported           End If        End If     End Sub 
end example



 < Free Open Study > 



Writing Add-Ins for Visual Studio  .NET
Writing Add-Ins for Visual Studio .NET
ISBN: 1590590260
EAN: 2147483647
Year: 2002
Pages: 172
Authors: Les Smith

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net