【发布时间】:2015-05-03 14:09:49
【问题描述】:
我有一个 VBScript,其中有一个 2D 数组。我想从 VBScript 调用一个用 C++ 编写的 .exe。
我可以通过命令行或其他方式将此 VBScript 数组传递给 .exe 吗?如果是,如何以及如何处理它? (举个例子就好了。)
如果不可能,用二维数组,但用一维数组,也是一种解决方案。
谢谢!
更新: 只是为了澄清:我不希望一个接一个地传递数组的项目。我只想以某种方式传递整个数组一次调用 exe,并在 exe 中处理它。
更新 2: 该数组仅包含字符串,脚本的宿主环境是 Windows Script Host。不幸的是,在硬盘上创建任何文件都不是一种选择。
【问题讨论】:
-
有几个选项:a) 命令行参数 b) 文件 c) 共享内存 d) 管道,.... 完全取决于您的用例什么是最好的方法。
-
文件不是一个选项。命令行是最好的,也许共享内存也可以。但是我该怎么做呢?
-
对于命令行解决方案,您需要将数组转换为 ASCII,在命令行中传递,然后让 C++ 程序将其转换回实际数据。您可能会超出命令行的任何合理大小...查看
WM_COPYDATA-- here 是 SO 上的一个示例。 -
嗯,命令行采用字符串化参数 (
int main(int argc,char* argv[])),其中argc告诉您有多少。这不是表示二维数组的一种很好的格式。但当然可以:您传递前 2 个参数来指定数组的维度,并且以下所有参数都是特定值。您能否详细说明,为什么 file 不是一个选项? -
@kampi 我很明白你想做什么。 “我想以某种方式传递整个数组。” 那么您可能应该查找共享内存或管道。命令行将不支持您想要的,中间文件也会这样做。我没有告诉你任何关于你的事情,你应该不止一次打电话给你的
.exe。