70,023
社区成员




#import "msscript.ocx" no_namespace
#include<iostream>
#include<ctime>
using namespace std;
void func()
{
srand((unsigned int)time(NULL));
IScriptControlPtr control;
control.CreateInstance( __uuidof(ScriptControl) );
control->PutLanguage( "JScript" );
control->PutAllowUI( VARIANT_FALSE );
control->AddCode(
"function test( arg1 , arg2 ) { return arg1+arg2; }"
"function myFunc( arg1 , arg2 ) { return arg1+arg2; }"
);
IScriptProcedureCollectionPtr ProcCollection = control->GetProcedures();
long mCount = ProcCollection->GetCount();
for( long x=0;x<mCount;x++){
IScriptProcedurePtr Proc = ProcCollection->GetItem( x+1 );
cout<<"Procedure Name="<<(const char*)Proc->Name<<"\n";
cout<<"Args Number="<<Proc->NumArgs<<"\n";
VARIANT var = {0};
var.vt = VT_I4 ;
SAFEARRAYBOUND rgsabound[1]={0};
rgsabound[0].cElements = Proc->NumArgs;
SAFEARRAY* psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound);
for (long i = 0; i < Proc->NumArgs ; i ++){
var.lVal = rand() ;
cout<<"param"<<i<<"="<<var.lVal<<" ";
SafeArrayPutElement ( psa , &i , &var );
}
cout<<"\n";
_variant_t Result = control->Run( Proc->Name , &psa );
if( VARIANT_FALSE != Proc->HasReturnValue ){
cout<<(const char*)_bstr_t(Result)<<endl;
}
SafeArrayDestroy( psa );
}
}
int main(int argc, char* argv[])
{
::CoInitialize(NULL);
func();
::CoUninitialize();
return 0;
}