设为首页 收藏本站
查看: 1695|回复: 0

[经验分享] Outlook中的Add-In (By VB6)

[复制链接]

尚未签到

发表于 2015-9-12 13:22:44 | 显示全部楼层 |阅读模式
最近正好有一个项目是关于outlook的。客户需要把outlook和其他系统集成到一起。我们希望的解决方案当然是用c#去做。但是由于种种原因,项目最终只能使用vb作,还是vb6那一代(即使是用VB.net也会简单一些)。
信息服务就是这样,我们得根据客户的需求来,他们出于成本和稳定性的考虑,决意试用一种方案,我们就得做出妥协。并且,他们的Outlook版本很低(升级outlook的成本太高)。他们对于新技术的稳定性也是有点怀疑(昨天MS的演示会上,好几个Demo跑不起来就是个例子)。
Outlook是2000版,VB6开发之(得重新拾起这个工具了,只是不知道这张旧船票能否登上客户这条怪船?)。
首先从网上找到了一些资料,给出了一个基本的解决方法:
1:建立VB的AddIN项目
2:对项目添加Office引用(Outlook及其他)
3:对Connect的特定的几个事件作出处理(OnConnect,OnDisConnect等)
但是,这段代码明显是找错了,因为他根本运行不起来。它面向的好像是VB自己的AddIN。但是基本原理可以看出来,就是这个样子的。
后来从网上找到这样一个VB6的模版,才明白问题出在那里:获得的对象需要用专门的Outlook.Application接收(olApp As Outlook.Application)。其他的变化不大。经过这样的修改,Outlook中终于出现了我的AddIn。
值得注意的一个就是Connect的OnInitial Load Behavior属性。调试的时候一般选择Startup(每次都执行),发布的时候要选择Load on next startup only(执行一次),这是因为我需要在outlook中加入自己的菜单,这个菜做是一次性的。
剩下的问题就是
1:如何在OutLook中添加自己的菜单
2:如何给菜单加入事件相应。
3:如何访问/改写本地OutLook的信息
4:安装/卸载
增加菜单似乎并不难,就是要找到Application中的菜单栏,并且加入自己的菜单。



1 DSC0000.gif     Set objCB = olApp.ActiveExplorer.CommandBars("Menu Bar") ‘ 找到App的MenuBar
2
3    Dim mainMenu As CommandBarPopup’ 定义为可以弹出其他菜单的菜单
4
5    Set mainMenu = objCB.Controls.Add(msoControlPopup, , , objCB.Controls("Help").Index) ‘ 定义其位置。放在Help之前
6
7    mainMenu.Caption = "Test Menu"
8
9
    给菜单加入事件处理。这个可能是很简单的了,但是真得忘记了怎么做了(大学里学的那点皮毛确实不够用),几经测试,才做到
   

1Dim WithEvents mn_Cmd1 As Office.CommandBarButton’ 定义. 注意WithEvents和CommandBarButton类型
2
3
       //设置


  Set mn_Cmd1 = mainMenu Controls.Add(msoControlButton) ’ 这是一个可移执行的命令菜单

  mn_Cmd1.Caption = "Cmd1"


    //给出事件处理
  

1 DSC0001.gif DSC0002.gif Private Sub mn_Cmd1_Click()Sub mn_Cmd1_Click(ByVal Ctrl As Office.CommandBarButton, ByRef CancelDefault As Boolean)
2 DSC0003.gif
3     MsgBox Ctrl.Caption
4
5 DSC0004.gif End Sub   
6
7
  访问/改写本地outlook是比较麻烦的一个。因为我一直觉得这样会有安全问题。但是结果比较好:每次访问Outlook的时候,Outlook会给出提示,询问这个程序访问Outlook的权限和时间。


1 msg = "there are totally  " & objOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Count
2 msg = msg + " address in ur address list."
3 If objOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Count > 0 Then
4   msg = msg + "and the first one is "
5   msg = msg + objOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Item(1).address
6 End If
7
8  Me.lbInfo.Caption = msg
9
10
然后就是给菜单都加上具体的实现了,这个不再赘述。
。。。。。
最后的事情就是如何安装和卸载这个AddIn了。  安装有两种方法:
    第一,可以注册组件,也就是regsvr32 xxx.dll;
    第二,可以在outlook中的菜单中加入(Tool/Com Add-INs)。
    卸载也是差不多的:可以在菜单中reset(Tool/Customize/ToolBars/MenuBar Reset);regsrv /u xxx.dll应该也可以。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-112692-1-1.html 上篇帖子: 实现Outlook的签名日期自动更新 下篇帖子: [转载]Hello World Outlook Add-In using C#
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表