VB.NET制作外接程序的一个示例

原创 2002年12月13日 10:12:00

VB.NET制作外接程序的一个示例

摘要<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       写这片文章的初衷源于我的一次“偷懒”的经历。有一次做了一些软件包,大概有60多个不同的文件,每次都要向前面添加简单的注释,比如本软件的用途、版本等等,很不方便。能不能有一个简单的方法,点一个Button,会自动的加上注释呢?

       途径有很多,今天介绍一下.NET制作一个小的外接程序(Add-in),来实现上述要求的一个例子。

 

VB.NET中开发外接程序

       有时候,开发一个与开发环境交互的外接程序是一件特别有意义的事情,可以用简单的代码换来很实用的效果。VB.NET开发这类Add-in很简单,在VS.NETIDE环境中,提供了开发Add-in的向导,稍微修改一下就可以得到自己想要的效果。

       下面看一个具体的例子:

 

开发实例

       首先,打开VS.NET的开发环境,新建一个项目。浏览一下左边的项目类型,看到有一个扩展性项目,点击右边看到有一个VS.NET外接程序:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

       我们命名这个项目为CopyRightAddin,确定。看到向导的画面,点击下一步:

我们选择第二项,用VB来创建外接程序:

      

       第二步告诉我们向选择哪些程序作为我们的“主机”,其实就是加载我们开发外接程序的一个环境,两个都选上。下一步:

      

很简单,输入外接程序的名称和说明之后,下一步看到:

选择第一项,默认加载这个Add-in,下一步:

      

这一步问要不要外接程序有关于对话框。选择是的候,你可以自定义对话框上面的关于信息,继续:

      

最后这个画面显示了一些你的选项,确认正确候完成。有错误,你可以返回修改。到这里,这个向导就结束了,我们的框架也就有了,我们就可以添加代码了。

       这个时候看一下解决方案,系统默认把Setup项目都添加进去了:

这个时候,按F5,就可以看到效果了:系统会打开一个新的VS.NET开发环境,我们开一下工具菜单,会多出一个CopyRightAddin菜单项,点击什么效果也没有,因为我们还没有写代码。

             

             

代码:

       为了模块化,我们创建一个SubCreateCopyRightFileForAllVbfiles。用于添加注释:

'给方案中的每一个.vb文件加入注释

    Private Sub CreateCopyRightFileForAllVbfiles()

        Dim strRemark As String

        strRemark = " 这是一个注释,有Montaque添加 & ControlChars.CrLf

        Try

            Dim projects As Array = applicationObject.ActiveSolutionProjects() 开发环境下打开的所有项目

            Dim theProject As EnvDTE.Project     定一个Project,指示当前Project

 

 

            If (projects.Length > 0) Then      如过当前没有打开project,Pass什么也不错。

                theProject = projects.GetValue(0)     获得当前Project

                Dim p As ProjectItem

                For Each p In theProject.ProjectItems  对改project下面的所有.vb文件添加注释

                    If p.Name.Substring(p.Name.Length - 3, 3) = ".vb" Then

                        Dim theWindow As EnvDTE.Window

                        theWindow = p.Open(Constants.vsViewKindCode)

                        Dim objTextDoc As TextDocument = theWindow.Document.Object("TextDocument")

                        Dim objEditPoint As EditPoint = objTextDoc.StartPoint.CreateEditPoint

                        objEditPoint.Insert(strRemark)

                        Dim strFileName As String = p.FileNames(0)

                        p.SaveAs(strFileName)

                    End If

                Next

            End If

        Catch ee As Exception

            MsgBox(ee.ToString)

        End Try

    End Sub

 

 

当用户调用了我们写的外接程序的时候,会有一个Exec过程,根据传递给它的参数来执行不同的过程,我们加入自己的过程:

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 = False

        If (executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault) Then

            If cmdName = "CopyRightAddin.Connect.CopyRightAddin" Then

                CreateCopyRightFileForAllVbfiles()

                handled = True

                Exit Sub

            End If

        End If

    End Sub

 

 

Ok,到现在为止,运行F5,就可以看到实际效果了。是不是很简单?

 

补充

1、  发布的时候,我们可以制作一个Setup项目,安装一下就可以了。

2、  编译后,项目所在的目录下会生成一个注册表文件。外接程序出错的时候,会提示你是不是要移除这个外接程序,选择是会导致工具菜单中不出现这个外接程序,点击这个注册表文件就可以恢复了。

3、  这个只是一个简单的例子,只供初学者学习。

VB.net数据库编程(03):一个SQLserver连接查询的简单例子

这个例子,由于在ADO.net入门已经专门学了,再次进行复习 一下。 主要掌握连接字串的情况。 过程就是: 1、引用System.Data.SqlClient。而Access中引用 的是...
  • dzweather
  • dzweather
  • 2013年02月01日 18:52
  • 41087

VB.net数据库编程(01):简单的入门实例--连接到Access文件

先来一个简单的实例。 VB.net 2012 SQl server 2012 Access文件:http://download.csdn.net/detail/dzweather...
  • u014366427
  • u014366427
  • 2014年03月26日 11:08
  • 1421

VB.NET GET接口传送数据,获取返回值

VB.NET GET接口传送数据,获取返回值
  • wybshyy
  • wybshyy
  • 2016年07月29日 14:08
  • 1509

C# VC VB.NET JS 注释小插件(外接程序)

在上一个项目中由于修改代码 里面的添加/删除/修改的注释都有规范,因此做了一个注释的第三方dll小插件。效果不错,被日本Nes要去全面推广让其他协力公司都用。 因此提取出来发给大家。先上代码。在...
  • kongwei521
  • kongwei521
  • 2012年12月25日 21:56
  • 1277

VB.Net程序设计:ListView拖动自己的item放到自己另外一个item里面

源于csdn网友的提问。帮写的一个程序。 ListView拖动自己的item放到自己另外一个item里面...
  • linjimu
  • linjimu
  • 2011年08月09日 20:01
  • 947

ASP.NET定时执行任务 (不使用外接程序,.net内部机制实现)

在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务. 以下讲解步骤: 1. 在Global.asax 文件中作如下修改 ...
  • ML01010736
  • ML01010736
  • 2015年08月03日 10:41
  • 350

ASP.NET 计划任务(不使用外接程序,.net内部机制实现)

在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务. 以下讲解步骤: 1. 在Global.asax 文件中作如下修改 view sourceprint...
  • zhanzkw
  • zhanzkw
  • 2011年11月01日 12:20
  • 501

一个.net程序破解示例

受朋友之托 帮忙破解个软件 流程如下1.查壳 脱壳 未查到壳  用NETUnpack(.net通用脱壳机) 脱壳 发现程序已经被混淆 反混淆2.反混淆反混淆后 发现Reflector提示有一部分代码不...
  • scartf
  • scartf
  • 2011年03月15日 03:12
  • 1063

Code Helper -- VB外接程序

  • 2006年03月16日 00:00
  • 28KB
  • 下载

vb.net 制作安装程序步骤

自己开发的小程序,如何让别人使用啊, 需要制作安装程序,这里有一个简单的教程,可以参考一下。 手把手的介绍下如何使用【VB.Net自带的工具】进行安装程序的制作 本文以使用VB9(也就是VB.Ne...
  • Jamie2012
  • Jamie2012
  • 2012年04月20日 01:09
  • 6187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB.NET制作外接程序的一个示例
举报原因:
原因补充:

(最多只允许输入30个字)