Add VBScript into C++ Application

How to add Scripting possibility, under windows with VBScript.

[sourcecode language="cpp"]
#include <windows.h>
#include <OleAuto.h>
#include <stdio.h>
#include <comutil.h>
#pragma comment (lib, "OleAut32.lib")
#pragma comment (lib, "comsuppw.lib")

#import "msscript.ocx"

MSScriptControl::IScriptProcedurePtr GetScriptFunction(MSScriptControl::IScriptControlPtr pScript, LPCTSTR szName)
{
MSScriptControl::IScriptProcedureCollectionPtr pIProcedures = pScript->GetProcedures();
long count = pIProcedures->GetCount();
for(long index=1; index <= count; index++)
{
MSScriptControl::IScriptProcedurePtr pIProcPtr = pIProcedures->GetItem( _variant_t(index) );
_bstr_t name = pIProcPtr->GetName();
if ( lstrcmp( name, szName ) == 0 )
return pIProcPtr ;
pIProcPtr = NULL;
}
return NULL ;
}

void create_script()
{
CoInitialize(NULL);
MSScriptControl::IScriptControlPtr m_pScript ;
HRESULT hr = m_pScript.CreateInstance(__uuidof(MSScriptControl::ScriptControl));

m_pScript->PutAllowUI( VARIANT_TRUE );
m_pScript->PutLanguage( _bstr_t(L"VBScript") );

_variant_t obj(1.2345);

wchar_t code[] = L"Function Toto()\nToto = 1.2345\nEnd Function" ;
hr = m_pScript->AddCode( _bstr_t(code) );

MSScriptControl::IScriptProcedurePtr pFunc = GetScriptFunction(m_pScript,L"Toto");

SAFEARRAY *parameters = ::SafeArrayCreateVector( VT_VARIANT, 0, 0 );

_variant_t ret = m_pScript->Run( _bstr_t("Toto"), &parameters );

_bstr_t bv(ret);
wprintf(L"%s\n", bv.GetBSTR());
}

int main(int argc, char** argv)
{
create_script();
}
[/sourcecode]

Les commentaires sont fermés.