📄 scriptcontrol.htm
字号:
</td>
<td width=88 valign=top style='width:66.35pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Long</span></p>
</td>
<td width=365 valign=top style='width:273.6pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>控件的执行脚本的超时值,-<span lang=EN-US style='font-family:Verdana'>1</span>表示不超时</p>
</td>
</tr>
<tr>
<td width=115 valign=top style='width:86.15pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>UseSafeSubset</span></p>
</td>
<td width=88 valign=top style='width:66.35pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>BOOL</span></p>
</td>
<td width=365 valign=top style='width:273.6pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>设置或返回宿主程序是否关心安全。宿主程序的安全级别可以从此属性设置</p>
</td>
</tr>
<tr>
<td width=115 valign=top style='width:86.15pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Error</span></p>
</td>
<td width=88 valign=top style='width:66.35pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Error</span></p>
</td>
<td width=365 valign=top style='width:273.6pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>错误对象,发生错误时,此属性返回一个错误对象</p>
</td>
</tr>
</table>
<p style='background:white'><span lang=EN-US style='font-family:Verdana'> </span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
background:gray;padding:0cm 5.4pt 0cm 5.4pt'>
<p>方法名称</p>
</td>
<td width=180 valign=top style='width:135.0pt;border:solid windowtext 1.0pt;
border-left:none;background:gray;padding:0cm 5.4pt 0cm 5.4pt'>
<p>参数</p>
</td>
<td width=285 valign=top style='width:213.7pt;border:solid windowtext 1.0pt;
border-left:none;background:gray;padding:0cm 5.4pt 0cm 5.4pt'>
<p>功能</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>AddCode</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Code As String</span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>往脚本引擎中加入要执行的脚本</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>AddObject</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Name As String, Object As
Object, [AddMembers As Boolean = False]</span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>往脚本引擎加入一个对象<span lang=EN-US style='font-family:Verdana'>,</span>以便在脚本中可以使用该对象提供的方法等。</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Eval</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Expression As String</span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>表达式求值</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>ExecuteStatement</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Statement As String</span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>解释并执行脚本语句</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Reset</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'> </span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>丢弃所有的对象和代码,将<span lang=EN-US style='font-family:Verdana'>State</span>属性置<span
lang=EN-US style='font-family:Verdana'>0</span>。</p>
</td>
</tr>
<tr>
<td width=103 valign=top style='width:77.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Run</span></p>
</td>
<td width=180 valign=top style='width:135.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>ProcedureName As String,
ParamArray Parameters() As Variant</span></p>
</td>
<td width=285 valign=top style='width:213.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>运行一个指定的过程</p>
</td>
</tr>
</table>
<p style='background:white'><span lang=EN-US style='font-family:Verdana'> </span></p>
<table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=139 valign=top style='width:104.4pt;border:solid windowtext 1.0pt;
background:#A6A6A6;padding:0cm 5.4pt 0cm 5.4pt'>
<p>事件名称</p>
</td>
<td width=429 valign=top style='width:321.7pt;border:solid windowtext 1.0pt;
border-left:none;background:#A6A6A6;padding:0cm 5.4pt 0cm 5.4pt'>
<p>功能</p>
</td>
</tr>
<tr>
<td width=139 valign=top style='width:104.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>Error</span></p>
</td>
<td width=429 valign=top style='width:321.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>有错误发生时激发该事件</p>
</td>
</tr>
<tr>
<td width=139 valign=top style='width:104.4pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p><span lang=EN-US style='font-family:Verdana'>TimeOut</span></p>
</td>
<td width=429 valign=top style='width:321.7pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p>执行过程超时时发生</p>
</td>
</tr>
</table>
<p class=MsoNormal><span lang=EN-US> </span></p>
<h2><span style='font-family:黑体'>一般使用方法</span></h2>
<p class=MsoNormal><span lang=EN-US>1</span><span style='font-family:宋体'>、在程序中加入</span><span
lang=EN-US>ScriptControl</span></p>
<p class=MsoNormal><span lang=EN-US>2</span><span style='font-family:宋体'>、定义一个</span><span
lang=EN-US>ScriptControl</span><span style='font-family:宋体'>的实例</span></p>
<p class=MsoNormal><span lang=EN-US>3</span><span style='font-family:宋体'>、调用</span><span
lang=EN-US>AddCode</span><span style='font-family:宋体'>等方法向脚本引擎中加入要执行的脚本。</span></p>
<p class=MsoNormal><span lang=EN-US>4</span><span style='font-family:宋体'>、调用</span><span
lang=EN-US>Run</span><span style='font-family:宋体'>执行要执行的脚本函数。</span></p>
<h2><span style='font-family:黑体'>宿主与脚本的通讯</span></h2>
<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
lang=EN-US>1、<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-family:宋体'>宿主调用脚本:这个过程比较简单,只要调用</span><span lang=EN-US>Run</span><span
style='font-family:宋体'>就可以将参数传递到脚本。</span></p>
<p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
lang=EN-US>2、<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-family:宋体'>脚本调用宿主:在初始化过程中调用</span><span lang=EN-US>AddObject</span><span
style='font-family:宋体'>接口,将宿主的一个或多个对象暴露给脚本,这时就可以在脚本中调用宿主对象的方法。在</span><span
lang=EN-US>VC++</span><span style='font-family:宋体'>中这个对象不是普通的</span><span
lang=EN-US>C++</span><span style='font-family:宋体'>类,它必须支持自动化,在脚本中也只能调用对象中自动化接口(在</span><span
lang=EN-US>VB</span><span style='font-family:宋体'>中这个个程相对比较简单)。</span></p>
<h2><span style='font-family:黑体'>脚本调试</span></h2>
<p class=MsoNormal><span style='font-family:宋体'>任何人写的代码都不可能一次就很完美,但是脚本由于执行的位置特殊,调试方法也不一样。首先下载一个脚本调试器(我用的是</span><span
lang=EN-US>Microsoft Script Debugger, </span><span style='font-family:宋体'>在</span><span
lang=EN-US>MS</span><span style='font-family:宋体'>网站有下载,另据说其它的如</span><span
lang=EN-US>VJ</span><span style='font-family:宋体'>++也可以),安装以后在菜单上没有启动菜单。</span></p>
<h3><span style='font-family:宋体'>调试器的启动</span></h3>
<p class=MsoNormal><span style='font-family:宋体'>在一般的高级语言中都可以方便的设置断点,但是在启动脚本调试器以前如何开始调试呢?在</span><span
lang=EN-US>IE</span><span style='font-family:宋体'>中脚本出错会自动提示是否调试,还可以在脚本中加入中断代码(</span><span
lang=EN-US>VBScript: Stop JavaScript: debugger</span><span style='font-family:
宋体'>)</span><span lang=EN-US>,</span><span style='font-family:宋体'>但是在</span><span
lang=EN-US>ScriptControl</span><span style='font-family:宋体'>还需要修改一下注册表才可以,你需要将</span><span
lang=EN-US>HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings</span><span
style='font-family:宋体'>下的</span><span lang=EN-US>JITDebug</span><span
style='font-family:宋体'>的值改为</span><span lang=EN-US>1</span><span
style='font-family:宋体'>(默认为</span><span lang=EN-US>0</span><span
style='font-family:宋体'>)</span></p>
<h2><span style='font-family:黑体'>示例代码</span></h2>
<p class=MsoNormal><span lang=EN-US> </span></p>
在VC中使用ScriptControl例子:ScriptDemo.rar
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -