ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用VB2005开发外接程序Connect类中需要了解的一些事件

2019-06-15 10:05:29  阅读:335  来源: 互联网

标签:IDTExtensibility2 End Sub ext VB2005 ByRef Public 类中 Connect


2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80

Public Class Connect

    Implements IDTExtensibility2
 Implements IDTCommandTarget


    Dim cmWhen As ext_ConnectMode


    '''<summary>实现外接程序对象的构造函数。请将您的初始化代码置于此方法内。</summary>
    Public Sub New()

    End Sub

    '''<summary>实现 IDTExtensibility2 接口的 OnConnection 方法。接收正在加载外接程序的通知。</summary>
    '''<param name='application'>宿主应用程序的根对象。</param>
    '''<param name='connectMode'>描述外接程序的加载方式。</param>
    '''<param name='addInInst'>表示此外接程序的对象。</param>
    '''<remarks>当程序第一次执行时不加载,如果有必要,进行一些初始化工作,等到启动环境时记下启动模式,在启动完成后再加载</remarks>
    Public Sub OnConnection(ByVal Application As Object, ByVal ConnectMode As ext_ConnectMode, ByVal AddInInst As Object, ByRef Custom As Array) Implements IDTExtensibility2.OnConnection
        chDTE = CType(Application, DTE2)
        chAddIN = CType(AddInInst, AddIn)
        If ConnectMode <> ext_ConnectMode.ext_cm_UISetup And ConnectMode <> ext_ConnectMode.ext_cm_Startup Then
            LoadCoderHelper()
        Else
            cmWhen = ConnectMode
        End If
        
    End Sub

    '''<summary>实现 IDTExtensibility2 接口的 OnDisconnection 方法。接收正在卸载外接程序的通知。</summary>
    '''<param name='disconnectMode'>描述外接程序的卸载方式。</param>
    '''<param name='custom'>特定于宿主应用程序的参数数组。</param>
    '''<remarks>只载环境要关闭或用户要求关闭时才卸载,其他方式不卸载</remarks>
    Public Sub OnDisconnection(ByVal disconnectMode As ext_DisconnectMode, ByRef custom As Array) Implements IDTExtensibility2.OnDisconnection
        Debug.Write("OnDisconnection" & custom.ToString & Now & vbNewLine)
        If disconnectMode = ext_DisconnectMode.ext_dm_HostShutdown Or _
            disconnectMode = ext_DisconnectMode.ext_dm_UserClosed Then
            UnloadCoderHelper()
        End If
    End Sub

    '''<summary>实现 IDTExtensibility2 接口的 OnAddInsUpdate 方法。接收外接程序集合已更改的通知。</summary>
    '''<param name='custom'>特定于宿主应用程序的参数数组。</param>
    '''<remarks></remarks>
    Public Sub OnAddInsUpdate(ByRef custom As Array) Implements IDTExtensibility2.OnAddInsUpdate
        'Debug.Write("OnAddInsUpdate" & custom.ToString & Now & vbNewLine)
        '  LoadCoderHelper()
    End Sub

    '''<summary>实现 IDTExtensibility2 接口的 OnStartupComplete 方法。接收宿主应用程序已完成加载的通知。</summary>
    '''<param name='custom'>特定于宿主应用程序的参数数组。</param>
    '''<remarks>如果是启动时需要加载,则载启动完成后加载,因为环境没有加载完成的情况下,将成功调用环境内的命令</remarks>
    Public Sub OnStartupComplete(ByRef custom As Array) Implements IDTExtensibility2.OnStartupComplete
        If cmWhen = ext_ConnectMode.ext_cm_Startup Then
            LoadCoderHelper()
            'chCES.Show()
        End If
    End Sub

    '''<summary>实现 IDTExtensibility2 接口的 OnBeginShutdown 方法。接收正在卸载宿主应用程序的通知。</summary>
    '''<param name='custom'>特定于宿主应用程序的参数数组。</param>
    '''<remarks>开始卸载环境时迅速卸载本程序的一些功能</remarks>
    Public Sub OnBeginShutdown(ByRef custom As Array) Implements IDTExtensibility2.OnBeginShutdown
        Debug.Write("OnBeginShutdown" & custom.ToString & Now & vbNewLine)
        UnloadCoderHelper()

    End Sub
 
    '''<summary>实现 IDTCommandTarget 接口的 QueryStatus 方法。此方法在更新该命令的可用性时调用</summary>
    '''<param name='commandName'>要确定其状态的命令的名称。</param>
    '''<param name='neededText'>该命令所需的文本。</param>
    '''<param name='status'>该命令在用户界面中的状态。</param>
    '''<param name='commandText'>neededText 参数所要求的文本。</param>
    '''<remarks></remarks>
    Public Sub QueryStatus(ByVal CommandName As String, ByVal neededText As vsCommandStatusTextWanted, ByRef status As vsCommandStatus, ByRef commandText As Object) Implements IDTCommandTarget.QueryStatus
        Debug.WriteLine("OueryStatus" & commandName & Now & vbNewLine)
        If neededText = vsCommandStatusTextWanted.vsCommandStatusTextWantedNone Then
            If GetStatus(CommandName) Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled + vsCommandStatus.vsCommandStatusSupported, vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            End If
        End If
    End Sub

    '''<summary>实现 IDTCommandTarget 接口的 Exec 方法。此方法在调用该命令时调用。</summary>
    '''<param name='commandName'>要执行的命令的名称。</param>
    '''<param name='executeOption'>描述该命令应如何运行。</param>
    '''<param name='varIn'>从调用方传递到命令处理程序的参数。</param>
    '''<param name='varOut'>从命令处理程序传递到调用方的参数。</param>
    '''<param name='handled'>通知调用方此命令是否已被处理。</param>
    '''<remarks></remarks>
    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
        '  chCES.Show()
        Debug.Write("Exec" & commandName & Now & vbNewLine)
        If executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault Then
            handled = ToDoCommand(commandName, varIn, varOut)
        End If
 End Sub

   
   
End Class

转载于:https://my.oschina.net/mysticboy/blog/541349

标签:IDTExtensibility2,End,Sub,ext,VB2005,ByRef,Public,类中,Connect
来源: https://blog.csdn.net/weixin_34367257/article/details/92064628

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有