【发布时间】:2016-09-16 12:20:10
【问题描述】:
说明
- 我使用 VBScript
- 从 VBScript 我将我的第一个 TCL 脚本称为“name1”
- 脚本“name1”完成后,我继续使用 VBScript
- 经过几个 VBScript 函数后,我将第二个 TCL 脚本称为“name2”,该脚本是脚本“name1”的子进程。脚本“name2”必须使用脚本“name1”中的所有变量
当前结果
我的脚本“name1”和“name2”在不同的 tclsh 窗口中执行 结果,“name2”不熟悉“name1”的变量
预期结果
“name1”和“name2”在同一个tclsh窗口中执行
评论
我尝试使用这些命令,但我不知道它在 VBScript 中的语法
Tcl_Create tclHandler, TCL_Eval 状态,tclHandler,
如果有一个如何在 VBScript 或任何其他命令中使用这些命令的示例,那就太好了
谢谢
VBScript:
#$language = "VBScript"
#$interface = "1.0"
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
crt.Screen.Synchronous = True
Sub Main
dim shell
set shell=createobject("wscript.shell")
shell.run "tclsh e:\RunTCL\name1.tcl"
crt.Sleep 10000 ' or any VBScript commands
shell.run "tclsh e:\RunTCL\name2.tcl"
结束子
name1.tcl
软件包要求 SpirentTestCenter
设置 hProject [stc::create project]
设置 hTxPort [stc::create port -under $hProject -location //192.168.0.243/10/17 -useDefaultHost False]
name2.tcl
设置 hRxPort [stc::create port -under $hProject -location //192.168.0.243/10/25 -useDefaultHost False]
带有 tcl84.dll 的新代码及其命令“TCL_Create tclHandler”:
#$language = "VBScript"
#$interface = "1.0"
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
crt.Screen.Synchronous = True
Sub Main
Dim wscriptTCL
tclHandler = 0
set wscriptTCL =CreateObject("C:\Tcl\bin\tcl84.dll")
TCL_Create tclHandler, wscriptTCL, 1
puts "Importing STC API"
TCL_Eval Status, tclHandler, "package req SpirentTestCenter"
puts "Creating API objects set"
TCL_Eval Status, tclHandler, "set hProject [stc::create project]"
puts "Connecting to STC ports"
TCL_Eval Status, tclHandler, "set hTxPort [stc::create port -under $hProject -location //10.110.10.243/8/9 -useDefaultHost False]"
src.Sleep 100000
TCL_Eval Status, tclHandler, "set hRxPort [stc::create port -under $hProject -location //10.110.10.243/8/10 -useDefaultHost False]"
因此,我看到此消息:错误:ActiveX 组件无法创建对象'c:\tcl\bin\tcl84.dll'
我可以使用 2 个选项:
- 从我的 VB 脚本调用 tcl 文件
- 通过 dll 从 VB 脚本调用 tcl 命令
但是没有人在工作
好消息,它开始工作了,但是,我更喜欢通过 API 执行单独的 TCL 文件
shell.run "tclsh"
crt.Sleep 10000
shell.AppActivate "tclsh"
shell.SendKeys("TCL command")
【问题讨论】:
-
如果您希望代码被分析并得到帮助,您真的应该发布代码;不然这里的人都是瞎操作……