摘要: 最近遇到这样一个需求:在我们的MFC程序中控制Thunderbird。拿到这个奇怪的需求后,有了这么几个想法:1)用全局钩子试着勾住Thunderbird,可细想好像不对。2)用spy++探查点击Thunderbird的各个菜单,按钮时触发的事件,总归是win32平台上跑的程序,归根到底还是事件触发,从理论上说应该是可以在我们自己的MFC程序中模拟目标程序中的各个事件触发。
但接触到Mozilla的socket方面的知识后,放弃了上面的想法,改用socket通信来实现此需求。一来Thunderbird源代码可以自行修改,因此可以加入一些代码使之成为一个类似HTTP服务器的服务器端程序,二来使用socket进行连接与语言无关,因此C++的程序可以和javascript的程序完成通信,但缺点也很明显,要占用端口,只涉及到本地机器的通信却使用了socket这样的网络通信机制。
阅读全文
摘要: Mozilla最为人诟病的地方就是没有称手的开发工具,这对于我们这些被微软惯坏的开发人员来说,如果没有Visual Studio这样舒服的工具的话,谁会投入你的怀抱呢?本文就希望从三个方面介绍下我所了解到的Mozilla 平台下的开发工具及一些小技巧。
阅读全文
摘要: 在上一篇《基于MozillaThunderBird的扩展开发(五)---进程间通信之Socket篇(上)》中开发了一个简单的TCP服务器,本文将介绍其对应的客户端。
阅读全文
摘要: 这个系列的前两篇文章主要是根据自己的需求,对Thunderbird的源代码进行修改,改进了Thunderbird的现有功能,关注点都在Thunderbird的老本行---邮件客户端的实现上,那是否Thunderbird就仅仅是一个邮件客户端呢?在我看来,并非如此,它源自Mozilla内核,就继承了Mozilla平台的光荣传统,应该视为一个优秀的可扩展的开发平台,更进一步来看,Mozilla的文化深入其骨髓可以看到后来Adobe的Flex,MicroSoft的WPF都吸收了Mozilla平台界面与逻辑相分离的思想,所以接下来几篇文章我想写一个比较有意思的方面----进程间通信。
进程间通信的概念在操作系统中有过详细的介绍,方法很多,我主要关注两种:socket通信,Pipe(管道)通信。
本文的目的就是开发一个扩展,展示TCP/IP socket技术在Mozilla扩展开发中的应用。
阅读全文
摘要: 在上一篇《基于MozillaThunderbird的扩展开发(三)---如何获取邮件的完整信息》中给出了一种简单的获取邮件的完整信息(包括正文和附件等)的方法,但仔细考虑后发现离实际需求还有一段距离。
Thunderbird中已经有保存附件的功能,但需要手动去操作,既然手头有它的源代码,为什么我们不自己尝试对它进行修改,从而使得它能自动保存所有附件呢?Ok,这篇文章就是基于这样思想的一个尝试。
首先明确一个前提,本文并不想开发一个扩展,而是尝试直接修改Thunderbird的源代码,但你也可以将它修改为一个扩展,这里为了调试开发简单起见,因此我选择了直接修改其代码。
阅读全文
摘要: 如果你没有读过ThunderBird的源代码,也许会和我一样想当然地认为里面肯定有某个数据结构用于存储邮件的正文和附件等信息,但如果你读过了代码,那么也会和我一样感到遗憾,居然没有这样完整的数据结构!里面有一个表示邮件头的XPCOM 组件 nsIMsgHdr , 但mozilla这帮人却没有定义一个用来表示邮件(包括邮件头,正文,附件等信息)的组件" nsIMsg"呢...
阅读全文