在上一篇博客中介绍了Firebreath的编译过程,最终得到了一个dll文件,这就是最终的插件,那么如何使用这个插件呢?
使用插件的方法是先将插件注册到系统注册表,然后在Html调用该插件,调用时是从注册表中搜索定位到该控件,因此使用插件涉及到注册表编程盒Html编程。
在Firebreath开发中所用到的注册表编程内容很简单,只有两条简单的指令
注册控件
regsvr32 %~dp0\npWebTest.dll
注销控件
regsvr32 /u %~dp0\npWebTest.dll
分别建两个Txt文件,将以上两条代码分别拷贝到相应的Txt文件中,然后修改后缀名为cmd
双击“注册控件.cmd”即可将控件注册到系统注册表中,注册成功后弹出如下窗口
在注册表中可通过“application/x-WebTest(见第一篇博客中的说明)”查找控件的注册信息
此处涉及到Web前端开发,只简单介绍和控件开发有关的部分
用于Html开发的工具很多,常用的有Adobe Dreamweaver、Sublime Text、WebStorm等,一般使用Sublime Text进行开发,这里推荐使用WebStorm,因为IDE自带的很多功能比较易于使用,特别是调试功能。
Sublime Text 3下载地址
WebStrom下载地址
下载好WebStrom后需要进行安装破解和汉化,可参考如下教程:
http://jingyan.baidu.com/article/7f41ecec323801593d095c28.html
WebStrom汉化包下载地址
使用Chrome配合WebStrom可获得最佳开发体验,这里就必须使用一款神器
Lantern下载地址
打开Lantern之后再下载Chrome,再进行相应的配置以实现浏览器实时预览功能,具体参见如下教程
http://jingyan.baidu.com/article/454316ab68ac03f7a7c03ae3.html
接下来完成编程入门的信仰之作:Firebreath版Hello World!
首先在WebTestAPI.h中添加如下代码
using namespace std;
using namespace FB;
WebTestAPI(const WebTestPtr& plugin, const FB::BrowserHostPtr& host) :
m_plugin(plugin), m_host(host)
{
registerMethod("echo", make_method(this, &WebTestAPI::echo));
registerMethod("testEvent", make_method(this, &WebTestAPI::testEvent));
// Read-write property
registerProperty("testString",
make_property(this,
&WebTestAPI::get_testString,
&WebTestAPI::set_testString));
// Read-only property
registerProperty("version",
make_property(this,
&WebTestAPI::get_version));
//自定义功能
registerMethod("testPlugin", make_method(this, &WebTestAPI::testPlugin));
}
public:
void testPlugin();//测试插件
private:
void RunJSFunction(string strCallback, VariantList varParmer);//回调JS函数
然后在WebTestAPI.cpp中添加如下代码
//FB:pluginwindowwin 定义需要引用的头文件
#include "PluginWindowWin.h"
//从firebreath回调js函数需要此头文件
#include "DOM/Window.h"
/**
函数说明:测试控件
参数说明:无
返回值:无
*/
void WebTestAPI::testPlugin()
{
VariantList varParmer = variant_list_of("Hello World!");
RunJSFunction("alert", varParmer);
}
/**
函数说明:调用JS函数
参数说明:
[in]strCallback JS函数名
[in]varParmer 参数列表
返回值:无
*/
void WebTestAPI::RunJSFunction(string strCallback, VariantList varParmer)
{
DOM::WindowPtr window = m_host->getDOMWindow();
if (window && window->getJSObject()->HasProperty("window"))
{
JSObjectPtr obj = window->getProperty("window");//创建一个浏览器对象的引用
obj->Invoke(strCallback, varParmer);//调用strCallback方法传出识别结果
}
}
编译控件,双击注册控件.cmd将控件注册到系统注册表中。
PS:只需注册一次,后续编译控件不需要再注册。编译时右键WebTest工程,选择生成而不是重新生成,这样可以只编译当前工程,否则会重新编译所有相关工程。
接下来就可以编写测试控件的HTML代码了
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Firebreath控件测试页面title>
<meta charset="utf-8" />
head>
<body>
<div>
<object id="plugin" type="application/x-webtest" width="10" height="10">object>
div>
<div>
<button id="btnTest">点我测试button>
div>
<script type="text/javascript">
var plugin = document.getElementById('plugin');
var btnTest = document.getElementById('btnTest');
//测试插件
btnTest.onmouseup = function (event) {
plugin.testPlugin();
}
script>
body>
html>
将该HTML文件用360浏览器打开,测试结果如下,这里选的是IE模式
至此完成控件的安装配置、编译和调用测试。下一篇博客将详细分析本博客中的测试代码