::Главная страница :: С++/Си :: Статьи

Как вызвать скрипт из приложения?

Автор: Тимофей Чадов

При использовании WebBrowser Вы можете вызывать любые скрипты, расположенные в теле html-страницы. Обращение к скриптам производится через диспетчерский интерфейс, возвращаемый в свойстве Script интерфейса IHTMLDocument.

В следующем примере демонстрируется вызов функции с именем evalute, которая определена в теле html-страницы следующим образом.


<SCRIPT>
function evaluate(x)
{
    alert(x +"= " + eval(x));
}
</SCRIPT>

// Эта функция выполняет скрипт
void CMyHtmlView::OnCallscript()
{
    HRESULT hr;
    LPDISPATCH pDispatch = GetHtmlDocument();
    if( pDispatch == NULL ) return;

    IHTMLDocument* pHtmlDoc;
    hr = pDispatch->QueryInterface( __uuidof( IHTMLDocument ), (void**)&pHtmlDoc );

    LPDISPATCH pScript;
    pHtmlDoc->get_Script( &pScript);
    pScript->AddRef();
    if (SUCCEEDED(hr))
    {
        // Получаем DISPID интересуемой функции
        OLECHAR* szMember = L"evaluate";
        DISPID dispid;

        HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &szMember, 1,
            LOCALE_SYSTEM_DEFAULT, &dispid);

        if (SUCCEEDED(hr))
        {
            // Выполняем
            COleVariant vtResult;
            static BYTE parms[] = VTS_BSTR;

            COleDispatchDriver dispDriver(pScript);
            dispDriver.InvokeHelper(dispid, DISPATCH_METHOD, VT_VARIANT,
                (void*)&vtResult, parms,
                "5+Math.sin(9)");
        }
    }
    pScript->Realease();
    pHtmlDoc->Release();
    pDispatch->Release();
}
Тематические ссылки
Ваша ссылка Ваша ссылка

Обмен кнопками, ведение статистики, реклама.