`

VB6-IDE改造

阅读更多
Vb6的IDE改造基本搞定了,感觉很爽,前几天在弄DeveloperHelper的时候,一直无法理解为什么无法将窗口放入IDE的环境中,而很多好的Add-IN确是可以放入IDE里边的,在MSDN和网上查阅了一些文章,终于明白了道理,现在将道理记录一下:

(1)控件的容器是UserDocument而不是Form。在VB的IDE环境中那些可链接的窗体,其实都是一个个的UserDocument,因此,不要在Form上开发,而是要在UserDocument上开发,我也很奇怪为什么Microsoft给的模板要是From呢,直接给好UserDocument该有多好。

(2)UserDocument的属性设置,其实UserDocument的属性没有什么特殊的要求,但是有几点要特殊注意,一个是最好把ScrollBasr的属性该为0,这样就不会出现滑块了,还有最好不要做UserDocuemtn启动位置的设置,因为在VB的IDE里边所有的链接窗体的启动位置是自动记忆的,当然也包括大小,因此最好不要设置这些代码,否则就不爽了。

(3)UserDocument的名字一定要特殊注意,因为代码中要用到的。

(4)最关键的当然就是Connect里边的代码编写了,这里边的代码其实是很模板化的,没有什么技巧,大家照着案例写就行,关键代码如下:

声明部分:

Public FormDisplayed          As Boolean
Public VbInsTance             As VBIDE.VBE

Public WithEvents MenuHandler As CommandBarEvents
Public WithEvents CtlHandler  As VBControlsEvents

Private mcbMenuCommandBar         As Office.CommandBarControl
Private mCodeAddIn                As udCodeDesign
Private mControlAddIn             As udControlTemplate
Private mCodeWindow               As VBIDE.Window
Private mControlWindow            As VBIDE.Window
Private mCodeGuid                 As String
Private mControlGuid              As String

Show、Hide方法:

Public Sub Hide()
    
On Error Resume Next
    SetVisible 
False
End Sub

Public Sub Show()
    
On Error Resume Next
    
Set mCodeAddIn.VbInsTance = VbInsTance
    
Set mCodeAddIn.Connect = Me
    
Set mControlAddIn.VbInsTance = VbInsTance
    
Set mControlAddIn.Connect = Me
    SetVisible 
True
End Sub

AddinInstance_OnConnection事件

'------------------------------------------------------
'
这个方法添加外接程序到 VB
'
------------------------------------------------------
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
    
On Error GoTo error_handler
    
Dim GuidHelper As New Helper.Guid
    
    
'保存 vb 实例
    Set VbInsTance = Application

    
If ConnectMode = ext_cm_External Then
        
'用于让向导工具栏来启动此向导
        Me.Show
    
Else
        
Set mcbMenuCommandBar = AddToAddInCommandBar("DeveloperHelper")
        
'吸取事件
        Set Me.MenuHandler = VbInsTance.Events.CommandBarEvents(mcbMenuCommandBar)
    
End If
    
    
'挂接控件管理事件
    Set Me.CtlHandler = VbInsTance.Events.VBControlsEvents(NothingNothing)

    
'将窗体嵌入Vb中
    If GetSetting(App.Title, "Settings""CodeGUID""0"= "0" Then
        mCodeGuid 
= GuidHelper.NewGuid()
        SaveSetting App.Title, 
"Settings""CodeGUID", mControlGuid
    
Else
        mCodeGuid 
= GetSetting(App.Title, "Settings""CodeGUID""0")
    
End If
    
Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign""CodeDesign", mCodeGuid, mCodeAddIn)

    
If GetSetting(App.Title, "Settings""ControlGUID""0"= "0" Then
        mControlGuid 
= GuidHelper.NewGuid()
        SaveSetting App.Title, 
"Settings""ControlGUID", mControlGuid
    
Else
        mControlGuid 
= GetSetting(App.Title, "Settings""ControlGUID""0")
    
End If

    
Set mControlWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udControlTemplate""ControlTemplate", mControlGuid, mControlAddIn)

    
If ConnectMode = ext_cm_AfterStartup Then
        
If GetSetting(App.Title, "Settings""DisplayOnConnect""0"= "1" Then
            
'设置这个到连接显示的窗体
            Me.Show
        
End If
    
End If

    
Set GuidHelper = Nothing
    
    
Exit Sub
    
error_handler:
    
MsgBox Err.Description
End Sub


关键的代码是这句:

Set mCodeWindow = VbInsTance.Windows.CreateToolWindow(AddInInst, "DeveloperHelper.udCodeDesign", "CodeDesign", mCodeGuid, mCodeAddIn)

语法如下:

CreateToolWindow 方法
     

创建一个包含指定 UserDocument 对象的新工具窗口。

语法

object.CreateToolWindow (AddInInst, ProgID, Caption, GuidPosition, DocObj) As Window

CreateToolWindow 方法的语法包含下面部分:

部分 描述
object 对象表达式 ,其值是“应用于”列表中的对象。
AddInInst  必需的。外接程序实例变量,表示在开发环境中的外接程序。
ProgID  必需的。串 表示 UserDocument 对象的 progID。
Caption  必需的。串 包括窗口标题。
GuidPosition  必需的。串 包括窗口的唯一标识符。
DocObj  必需的。对象表示 UserDocument 对象。对象将被设置在这个函数的调用中。

记住这些基本上就差不多了,最后完成的效果如下图:

最终完成效果如下图:



在开发过程中,国内与IDE的插件开发相关的资料不是很多,其实IDE的开发其实是很重要的,对公司和个人来说都是很重要的,相关的技术资料如下:
1:http://www.activevb.de/tutorials/tut_addin/addin6.html
2:http://www.mysticboy.com.cn/docs/addin/addin3.htm
分享到:
评论

相关推荐

    vbIDE补丁

    大家在使用VB6开发环境的查看引用DLL文件名称和详细路径时候,...该文件名称为VB6IDE.DLL,本站下载后解压缩到 X:\Program Files\Microsoft Visual Studio\VB98, 其中的X为您安装VB的真实路径。该版本为VB6 SP6版本。

    对VB IDE的一些小改造

    为VB IDE添加鼠标滚轮和标签的功能 下载解压后建立一个批处理即可使用 内容 echo --------------------开始 RegSvr32 /S CodeHelp.dll RegSvr32 /S VB6MouseWheel.dll echo --------------------结束

    VB车间调度管理系统设计(源代码+系统)【VB】.zip

    9. **集成开发环境(IDE)**:VB的IDE(Integrated Development Environment)提供了一整套开发工具,包括代码编辑器、调试器、项目管理器等,便于开发人员高效工作。 10. **版本控制**:对于源代码管理,开发者可能...

    C#与VB.NET代码互转

    1. **选择转换工具**:除了`ConvertCSharp2VB`之外,还有其他在线工具和IDE插件,如Visual Studio内置的“复制为VB.NET”功能,以及开源项目如SharpDevelop的代码转换工具。这些工具能够处理简单的语句和结构,但...

    [其他类别]轻量级的Dot Net编译器支持C#和VB.NET v1.0_dynamic compile.zip

    VB.NET(Visual Basic .NET)则是.NET框架下的另一种编程语言,起源于经典的Visual Basic,但进行了现代化改造,支持面向对象编程和.NET框架的所有功能。 3. **.NET编译器**:.NET编译器负责将源代码转换为可执行的...

    可视化basic6.0缩减版

    在编程语言领域,**Visual Basic(VB)** 是一种事件驱动的编程语言,它是基于传统的Basic语言进行现代化改造的产物。它的设计目标是使得程序员能够快速地开发出Windows应用软件,而无需关注底层的细节,如内存管理...

    易语言程序免安装版下载

     为实现静态编译,易语言编译器、核心支持库、集成开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完成自身改造并提供静态库。  目前绝大多数官方支持库均已支持...

    Visual Basic.NET程序员查询辞典

    2. **VB.NET语法**:VB.NET保留了Visual Basic的经典语法,但进行了现代化改造,支持面向对象编程,包括类、接口、继承、多态等特性。此外,还引入了新的关键字如`Dim`、`Option Strict`、`Imports`等,以及Lambda...

    ASP源码ASP.NET报名管理信息系统(源代码+论文+开题报告+任务)

    它允许开发者使用多种语言(如 C#、VB.NET)来创建功能强大的 Web 应用。 - **版本**:自 2002 年发布以来,ASP.NET 经历了多个版本的迭代,包括 ASP.NET 1.x、2.0、3.5、4.0 和最新的 ASP.NET Core 等。 - **特性**...

    VC2012 版二维码识别

    VC6使用的还是较旧的编译器,而VS2012支持C++11标准,这意味着代码可能需要进行现代化改造以利用新的语言特性。 4. **库和API**:二维码识别通常需要依赖特定的库或API。在这个项目中,可能使用了开源的QR码解码库...

    dnspy-反编译.zip

    它具有语法高亮、自动完成、查找替换等现代IDE的常见功能,使得修改代码如同在原生IDE中一样方便。 3. **资源查看器**:dnspy可以查看并修改.NET程序集中的资源文件,如图片、文本、XML等,这在处理嵌入资源时非常...

    IL Spy.rar

    描述中提到,ILSpy是一个非常实用的小工具,特别适用于项目升级改造的情况。当面临没有需求文件和源代码的挑战时,ILSpy可以帮助开发者快速理解已有的DLL文件内部实现,从而节省大量的重构或改进项目的时间。通过反...

    refactoring improving the design of existing code.

    4. **自动化工具**:在现代开发中,重构工具如IDE的重构功能可以极大地辅助开发者进行安全的代码改造。书中可能也会讨论如何利用这些工具提高效率。 5. **重构的风险管理**:重构过程中可能会引入错误,因此需要有...

    保护程序员眼睛的 Visual Studio+Myeclipse 皮肤文件

    这些皮肤文件通常包含XML配置文件和对应的图片资源,用户只需按照一定的步骤导入到IDE中,即可实现界面的个性化改造。对于Visual Studio,用户可以在"工具"菜单中选择"导入和导出设置",然后导入皮肤文件;对于...

    ASP.NET导航网的源码

    ASP.NET支持多种编程语言,如C#、VB.NET等,其中C#是更现代且被广泛使用的语言。 2. C#:C#是一种面向对象的编程语言,由微软为.NET Framework开发。它的语法简洁、类型安全,支持泛型、匿名方法、LINQ等高级特性,...

    开机限制实用程序

    要使用这些源码,你需要具备一定的Visual Basic编程基础,了解VB6或VB.NET的语法和环境。你可以打开这些文件在Visual Studio或类似的IDE(集成开发环境)中,通过编译和调试源码来理解并运行这个开机限制实用程序。...

    基于VBA的Java语言源代码分析系统设计.pdf

    VBA是Visual Basic的子集,继承了VB的语言结构,它的集成开发环境(IDE)与VB几乎相同。利用VBA强大的脚本功能和易于理解的编程逻辑,可以高效地开发出定制化工具。 关键技术部分强调了系统设计的开发平台选择,即...

    MyQQ(神奇减少代码版)

    在开发环境中,Visual Studio 2008是该项目的选择,这是一个强大的集成开发环境(IDE),提供了丰富的工具和功能,支持多种编程语言,包括C#、VB.NET等,为开发者提供了便捷的代码编辑、调试和部署体验。选择VS2008...

    绩效考核源代码

    在.NET框架下开发,意味着源代码利用了C#或VB.NET等编程语言,结合ASP.NET或WPF等技术实现Web应用或桌面应用。 .NET框架提供了丰富的类库和工具,使得开发人员能够高效地构建功能强大的应用程序。例如,System.Data...

    OA办公源代码 sql2005 vs2005

    对于开发者而言,拥有完整的源代码意味着可以深入理解系统的架构,便于进行二次开发和定制化改造。这个源代码可能包括了用户管理、权限控制、工作流引擎、文档管理、日程安排等多个关键模块,每个模块都涉及到不同的...

Global site tag (gtag.js) - Google Analytics