如何在 c + + 呼叫 Run() 方法,Microsoft 指令碼控制項

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。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 報表無效的語言對 vbscript 來說,在 MFC 中

165967 PRB: 指令碼發生錯誤時,查閱非 variant 陣列
安全陣列時發生 Scriptcontrol 執行

警告:本文為自動翻譯

內容

文章識別碼:229669 - 最後檢閱時間:07/20/2013 16:18:00 - 修訂: 3.0

  • kbautomation kbhowto kbscript kbmt KB229669 KbMtzh
意見反應