IHTMLDocument2::get_scripts()
Вообщем появилась проблемка.
Есть HTML документ. Там есть функция
<script language="javascript">
function news(val)
{
document.write(val);
}
</script>
Как при помощи C++ Builder функции можно передать аргумент и выполнить ее?
Я вот как делаю:
IHTMLDocument2 *pHTMLDocument = NULL;
IHTMLElement* IElement;
IHTMLElementCollection* IElementColl;
if ( SUCCEEDED ( CppWebBrowser1 -> Document -> QueryInterface ( IID_IHTMLDocument2, ( LPVOID* )&pHTMLDocument ) ) )
{
if ( pHTMLDocument != NULL )
{
IHTMLElementCollection *pAll = NULL;
if ( SUCCEEDED ( pHTMLDocument -> get_all ( &pAll ) ) && pAll )
{
pHTMLDocument->get_scripts(&IElementColl);
А дальше что делать незнаю =(. В инете примеров нормальных ненашел. Подскажите плз.
:D вообщем поставленная задача решена =).
А Мы тебе не верим, покажи решение :)
А Мы тебе не верим, покажи решение :)
HRESULT hr = pDoc2->get_Script(&pScript);
pScript->AddRef();
if (SUCCEEDED(hr))
{
OLECHAR* szMember = L"news";
DISPID dispid;
HRESULT hr = pScript->GetIDsOfNames(IID_NULL, &szMember, 1,
LOCALE_SYSTEM_DEFAULT, &dispid);
if (SUCCEEDED(hr))
{
VARIANTARG* v=new VARIANTARG[1];
v[0].vt=VT_BSTR;
v[0].bstrVal=new wchar_t[20];
wcscpy(v[0].bstrVal,L"HELLO WORLD");
DISPPARAMS P={v,NULL,3,0};
VARIANT V;
EXCEPINFO E;
unsigned int ea;
pScript->Invoke(dispid, IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,&P,&V,&E,&ea);
}
Вроде вот так вот это делается =)