【Firebreath】基础教程之三:使用插件

在上一篇博客中介绍了Firebreath的编译过程,最终得到了一个dll文件,这就是最终的插件,那么如何使用这个插件呢?

使用插件的方法是先将插件注册到系统注册表,然后在Html调用该插件,调用时是从注册表中搜索定位到该控件,因此使用插件涉及到注册表编程盒Html编程。

一、注册表编程

在Firebreath开发中所用到的注册表编程内容很简单,只有两条简单的指令

注册控件

regsvr32 %~dp0\npWebTest.dll

注销控件

regsvr32 /u %~dp0\npWebTest.dll
  • regsvr32:调用Window系统中的“regsvr32.exe”进行注册表相关操作
  • /u:表示注销操作,即从注册表中删除该控件
  • %~dp0:表示当前目录,即dll所在目录
  • npWebTest.dll:即控件

分别建两个Txt文件,将以上两条代码分别拷贝到相应的Txt文件中,然后修改后缀名为cmd

这里写图片描述

双击“注册控件.cmd”即可将控件注册到系统注册表中,注册成功后弹出如下窗口

【Firebreath】基础教程之三:使用插件_第1张图片

在注册表中可通过“application/x-WebTest(见第一篇博客中的说明)”查找控件的注册信息

【Firebreath】基础教程之三:使用插件_第2张图片

二、Html编程

此处涉及到Web前端开发,只简单介绍和控件开发有关的部分

用于Html开发的工具很多,常用的有Adobe DreamweaverSublime TextWebStorm等,一般使用Sublime Text进行开发,这里推荐使用WebStorm,因为IDE自带的很多功能比较易于使用,特别是调试功能。

Sublime Text 3下载地址

  • 从官网下载:
    http://www.sublimetext.com/
  • 从我的CSDN资源下载:
    http://download.csdn.net/detail/henryheheng/9875188

WebStrom下载地址

  • 从官网下载
    http://www.jetbrains.com/webstorm/

下载好WebStrom后需要进行安装破解和汉化,可参考如下教程:
http://jingyan.baidu.com/article/7f41ecec323801593d095c28.html

WebStrom汉化包下载地址

  • 从我的CSDN资源下载
    http://download.csdn.net/detail/henryheheng/9875197

使用Chrome配合WebStrom可获得最佳开发体验,这里就必须使用一款神器

Lantern下载地址

  • 从GitHub下载
    https://github.com/getlantern/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模式

【Firebreath】基础教程之三:使用插件_第3张图片

至此完成控件的安装配置、编译和调用测试。下一篇博客将详细分析本博客中的测试代码

你可能感兴趣的:(Firebreath)