첫 번째 유형 : execscript를 통해 호출합니다. 이 방법은 작동하기 쉽지만 반환 값을 얻을 수는 없습니다.
m_sphtmldoc-> get_parentwindow (& m_phtmlwindow); variant ret; ret.vt = vt_empty; bstr bstr = sscript.allocsysstring (); bret = m_phtmlwindow-> execsret (bstr, l "javaScript"; cstring (ret);
두 번째 유형 : 먼저 getIdsofNames를 사용하여 스크립트 함수 이름을 찾은 다음 호출하십시오. 이 방법은 결과를 반환하고 반환 값을 가질 수 있습니다. 그러나 평가와 같은 JS의 시스템 기능을 호출하는 것은 불가능합니다.
bool cdhtmldlgwindow :: calljscript (const cstring strfunc, const cstringarray & paramarray, ccomvariant* pvarresult) {ccomptr spscript; if (null == m_sphtmldoc) {return false; } hresult hr; hr = m_sphtmldoc-> get_script (& spscript); if (! 성공 (hr)) {return false; } ccombstr bstrmember (strfunc); 분할 명당 = null; hr = spscript-> getIdsofNames (iid_null, & bstrmember, 1, locale_system_default, & dispid); if (실패 (hr)) {return false; } const int arraysize = paramarray.getSize (); dispparams dispparams; memset (& dispparams, 0, dispparams의 크기); dispparams.cargs = arraysize; dispparams.rgvarg = 새로운 변형 [dispparams.cargs]; for (int i = 0; i <arraysize; i ++) {ccombstr bstr = paramarray.getat (arraysize -1 -i); // 뒤로 뒤로 읽기 bstr.copyto (& dispparams.rgvarg [i] .bstrval); dispparams.rgvarg [i] .vt = vt_bstr; } dispparams.cnamedargs = 0; excepinfo ExceptionInfo; memset (& excepinfo, 0, exceptioninfo의 크기); ccomvariant varesult; uint nargerr = (uint) -1; // 유효하지 않은 arg hr = spscript-> 호출 (dispid, iid_null, 0, dispatch_method, & dispparams, & varesult, & excepinfo, & nargerr); 삭제 [] dispparams.rgvarg; if (실패 (hr)) {return false; } *pvarresult = varesult; 진실로 반환;}실제로 사용하면 먼저 페이지에 액세스했을 수 있습니다. 그런 다음 VC 에서이 페이지로 일부 JS 호출을하고 결과를 검색하십시오. 이 JS에서 호출 된 기능을이 페이지에서 사용할 수 없습니다. 일반적으로 평가 형식 (일부 JS 문)을 사용하여 페이지에없는 함수를 호출 할 수 있지만 이제 위의 방법 중 어느 것도 Eval을 지원하지 않습니다.
세 번째 유형 : iscriptControl을 통해 현재 문서 컨텍스트를 가져온 다음 iscriptControl :: raw_eval 작업을 호출하십시오. (Raw_eval 만 사용할 수 있습니다. 평가 방법을 사용하면 허가가 없음을 프롬프트합니다.)
먼저 하나를 정의한 다음 iscriptcontrolptr, 그런 다음 m_sphtmldoc-> get_parentwindow (& m_phtmlwindow);
iscriptControlPtr-> addObject ( "창", m_phtmlwindow, variant_true);
세 번째 유형에는 "msscript.ocx"가져 오기가 필요합니다.
VC 호출 JavaScript의 위의 몇 가지 방법 (권장)은 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.