ActiveX Scripting

      Program 2006-1-17 18:55

  今天下午花了点时间看了下ActiveX Scripting技术,以前只知道大概是个什么东西,也没有写过相关的程序。

  简单来说,ActiveX Scripting技术可以让用户对程序进行功能扩展,为应用程序提供了可编程的特性,应用程序通过这种技术来提供二次开发的特性。它是Automation技术和Script技术结合的产物。

  从技术的角度来看,ActiveX Scripting技术实际上是一组COM接口的定义,通过这组接口建立应用程序和脚本引擎之间的关系。脚本引擎是ActiveX Scripting技术的实现,一个应用系统如果实现了有关的标准接口,那么它就可以通过脚本引擎提供对用户脚本语言的支持。

  应用系统为了支持脚本语言,首先它要实现几个标准接口,然后它把自己的一些被控对象暴露出来;脚本文件是一个文本文件,文件中包含了一些程序代码;脚本引擎本身是一个COM对象,它负责对脚本文件的解释和执行工作,在必要时通过应用系统的接口与其交互。

  CSDN上那篇文章里面有一个ActiveX Scripting的例子,seven说编译通不过。我弄下来试了一下,果然一堆问题。

  首先是IActiveScriptSite,IActiveScriptSiteWindow等一堆东西没定义,加上头文件activscp.h就好了。接着又是const unsigned short*不能赋值给unsigned short*,加上强制转换,搞定。然后_stat结构体又出了问题,于是加上sys/stat.h,OK。再次编译,没有出现编译错误了,但是又出来一堆LINK错误。原来是CScriptHost继承的父类IActiveScriptSite和IActiveScriptSiteWindow中有很多纯虚函数,实例化之前必须先实现这些纯虚函数。还好这些函数在这个例子中不是很重要,直接在函数中返回S_OK或者E_NOTIMPL就行了。最后一个问题是LNK1103: debugging information corrupt; recompile module,以前没碰到过,在网上查了下,发现居然是lib和link.exe的版本不合(我的系统是XPSP2,开发环境是VC6+2003SDK)。在Directory设置中,把SDK移到最后,再次编译,终于成功通过了~

  最后运行了一下测试脚本,功能是实现了,但是MSGBOX却始终跳不出来,不知道是什么原因。

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}