王朝网络
分享
 
 
 

VB外接程序的设计- 得到VB的控制权

王朝vb·作者佚名  2006-01-10
宽屏版  字体: |||超大  

VB外接程序的设计

一,得到VB的控制权

首先,外接,故名思意,当然必须是要和vb一起启动!在新建一外接工程后.新工程中设计器中有 Conncet.Dsr有这一元件,元件中有最为关键的一个事件 Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)

这个事件中的 Application 就是VBIDE.要想控制VB,就必须从这里入手.因此在声明区就有了 Public VBInstance As VBIDE.VBE 这行代码,在这个事件中就有了 Set VBInstance = Application .然后,你的外接程序就可以直接控制整个VB.建议不要使用太长的变量名VBInstance,而使用VBI这样的短名称.编程可不是写文章.你能简短就简短.目的是完成功能,而不是让人欣赏你代码的编写艺术. ConnectMode 让会让你写的软件具备标准外接的连接方式.如果不标准,那你的代码虽然简练了很多,但是功能却让人却步.

言归正传, ConnectMode = ext_cm_External 时,那是为向导准备的.新建一个 向导,其元件Wizard中的代码就很明显,简单明了的告诉你,"被向导工具栏用来启动向导"

If ConnectMode = ext_cm_External Then

'被向导工具栏用来启动向导

LoadMe

Else

[...]

End If

当然,现在我们步创建向导,创建向导也步用操心太多,很多工作模板中已经存在了,可是有个问题我很好奇,为什么没有创建向导的向导呢,这似乎是个具有讽刺意味的事情,但是从VB6到VB.Net我似乎没听说过.

下面接着做的就是添加到VB的工具栏或菜单里了.同样工作很简单,很重要的一点,你需要声明一个响应按钮的事件对象 :

Public WithEvents evnMyCmdBar As CommandBarEvents

CommandBarEvents 只有一个事件,就是 Click .光这样声明了是没有用的.必须要在AddinInstance_OnConnection事件中:

Dim cbMyCmd as CommandBarControl

Dim cbCmd as CommnadBar

然后:

Set cbCmd = VBI.CommandBars("Tools")'Tools 是VB菜单工具这一菜单的名称.如果要加到文件菜单那就是 "File" 编辑菜单就是 "Edit" 视图彩带就是 "View",工程菜单就是 "Project".往工具条里添也成,知道名称就成,推荐个了解名称最好的方法,再调试时按暂停,再监视里添加 VBI变量,然后展开它查看,一个一个点,绝对能找到你想要的东西.

Set cbMyCmd=cbCmd.Controls.Add

添加一个 按钮

下面设置标题 cbMyCmd.Caption="这是我的按钮"

为按钮创建图标是我后来才了解到的,方法似乎很古怪.看我将要写的代码.

Clipboard.Clear '清除剪切板内容.

Clipboard.SetData LoadResPicture(102, vbResBitmap)'从资源或其它任意一种方式加载一个16*16大小的图片.

cbMyCmd.PasteFace '然后粘贴到按钮上,这个方法对象浏览器里是看不到的,完全看不到,有时候调用还会出错的.然而在这里调用保证没问题.

Clipboard.Clear'最后建议你清除一下,现在你也许明白了另外一个 问题.为什么每次启动VB前剪贴板中的内容在启动VB后会消失,或者如果你在窗体上粘贴一下,就会出现某一个VB外接程序图标.非常了不起就是这个鬼过程使得每次找到的代码先复制后打开VB然后粘贴,却什么也没有。不知道您是不是为此而头晕过哪!我想一定是的。

下面你必须要做的就是把这个按钮的事件和你在声明行里声明的时间关联起来。同样很简单:

Set Me.evnMyCmdBar = VBI.Events.CommandBarEvents(cbMyCmd)'前面 讲过了 VBI就是VBIDE.VBE对象.再次说明,创建按钮之前必须要 Set VBI= Application 这是现在所在的事件的参数之一.

到这里,如果你看明白了上面的东西的话,你的程序应该能运行了.不过别忘了如果按钮是要显示你的窗体的话,就再evnMyCmdBar事件里添入 frmName.Show .接着,VB的控制权你的程序就有了一份了!想干吗就干吗!

我可不想给你我写好的代码,如果该你了代码,你就不会仔细研究了,不仔细研究怎么能做出来外接呢!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝网络 版权所有