كيفية استدعاء أسلوب Run() التحكم Microsoft Script في C++

معرف المقالة: 229669 - عرض المنتجات التي تنطبق عليها هذه المقالة.
توسيع الكل | طي الكل

الموجز

توضح هذه المقالة كيفية استخدام عنصر التحكم Microsoft Script استدعاء الوظائف أو subroutines المعرفة في JavaScript أو VBScript.

معلومات أخرى

يتضمن عنصر التحكم Script أربعة أساليب. موردًا واحدًا هو 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 Scripting Site.

يمكن العثور على معلومات إضافية في المقالات التالية في "قاعدة معارف Microsoft:
184977FIX: لغة غير صالحة تقارير ScriptControl لـ VBScript في MFC

165967PRB: حدوث خطأ البرنامج النصي عند الإشارة إلى صفيف غير متغير

الخصائص

معرف المقالة: 229669 - تاريخ آخر مراجعة: 11/جمادى الأولى/1425 - مراجعة: 2.1
تنطبق على
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft JScript 5.0
  • Visual Basic, Scripting Edition 5.0
كلمات أساسية: 
kbmt kbautomation kbhowto kbscript KB229669 KbMtar
ترجمة آلية
هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية
اضغط هنا لرابط المقالة باللغة الانجليزية229669

إرسال ملاحظات