2012/1/21 ZhanLin Shang <shangzhan...@gmail.com>:
> 额......表示对从头开发一个有兴趣,但是相关的技术什么的能否列个详细点的内容出来好参考一下?高中生压力略大啊......

我的水平有限,只能提供一些建议,可能会误导,请自己鉴别 :)

  - 了解npapi插件的工作原理
    *  阅读Mozilla的npapi plugin文档[1]
    *  自己写一个win32平台的npapi插件和Linux平台的npapi插件
       * 简单的插件,可以参见npapi-sdk的源代码(for Linux) [2] 和mingw编译npapi插件(for
Win32)的例子 [3]
       * 更重要的是npruntime模型的插件,参见 [4]
    * 阅读chromium/firefox中有关插件容器的代码

  - 了解winegcc和winelib的使用 [5]
    * 通过winegcc和winelib,可以在Linux下编译出混合win32 api和Linux平台原生api的二进制(ELF格式)
    * 理论上,可以混合Firefox(或chromium) for Win 和 Firefox for
Linux的代码,通过winelib编译出既能加载win32 plugin又能加载Linux
plugin的Firefox。不过估计难度不比自己写一个插件容器小,而且后期随着上游的更新,维护的成本会很大

  - 了解Win32的setparent函数和Xlib的XReparentWindow函数

  - 了解RPC

  - 自己写一个插件容器,调用自己写的npapi插件

  - 下载一个CrossOver daily
build版(请注册CrossOver帐号然后发私信给我),根据[6]中的介绍,试用和观察CrossOver
Plugin是怎么实现在Linux native Browser中调用Win32 plugin的。通过CrossOver
Plugin详细的log,可以大概明白工作原理。daily build版的CrossOver
Plugin虽然没有发布代码,但是二进制是unstripped的。

欢迎交流 :)


[1] https://developer.mozilla.org/en/Plugins
[2] http://code.google.com/p/npapi-sdk/
[3] http://sourceforge.net/mailarchive/message.php?msg_id=27865669
[4] http://www.codeproject.com/Articles/92787/Working-on-an-NPAPI-browser-plugin
[5] http://www.winehq.org/docs/winelib-guide/index
[6] 
http://groups.google.com/group/non-ie-online-banking/browse_thread/thread/fa9aba842bdb35cf
-- 
Regards,
Qian Hong

-
Sent from Ubuntu
http://www.ubuntu.com/
-- 
ubuntu-zh mailing list
ubuntu-zh@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh

回复