首页 > Web开发 > 详细

WebBrowser keystroke

时间:2015-12-10 21:29:13      阅读:248      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!