O primeiro tipo: Ligue para o ExecScript. Embora esse método seja fácil de operar, ele não pode obter o valor de retorno.
m_sphtmldoc-> get_parentwindow (& m_phtmlwindow); variante ret; ret.vt = vt_empty; bstr bstr = sscript.allocsystring (); bret = m_phtmlwindow-> execscript (bstr, "javScript", e ret); CString (ret);
O segundo tipo: primeiro use getIdsofNames para encontrar o nome da função de script e depois ligue para. Este método pode retornar o resultado e ter um valor de retorno. Mas é impossível chamar funções do sistema de JS, como avaliar.
Bool CDHTMLDLGWindow :: CallJscript (const CString strfunc, const CStringArray & Paramerray, CComvariant* pvarResult) {CComPtr spScript; if (null == m_sphtmldoc) {return false; } HResult hr; hr = m_sphtmldoc-> get_script (& spScript); if (! sucedido (hr)) {return false; } CCOMBSTR BSTRMEMBER (STRFUNC); Disídio de disco = nulo; hr = spScript-> getIdsofNames (iid_null, & bstrmember, 1, loce_system_default, & disld); if (falhou (hr)) {return false; } const int Arraysize = paramerray.getSize (); Despparams dispparams; MEMSET (& DISPPPARAMS, 0, Sizeof Dispparams); dispparams.cargs = Arraysize; dispparams.rgvarg = nova variante [dispparams.cargs]; for (int i = 0; i <Arraysize; i ++) {ccombstr bstr = paramerray.getat (Arraysize - 1 - i); // de volta lendo bstr.copyto (& dispparams.rgvarg [i] .btrval); dispparams.rgvarg [i] .vt = vt_bstr; } dispparams.cNameDArgs = 0; Excepção excepcionalInfo; MEMSET (& Excepinfo, 0, Sizeof ExceptionInfo); CcomVariant Varesult; Uint nargerr = (uint) -1; // inicialize para inválido arg hr = spScript-> Invoke (DISCID, IID_NULL, 0, DISPATCH_METHOD, & DISPPPARAMS, & VARESULT, & EXCEPIRFO, & NARGERR); excluir [] dispparams.rgvarg; if (falhou (hr)) {return false; } *pvarResult = varesult; retornar true;}Ao realmente usá -lo, você pode ter acessado uma página primeiro. Em seguida, faça algumas chamadas de JS para esta página no VC e recupere o resultado. É possível que a função chamada por este JS não esteja disponível nesta página. Geralmente, você pode usar o formulário de Eval (algumas declarações JS) para chamar funções que não estão na página, mas agora nenhum dos métodos acima suporta avaliação.
O terceiro tipo: obtenha o contexto atual do documento através do iScriptControl e, em seguida, chame a operação IScriptControl :: RAW_Eval. (Você só pode usar RAW_EVAL. Usando o método de avaliação solicitará que não haja permissão.)
Primeiro, defina um: iscriptControlptr e depois ligue para M_SPHTMLDOC-> get_parentwindow (& m_phtmlwindow);
IscriptControlptr-> addObject ("janela", m_phtmlwindow, variant_true);
O terceiro tipo requer importação "msscript.ocx"
Os vários métodos acima (recomendados) do vc chamando JavaScript são todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.