如何在 c + + 中调用 Run() 方法,Microsoft 脚本控件

文章翻译 文章翻译
文章编号: 229669
展开全部 | 关闭全部

概要

本文演示如何使用 Microsoft 脚本控件来调用函数或子例程 JavaScript 或 VBScript 中定义。

更多信息

脚本控件都有四种方法。其中之一是 Run(),运行子例程或函数。调用此方法之前,请指定脚本语言、 设置 AllowUI,并将以下脚本添加到脚本控件:
//---------------------- Begin ---------------------------

#include <stdio.h>
#import "C:\winnt\system32\msscript.ocx"  // msscript.ocx 
using namespace MSScriptControl;

int main(void)
{
	HRESULT hr = CoInitialize(NULL);

	IScriptControlPtr pScriptControl(__uuidof(ScriptControl));

	// Create a VARIANT array of VARIANTs which hold BSTRs
	LPSAFEARRAY psa;
	SAFEARRAYBOUND rgsabound[]  = { 3, 0 }; // 3 elements, 0-based
	int i;

	psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
	if (!psa)
	{
		return E_OUTOFMEMORY;
	}

	VARIANT vFlavors[3];
	for (i = 0; i < 3; i++)
	{
		VariantInit(&vFlavors[i]);
		V_VT(&vFlavors[i]) = VT_BSTR;
	}

	V_BSTR(&vFlavors[0]) = SysAllocString(OLESTR("Vanilla"));
	V_BSTR(&vFlavors[1]) = SysAllocString(OLESTR("Chocolate"));
	V_BSTR(&vFlavors[2]) = SysAllocString(OLESTR("Espresso Chip"));

	long lZero = 0;
	long lOne = 1;
	long lTwo = 2;

	// Put Elements to the SafeArray:
	hr = SafeArrayPutElement(psa, &lZero,&vFlavors[0]);
	hr = SafeArrayPutElement(psa, &lOne,&vFlavors[1]);
	hr = SafeArrayPutElement(psa, &lTwo,&vFlavors[2]);

	// Free Elements from the SafeArray:
	for(i=0;i<3;i++)
	{
		SysFreeString(vFlavors[i].bstrVal);
	}

	// Set up Script control properties
	pScriptControl->Language = "JScript";
	pScriptControl->AllowUI = TRUE;
	pScriptControl->AddCode(
		"function MyStringFunction(Argu1,Argu2,Argu3)\ 
		{  return \"hi there\" ;}" );

	//  Call MyStringFunction with the two args:
	_variant_t outpar = pScriptControl->Run("MyStringFunction", &psa);
	

	// Convert VARIANT to C string:
	_bstr_t bstrReturn = (_bstr_t)outpar;
	char *pResult = (char *)bstrReturn;


	// Print the result out:
	printf("func=%s\n",pResult);
	
	//  Clean up:
	SafeArrayDestroy(psa);

	CoUninitialize();
	return(0);
}

// --------------- End -----------------------
				

参考

脚本控件的信息,请访问 MSDN 脚本站点.

更多信息见下列文章 Microsoft 知识库中相应的文章:
184977 修复: ScriptControl 报告的语言无效在 MFC 中的 VBScript

165967 PRB: 发生脚本错误时引用非变量型数组

属性

文章编号: 229669 - 最后修改: 2013年7月20日 - 修订: 3.0
关键字:?
kbautomation kbhowto kbscript kbmt KB229669 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 229669
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com