在VC++中调用VBS程序,并且需要得到这个VBS程序的返回值,怎么做,

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:24:44
我需要在执行一个VBS程序之后得到这个VBS程序的返回值,我现在已经能够让我的程序执行一个VBS程序 但是就是不知道怎么让这个VBS程序返回我需要的值啊!希望那个高手来解释一下,不用给我讲太多理论,直接给我一个小程序,然后执行要求说一下就行了,我的是环境VC6.0

没有过多的理论, 但有些内容是必要的.

在 C++ 中执行一段 Script 的方法相当的多, 但你需要其返回值, 这可能需要使用 MS 提供的 MSScript.ocx (在 C++ 中引用该 ActiveX Object).

先来个例子, 假定一段 VBScript 的过程如下:
Private Function GetValue()
GetValue=5
End Function

你期望在 C++ 中执行此过程, 并将返回值 5 保存到 C++ 中定义的变量中.
这好办, 在 C++ 需要引用 MSScript.ocx, 以下是一个Win32 Console Application (控制台程式, 但这与本主题无关):

main.cpp

#include <windows.h>
#include <stdio.h>
#import "D:\WINDOWS\System32\msscript.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids

int main()
{
_variant_t vReturn; // Script 的返回值, Script 是返回 Variant 的
short returnValue; // 从返回值提取有用的值, 因为例子返回 5, 所以用 short 保存
::CoInitialize(NULL);

::IScriptControlPtr p(__uuidof(ScriptControl));
p.AddRef();
p->put_Language(_bstr_t("VBScript")); // 必要, Script 为 VBScript, 当然还可以是 JScript 等
p->put_AllowUI(TRUE);