|
近几天有不少网友提出想要 VC驿站 的 POST 教程中涉及的 JS 脚本操作类。
教程中我使用了两种 JS 引擎,一种是使用 火狐浏览器的 JS 引擎 SpiderMonkey 来封装的 C++ 类,这种方式使用起来也倒是不错,但是不同版本的 VS 可能需要编译各自版本的库才行,而且编译库也是个体力活,稍有不慎就入坑了。
另外一种是我使用微软提供的 JS 脚本引擎的 COM 组件 MSScript,这种实现起来能简单方便一点,也不用自己编译 JS 引擎代码,但是如何使用这个组件网上的资料还真是少之又少。
个人也是参考了 codeproject 上面的一个源代码,同时进行了功能的修改和增加,增加了几个接口方便使用。
这里既然大家提出来了,而且我们VC驿站的教程也基本都免费给大家了,所以也干脆把这个 MSScript 的脚本引擎封装类免费放出来提供给大家使用,不为别的,就为了让大家以后多多支持我们VC驿站,互相帮助,互相学习,我们共同进步!
相关接口如下:
- class CMSJsMgr
- {
- public:
- CMSJsMgr(void);
- ~CMSJsMgr(void);
- public:
- bool initGlobalContext(); //初始化
- bool runScriptString(LPCTSTR scriptString, _variant_t& retVal); //执行字符串格式的 JS 脚本
- bool runScriptFile(LPCTSTR jsPath, _variant_t* pRetVal = NULL); //从文件加载 JS 脚本并执行
- bool runScriptResFile(UINT jsResID, LPCTSTR jsResType, _variant_t& retVal); //从资源文件加载 JS 脚本并执行
- bool loadScriptFile(LPCTSTR jsPath);
- bool evalFunction(LPCTSTR funName, CJsArray* paramArray, _variant_t& retVal); //执行 JS 脚本中的全局函数
- bool evalObjFunction(LPCTSTR objName, LPCTSTR funName, CJsArray* paramArray, _variant_t& retVal); //执行 JS 脚本中某个对象的方法函数
- bool evalObjFunction(_variant_t& targetObj, LPCTSTR funName, CJsArray* paramArray, _variant_t& retVal); //执行 JS 脚本中某个对象的方法函数
- LPCTSTR GetErrorString(); //获取错误信息
- public:
- bool m_bInitOk;
- IScriptControlPtr m_pScript;
- TCHAR m_szError[ERROR_DESC_LEN+1];
- };
复制代码
备注:代码中难免有疏漏之处,如有bug,还请跟帖回复,共同维护!
回复后可见哈!
|
评分
-
查看全部评分
上一篇: 第15课 代码实现百度贴吧的回复功能 | 课程代码
|