• WebBrowser keystroke


    问题描述:将对话框中的回车消息传递到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);
  • 相关阅读:
    CMDB
    Linux文档编辑
    Linux文件管理
    Scrapy框架全
    爬虫基础
    C#中的泛型-1
    网络协议
    PDF抽取文字 C# with Adobe API
    PDF转图片 C# with Adobe API
    浅谈Exchange 2013开发-如何操作邮件的附件
  • 原文地址:https://www.cnblogs.com/tangshiguang/p/6735769.html
Copyright © 2020-2023  润新知