NPAPI插件如何编写,自己要实现的功能函数写在什么地方

时间:2022-06-04 14:45:33
最近在研究NPAPI插件的开发,自己在网上看了一些资料,但仍是一头雾水啊。到现在还不清楚自己要实现的功能函数写在什么地方,求大神罩一下呀

19 个解决方案

#1


参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助

#3


还是不太明白,有没有这方面的有注释说明的实例啊?本人对这一块儿完全是从零开始啊

#4


引用 1 楼 jianwen0529 的回复:
参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助


还有更详细的吗,有没有具体的实例呀

#5


引用 4 楼 lee0102 的回复:
Quote: 引用 1 楼 jianwen0529 的回复:

参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助


还有更详细的吗,有没有具体的实例呀


runtime就是一个完整的实例!

#6


引用 2 楼 jianwen0529 的回复:
http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#7


为什么这个说的创建的类的时候必须要继承nsPluginInstanceBase啊,而我按照这个方法创建类的时候总是会提示缺少这个基类 NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#8


引用 6 楼 lee0102 的回复:
Quote: 引用 2 楼 jianwen0529 的回复:

http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

是的,你只需要用到它的接口就可以了!

#9


引用 8 楼 jianwen0529 的回复:
Quote: 引用 6 楼 lee0102 的回复:

Quote: 引用 2 楼 jianwen0529 的回复:

http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

是的,你只需要用到它的接口就可以了!

为什么我按照这个方法创建类的时候总是会提示缺少这个基类 

#10


那就是你没有这个文件或者没有设置正确的包含路径!!

#11


引用 2 楼 jianwen0529 的回复:
http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方
我这在添加的时候总是会报出找不到这个基类,该怎么解决呀

#12


引用 10 楼 jianwen0529 的回复:
那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

#13


引用 12 楼 jianwen0529 的回复:
Quote: 引用 10 楼 jianwen0529 的回复:

那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

pluginbase.h 在这个文件里面,你自己看看有没有该头文件!有的话看看包含路径设置是否正确!

#14


引用 13 楼 jianwen0529 的回复:
Quote: 引用 12 楼 jianwen0529 的回复:

Quote: 引用 10 楼 jianwen0529 的回复:

那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

pluginbase.h 在这个文件里面,你自己看看有没有该头文件!有的话看看包含路径设置是否正确!

没有这个头文件,要怎么弄呢?找一个这个头文件吗?

#15


你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

#16


引用 15 楼 jianwen0529 的回复:
你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

好的,我找找看,刚接触这个 NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#17


引用 15 楼 jianwen0529 的回复:
你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

好吧,解决了这个添加类的问题,太感谢你了,大神。哎,自己摸索着搞这个东西真苦逼啊,主要是我对c++还不是太熟悉,我之前是弄c#的、、、

#18


我有一个dialog的界面想要显示到插件里面。。。谁能给一个例子。。

#19


runtime就是一个完整的实例!   这个runtime在哪啊?

#1


参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助

#2


#3


还是不太明白,有没有这方面的有注释说明的实例啊?本人对这一块儿完全是从零开始啊

#4


引用 1 楼 jianwen0529 的回复:
参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助


还有更详细的吗,有没有具体的实例呀

#5


引用 4 楼 lee0102 的回复:
Quote: 引用 1 楼 jianwen0529 的回复:

参考示例下的runtime例子!
该例子下:
ScriptablePluginObject::HasProperty //判断是否有该属性
ScriptablePluginObject::HasMethod  //判断是否有该方法
以上通过if判定,自己写处理代码

bool ScriptablePluginObject::HasMethod(NPIdentifier name)
{
    return name == func_open;
}

//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::HasProperty(NPIdentifier name)
{
    if( name == prop_file !! name == prop_name ) //prop_file 及 prop_name 是你自定义的属性名称,上同,返回true会
        //调用下面处理函数
        retrun true;
}
//////////////////////////////////////////////////////////////////////////
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    if( name == func_open )
    {
        // 你的处理,即调用了该func_open函数,属性处理同
    }

    return false;
}
//////////////////////////////////////////////////////////////////////////
//如果Invoke函数没给出处理,默认会在该函数进行处理
bool ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, NPVariant *result)
{
    return false;
}

//希望对你有些许帮助


还有更详细的吗,有没有具体的实例呀


runtime就是一个完整的实例!

#6


引用 2 楼 jianwen0529 的回复:
http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#7


为什么这个说的创建的类的时候必须要继承nsPluginInstanceBase啊,而我按照这个方法创建类的时候总是会提示缺少这个基类 NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#8


引用 6 楼 lee0102 的回复:
Quote: 引用 2 楼 jianwen0529 的回复:

http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

是的,你只需要用到它的接口就可以了!

#9


引用 8 楼 jianwen0529 的回复:
Quote: 引用 6 楼 lee0102 的回复:

Quote: 引用 2 楼 jianwen0529 的回复:

http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方

是的,你只需要用到它的接口就可以了!

为什么我按照这个方法创建类的时候总是会提示缺少这个基类 

#10


那就是你没有这个文件或者没有设置正确的包含路径!!

#11


引用 2 楼 jianwen0529 的回复:
http://www.tuicool.com/articles/uERf6ja

NPAPI插件如何编写,自己要实现的功能函数写在什么地方
我这在添加的时候总是会报出找不到这个基类,该怎么解决呀

#12


引用 10 楼 jianwen0529 的回复:
那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

#13


引用 12 楼 jianwen0529 的回复:
Quote: 引用 10 楼 jianwen0529 的回复:

那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

pluginbase.h 在这个文件里面,你自己看看有没有该头文件!有的话看看包含路径设置是否正确!

#14


引用 13 楼 jianwen0529 的回复:
Quote: 引用 12 楼 jianwen0529 的回复:

Quote: 引用 10 楼 jianwen0529 的回复:

那就是你没有这个文件或者没有设置正确的包含路径!!

或者你根本不是用这个基类!

pluginbase.h 在这个文件里面,你自己看看有没有该头文件!有的话看看包含路径设置是否正确!

没有这个头文件,要怎么弄呢?找一个这个头文件吗?

#15


你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

#16


引用 15 楼 jianwen0529 的回复:
你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

好的,我找找看,刚接触这个 NPAPI插件如何编写,自己要实现的功能函数写在什么地方

#17


引用 15 楼 jianwen0529 的回复:
你编写插件你没下NPAPI的示例文件么?里面包含有的,网上也可以找到!!

好吧,解决了这个添加类的问题,太感谢你了,大神。哎,自己摸索着搞这个东西真苦逼啊,主要是我对c++还不是太熟悉,我之前是弄c#的、、、

#18


我有一个dialog的界面想要显示到插件里面。。。谁能给一个例子。。

#19


runtime就是一个完整的实例!   这个runtime在哪啊?

#20