Интересует один вопрос, реально ли выполнить кусок javascript кода с помощью С/C++? Т.е. к примеру на входе мы читаем файл, в котором есть к примеру: Code: <script>document.write("test");</script> На выходе получаем вывод строки: test на экран. И т.п. (разные функции escape() и другие) Может есть какая-нибудь библиотека? Заранее спасибо!
Есть стандартные COM объекты для поддержки скриптов: IActiveScript, IActiveScriptParse, IActiveScriptSite. Смотри описание в мсдн. Вот пример кода как это делается. Code: HRESULT hr; CComPtr<IActiveScript> spActiveScript; CComPtr<IActiveScriptParse> spScriptParse; CComPtr<IActiveScriptSite> spSite; // must be implemented by host if( FAILED( hr = CoCreateInstance( clsidEngine, // set clsid of VB or JS engine, depending on input language NULL, CLSCTX_INPROC_SERVER, IID_IActiveScript, (void**)&spActiveScript ) ) ) return hr; if( FAILED( hr = spActiveScript->QueryInterface( IID_IActiveScriptParse, (void**)&spScriptParse ) ) ) return hr; if( FAILED( hr = spActiveScript->SetScriptSite( spSite ) ) ) return hr; if( FAILED( hr = spScriptParse->InitNew() ) ) return hr; // use this to add your own objects into script namespace if( FAILED( hr = spActiveScript->AddNamedItem( g_lpstrController, SCRIPTITEM_GLOBALMEMBERS|SCRIPTITEM_ISVISIBLE ) ) ) return hr; CComBSTR bstrScript; // load from text file EXCEPINFO ei; if( SUCCEEDED( hr = spScriptParse->ParseScriptText( bstrScript, NULL, NULL, NULL, 0, 0, 0, NULL, &ei ) ) ) { SCRIPTSTATE st; if( SUCCEEDED( hr = spActiveScript->GetScriptState( &st ) ) ) { if( st != SCRIPTSTATE_CONNECTED ) { // run script hr = spActiveScript->SetScriptState( SCRIPTSTATE_CONNECTED ); } } } return hr; Единственно что нужно отметить, для того чтобы получилось обратиться в скрипте document.write() необходимо реализовать объект поддерживающий IDispatch интерфейс реализирующий метод write() и добавить его в пространство имен скрипта под именем "document" (AddNamedItem) что в общем-то и делает IE, а иначе будут доступны только основные методы языка: математические функции, строки, массивы и т.д.