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