最近因为工作原因要跟Outlook进行交互,实现本地Outlook与远程服务器(B/S)信息同步。
技术难题有几个:
1、数据传输:之前我已经写了一篇利用VB6+HTTP协议API 进行传输,放弃因为20多M框架导致依赖太离谱的.NET。这个已经解决。
2、绕开Outlook2003引入的安全特性(任何时候通过Outlook Type Library/MAPI访问其信息的任何一个属性都会弹出一个安全确认对话框)。我最开始的做法是用FindWindow找到该对话框,然后FindWindowEx找到对话框中的“是”按钮,然后SendMessage模拟按该按钮,以到达窗口关闭的目的,可惜当数据一多的时候,重复的窗口打开->关闭实在是难以忍受,后来便放弃了。我稍后查阅了微软的相关文档,发现只有3种方法:a、最牛的人的用法,就是自己通过Binary Read/Write读写Outlook信息文件,太难;b、使用Extended MAPI,因为其不受安全限制,VB调用不方便;c、写插件,因为本身插件就受信任。
经过一天的研究,我已经掌握如何写Outlook插件了,并实现了在菜单和工具栏上添加相应项目。
下一篇我会把核心代码贴出来跟大家分享。