转自:http://blog.csdn.net/tujiaw/article/details/6556880
1.简单的含有js的网页:
- <html>
- <head>
- <mce:script type = "text/javascript"><!--
- function test(){
- document.write("hello world!");
- }
- function test2(){
- alert("hello, world");
- }
- function link(){
- window.location.href = "http://www.baidu.com";
- }
- test();
-
- </head>
- <body>
- <p><a href = "javascript:link()">this is js link</a></p>
- </body>
- </html>
2.WebBrowser ActiveX控件成员变量:
- CComPtr<IWebBrowser2> m_pWb2;
3.在OnInitDialog中
- CAxWindow wndIE = GetDlgItem(IDC_IE);
- HRESULT hr;
- hr = wndIE.QueryControl(&m_pWb2);
- if (m_pWb2)
- {
- CComVariant v;
- m_pWb2->Navigate(CComBSTR(_T("...//test.html")), &v, &v, &v, &v); // 这里地址省略了,注意要用//
- }
4.在OnOk函数里测试
- LRESULT OnOK(WORD
- {
-
- HRESULT hr;
- CComPtr<IDispatch> spdispDoc;
- hr = m_pWb2->get_Document(&spdispDoc);
- if (FAILED(hr))
- {
- return hr;
- }
- CComQIPtr<IHTMLDocument2> spDoc = spdispDoc;
-
- VARIANT ret;
- ret.vt = VT_EMPTY;
- return WtlCallJavascript(spDoc, CComBSTR("test2()"), &ret);
-
- }
上面需要的函数
- LRESULT WtlCallJavascript(CComQIPtr<IHTMLDocument2> htmlDoc, BSTR strCode, VARIANT *pvarRet)
- {
- HRESULT hr = -1;
- if (!(htmlDoc && strCode))
- {
- return hr;
- }
- IHTMLWindow2 *pHtmlWnd;
- hr = htmlDoc->get_parentWindow(&pHtmlWnd);
- if (SUCCEEDED(hr))
- {
- hr = pHtmlWnd->execScript(strCode, CComBSTR(_T("javascript")), pvarRet);
- }
- return hr;
- }
运行程序后它会打开我们的html网页, 然后按Enter键会弹出hello, world小的提示窗口说明js里的那个函数执行了。
插入WebBrowser控件的方法可以看这里:WTL 通过IWebBrowser2接口使WebBrowser控件在自己的窗口打开网页
WTL IWebBrowser2调用网页中javascript函数
原文:http://www.cnblogs.com/dps001/p/4381531.html