分享
 
 
 

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

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

摘要

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

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

在VB.NET中开发外接程序

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

下面看一个具体的例子:

开发实例

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

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

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

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

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

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

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

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

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

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

代码:

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

'给方案中的每一个.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、 这个只是一个简单的例子,只供初学者学习。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有