使用微软的ActiveX Scripting技术,可以在应用程序中集成使用vbscript或这javascript脚本语言。
在delphi中点击Component菜单的Import Activex Contol....菜单,选择Microsoft Script Control并添加,然后把这个控件放置在form上,就可以使用脚本了。
也可以使用CreateOleObject('MSScriptControl.ScriptControl.1')创建。
如何使用脚本操作应用程序呢?很简单,在delphi中创建一个Automation object类,通过这个类处理程序中的对象。然后创建一个Automation object类的实例,传递给Scriptcontrol就可以了。(点击 File | New menu, 选择ActiveX 页的 Automation Object wizard。)
ScriptControl1.SitehWnd := Self.Handle;
FAutoObject := TExposingObjectsDemo.Create;
ScriptControl1.AddObject('DemoObject', FAutoObject, True);
在脚本中通过DemoObject访问FAutoObject对象,通过FAutoObject实现操作应用程序的母的。
ScriptControl 对支持 ActiveX(TM) Script 的宿主 Script 引擎提供简单接口。接下来我们对被转化成ScriptControlClass类的ScriptControl的属性和方法进行一些说明。
属性
AllowUI 属性:应用于 ScriptControl 本身或 Scirpt 引擎显示的用户界面元素,可读写。
CodeObject 属性:返回对象,该对象用于调用指定模块的公用成员。只读。
Error 属性:返回 Error 对象,其中包含所发生的最后一个错误的相关详细信息。只读。
Language 属性:设置或返回正在使用的 Script 语言名称。可读写。
Modules 属性:为 ScriptControl 对象返回模块集合。只读。
Procedures 属性:返回在指定模块中定义的过程集合。只读。
SitehWnd 属性:设置或返回窗口的 hWnd,通过执行 Script 代码,此窗口用于显示对话框和其他用户界面元素。可读写。
State 属性:设置或返回 ScriptControl 对象的模式。可读写。
Timeout 属性:设置或返回时间(毫秒),此时间后用户可选择中止 Script 代码的执行或允许代码继续执行。可读写。
UseSafeSubset 属性:设置或返回 Boolean 值,指明宿主应用程序是否有保密性要求。如果宿主应用程序需要安全控制,则 UseSafeSubset 为 True,否则为 False。可读写。
方法
AddCode 方法:向模块添加指定代码。可多次调用 AddCode 方法。
AddObject 方法:使主机对象模型对 Script 引擎可用。
Eval 方法:计算表达式并返回结果。
ExecuteStatement 方法:执行指定的语句。
Reset 方法:放弃所有已经添加到 ScriptControl 中的 Script 代码和对象。
Run 方法:运行指定过程。
事件
Error 事件:出现运行时错误时,发生此事件。
Timeout 事件:当超出了 Timeout 属性指定的时间且用户在结果对话框中选定了 End 时,发生此事件。
补充几点
AllowUI 属性如果设置为false,则显示对话框之类的语句不起作用,如在 VBScript 中MsgBox 语句,JavaScript中的alert等,并且如果执行的脚本超出TimeOut设置的毫秒数,也不会跳出超出时间提醒的对话框,反之则相反;重新设置 Language 属性会清空AddCode加载的代码;对于TimeOut属性,发生超时时,ScriptControl 检查对象的 AllowUI 属性,确定是否允许显示用户界面元素。