[Plugin] 如何為你的 firefox plugin 加上新的 method
来源:互联网 发布:苹果硬件软件一体化 编辑:程序博客网 时间:2024/06/06 13:03
如果我想在 plugin 裡新增一個 method, 那該怎麼做?
ex:
新增一個 method name= MYfunction
這篇文章內容包含
1. Java Script 呼叫 npapi plugin 物件的最簡單設定
2. 如何讀取 Java Script 傳來的參數
3. 如何轉換 utf8 字串到 Windows TCHAR 字串
----------------------------------------------------------
注意:
如果你還沒看過下面的文章
[Plugin] 撰寫 firefox plugin 最簡單方法
請仔細閱讀, 這兩篇文章緊密相關.
----------------------------------------------------------
最簡單最笨的操作步驟如下:
Step 1: 加入 method 名稱標記
在 plugin.cpp 中的 CPlugin method 中加入 method 的標記
ex:
CPlugin::CPlugin(NPP pNPInstance) ..{
MYfunction_id=NPN_GetStringIdentifier("MYfunction");
}
Step 2: 宣告 method 名稱標記
ex:
static NPIdentifier MYfunction_id;
Step 3: 告訴別人你的元件有這個 method
ex:
bool ScriptablePluginObject::HasMethod(NPIdentifier name){
if(name == MYfunction_id)
return true;
}
Step 4: 當 script 呼叫你的 method 時, 提供你 method 的實做
ex:
bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args,uint32_t argCount, NPVariant *result) {
DWORD dwThreadID;
if(name == MYfunction_id ){
MessageBox(NULL,L"呼叫 MYfunction_id",L"Java Script 呼叫範例",MB_OK);
return PR_TRUE;
}
return PR_FALSE;
}
如何讓 JavaScript 傳參數給你的 plugin method 呢?
如果 Java Script 呼叫的 method 有參數, 我們要如何取出參數資料呢
例如:
Myfunction("192.168.0.1",1234);
=== in Invoke method ===
// 第一個參數: "192.168.0.1"
NPVariant varIP=args[0];
NPString npstrIP=NPVARIANT_TO_STRING(varIP); // 取出 "192.168.0.1"
// 印出來看看: 將 utf8 字串 轉成 Wide Char
int length=MultiByteToWideChar(CP_UTF8,0,(char*)npstrIP.utf8characters,-1,NULL,0);
TCHAR *strIP=new TCHAR[length];
MultiByteToWideChar(CP_UTF8,0,(char*)npstrIP.utf8characters,-1,strIP,length);
MessageBox(NULL,strIP,_T("呼叫 funPassVar_id: 第一個參數/n"),MB_OK);
delete[] strIP;
// 第二個參數: 1234
NPVariant varValue=args[1];
int32_t value=NPVARIANT_TO_INT32(varValue);
//印出來看看: 印出 int32 的內容
TCHAR msg[100];
_stprintf(msg,_T("value=%d"),value);
MessageBox(NULL,msg,_T("呼叫 funPassVar_id: 第二個參數/n"),MB_OK);
=============================================
希望對你有幫助.
by Jing
- 如何為你的 firefox plugin 加上新的 method
- [Plugin] 如何為你的 firefox plugin 加上新的 method
- 制作Firefox Plugin的几个注意点
- 编写firefox plugin的跨平台代码
- GWT-Dev-Plugin(即google web toolkit developer plugin)for firefox的下载地址
- 收集的Firefox Plugin 演示代码超链
- firefox 变慢可能是 plugin-container 插件的原因
- "plugin container for firefox已停止工作"的解决办法
- 如何使用links配置eclipse的plugin
- 如何给Eclipse的Plugin增加快捷键
- 如何写一个Jquery 的Plugin插件
- Plugin中plugin.properties的用法
- FireFox Plugin :Pearl Crescent
- firefox+plugin+jre
- Firefox good plugin
- Firefox Plugin 开发
- ECLIPSE 的plugin
- Eclipse plugin的国际化
- 基于BADI建数据源
- 具有Optimus技术的笔记本驱动安装问题
- Informix Dynamic Server 11.50 第 1 部分: IDS 计划和安装
- [Plugin] 撰寫 firefox plugin 最簡單方法
- org.xmlpull.v1.XmlPullParserException: expected: START_TAG
- [Plugin] 如何為你的 firefox plugin 加上新的 method
- 一直以来伴随我的一些学习习惯(刘未鹏)
- c# 什么时候使用序列化
- IPsec限制 某几个IP地址 访问 (AIX)
- 『已解决』插入模块时sys_init_module报错
- [Plugin] 50字內建立Firefox plugin 安裝檔 xpi
- RGB Color Chart
- Struts2 数据 标签 之 Property Tag
- 卷首语:“英语”不需要专业,因为它只是工具