JavaScript调用ActiveX

一、用VS.net编写ActiveX控件

 

不用说得太多,三张贴图就搞定,往下看:

 

1、如下图所示,创建一个“MFC ActiveX Control”工程。

 

2、“添加ActiveX控件的事件”如下图所示:

 

3、“添加ActiveX控件的方法和属性”如下图所示:

 

下面是VS.net自动生成的HelloAx.idl文件,从中可以看到我添加了几个方法、和一个事件。

// HelloAx.idl : type library source for ActiveX Control project. // This file will be processed by the MIDL compiler tool to // produce the type library (HelloAx.tlb) that will become a resource in // HelloAx.ocx. #include #include [ uuid(53899582-5708-4C39-A71F-E0CD8162FEF4), version(1.0), helpfile("HelloAx.hlp"), helpstring("HelloAx ActiveX Control module"), control ] library HelloAxLib { importlib(STDOLE_TLB); // Primary dispatch interface for CHelloAxCtrl [ uuid(3A6248EA-AEBE-41BC-B804-DE06BDC951CE), helpstring("Dispatch interface for HelloAx Control")] dispinterface _DHelloAx { properties: methods: [id(DISPID_ABOUTBOX)] void AboutBox(); [id(1), helpstring("method TestLong")] LONG TestLong(void); [id(2), helpstring("method DriverEvent")] void DriverEvent(void); [id(3), helpstring("method AddOne")] LONG AddOne(LONG lNum); }; // Event dispatch interface for CHelloAxCtrl [ uuid(A6673758-13FB-4BA1-A236-784EE07505E3), helpstring("Event interface for HelloAx Control") ] dispinterface _DHelloAxEvents { properties: // Event interface has no properties methods: [id(1)] void TestEvent(BSTR strInfo); }; // Class information for CHelloAxCtrl [ uuid(8EA50B02-CCF2-4A49-81CE-721455BDFD83), helpstring("HelloAx Control"), control ] coclass HelloAx { [default] dispinterface _DHelloAx; [default, source] dispinterface _DHelloAxEvents; }; };

 

二、通过JavaScript脚本调用ActiveX控件

 

同样无须太多言语,直接上代码,然后给出运行结果贴图。

  ActiveX控件Demo    


  

 

点击“执行函数” 按钮

 

点击“产生事件” 按钮

 

点击“关于” 按钮

 

 小结:这个东西很简单,但是也很难。为什么3张图片就能搞定ActiveX编程呢?那是因为VS.net开发环境里的SDK已经帮我们做了太多太多的东西了,所以我们才能那么方便快捷的开发ActiveX控件。我在大学时看了一本潘爱民编著的《COM原理与应用》,基本把COM给大致理解了,而ActiveX就是基于COM这套规范的一个技术实现,要能理解COM才能真正把ActiveX给理解的。还有就是用JavaScript调用ActiveX这点,我失败了n次,原因就是把CLSID给搞错了,学习这项技术的朋友们可以仔细看看我上面给的例子的clsid与HelloAx.idl里那4个clsid,究竟是哪个才是对应在html中使用的。当年就是把TypeLib的uuid错当成了ActiveX控件的clsid,于是,调试、上网查资料、再调试、再查、直到郁闷得快要吐血了,最终还是悲剧的失败了,所以放弃了很长一段时间,不过后来因为工作需要用到这项技术,于是又开始弄这个东东,想不到两天这样就完全搞定了,包括ActiveX控件的编写,我也就是看了一个现成的ActiveX控件的代码而已,看来技术提高后再回头看一些以前搞不定的东西是很容易搞定的。

 

到目前为止,我学习计算机的时间也就3年,刚进大学,我连内存和主板都不大搞得清楚,更别说软件编程之类的东西了,但是我会开机、会玩游戏,当然,也只会玩游戏。计算机对我而言就是游戏机,但是,后来我发现,黑客技术、计算机编程、软件开发等等,更加吸引我,于是我开始真正进入了计算机的世界。上了个大学,真的自学到了很多东西,尤其是计算机方面的。

 

我也曾经是个菜鸟,把这些感受写出来,与广大学习计算机的朋友共勉。

 

不管在什么领域,只要你带着强烈的兴趣以及探索的欲望,持之以恒的学习与专研,终有一天你会到达你曾经不敢想象的高度……

你可能感兴趣的:(编程积累)