码迷,mamicode.com
首页 > Web开发 > 详细

WebBrowser keystroke

时间:2015-12-10 21:30:32      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:将对话框中的回车消息传递到WebBrowser控件中去。

一开始的解决方案是:通过iwebbrowser2的成员函数get_HWND获取控件的句柄,然后通过SendMessage发送按键消息。但是这个方法在第一步就出现了问题,get_HWND返回的是E_FAIL。对于这个问题,找了一圈没有结果,但是偶然间遇到了启发--可以使用Windows的API实现相应的功能,如此就不用去传递消息了。

解决方法:使用IHTMLDocument的成员函数获取到页面按钮元素,然后模拟点击操作

do // 本代码以www.baidu.com为测试
{
	// 获取
	IWebBrowser2 * m_spWebBrowser2 = CComPtr<IWebBrowser2>( m_pWebShow->GetWebBrowser2()) ;

	if (!m_spWebBrowser2)
	{
		break;
	}
	CComPtr<IDispatch> m_spDispatch;
	m_spWebBrowser2->get_Document( &m_spDispatch );
	if ( !m_spDispatch )
	{
		break;
	}

	CComQIPtr<IHTMLDocument3, &IID_IHTMLDocument3> pHtmlDoc3( m_spDispatch );
	CComPtr<IHTMLElement> m_spElem;

	HRESULT hr = pHtmlDoc3->getElementById(CComBSTR(_T("su")), &m_spElem);// 此处修改submit按钮ID
	if(FAILED(hr) || !m_spElem)
	{
		break;
	}
	m_spElem->click();
} while (FALSE);

  

WebBrowser keystroke

标签:

原文地址:http://www.cnblogs.com/shaellancelot/p/5036988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!