(BCB) CComPtr<IHTMLDocument2> FIEDoc;

如何访问CppWebBrowser加载页面中IHTMLElement 对象的值 文档中详细描述了 对CppWebBrowser加载页面中用户输入内容 的访问,C++Builder下通过。 立即下载

一个调用当前IE页面元素的类库(BCB)

代码:
//---------------------------------------------------------------------------
// 作者:雨中漫步
// 写于:2004-12-26, 19:07:56
// 网址:http://www.wzszf.com/
//---------------------------------------------------------------------------
#ifndef IEInvokeH
#define IEInvokeH
#include <vcl.h>
#include <utilcls.h>
#include <atl/atlbase.h>
#include <oleacc.h>
#include <mshtml.h>
#include <comdef.h>
#pragma hdrstop
#define CLASS_SIZE   500

//---------------------------------------------------------------------------
class TIEInvoke :
public TObject
{
private:
CComPtr<IHTMLDocument2> FIEDoc;
HANDLE       FIEHandle;
void __fastcall SetIEDoc(CComPtr<IHTMLDocument2> value);
CComPtr < IHTMLDocument2 > __fastcall GetIEDoc(void);
String __fastcall GetSystemErrorMessage(DWORD dwError);
void __fastcall   SetIEHandle(HANDLE value);
HANDLE __fastcall GetIEHandle(void);
protected:
public:
__fastcall   TIEInvoke(void);
__property CComPtr<IHTMLDocument2>   IEDoc = { read = GetIEDoc, write = SetIEDoc };
__property HANDLE IEHandle = { read = GetIEHandle, write = SetIEHandle };
CComPtr < IHTMLDocument2 > __fastcall FindIE(void);
bool __fastcall CallJs(String jsName, TStringList *args, CComVariant *pVarResult);
bool __fastcall SetTextInput(String textInputName, String &textInputValue);
bool __fastcall SetTextAreaInput(String textAreaInputName, String &textAreaInputValue);
bool __fastcall SetDropDownSelect(String dropDownName, String dropDownValue);
bool __fastcall GetTextInput(String textInputName, String &textInputValue);
bool __fastcall GetDropDownSelect(String dropDownName, String &dropDownValue);
bool __fastcall GetTextAreaInput(String textAreaInputName, String &textAreaInputValue);
};

/* */
BOOL CALLBACK FindIEInst(HWND hwnd, LPARAM lParam)
{
char   wndowclass[CLASS_SIZE];

if(GetClassName(hwnd, wndowclass, CLASS_SIZE) == 0)
{
  return TRUE;
}

String   strTemp(wndowclass);
if(strTemp == String("Internet Explorer_Server"))
{
  CoInitialize(NULL);

  HINSTANCE hInst = ::LoadLibrary(_T("OLEACC.DLL"));
  String   strTemp;
  CComPtr<IHTMLDocument2> spDoc;
  LRESULT lRes;

  strTemp = "";

  UINT   nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
  ::SendMessageTimeout(hwnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD *) &lRes);

  LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, _T("ObjectFromLresult"));
  if(pfObjectFromLresult != NULL)
  {
    HRESULT hr;
    hr = (*pfObjectFromLresult) (lRes, IID_IHTMLDocument2, 0, (void **) &spDoc);
    if(SUCCEEDED(hr))
    {
    TIEInvoke *ie = (TIEInvoke *) lParam;
    if(ie != NULL)
    {
      ie->IEDoc = spDoc;
      ie->IEHandle = hwnd;
    }

    ::FreeLibrary(hInst);
    CoUninitialize();
    return FALSE;
    }
  }

  ::FreeLibrary(hInst);
  CoUninitialize();
}

return TRUE;
}

//---------------------------------------------------------------------------
#endif


代码:
//---------------------------------------------------------------------------
// 作者:雨中漫步
// 写于:2004-12-26, 19:07:56
// 网址:http://www.chinabcb.com
//---------------------------------------------------------------------------
#include "IEInvoke.h"

/* */

__fastcall TIEInvoke::TIEInvoke(void)
{
FIEDoc = NULL;
FIEHandle = NULL;
}

/* */
bool __fastcall TIEInvoke::SetTextInput(String textInputName, String &textInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
  LONG   length = 0;
  hr = pAllColl->get_length(&length);
  if(hr == S_OK)
  {
    for(int i = 0; i < length; i++)
    {
    VARIANT varIndex;
    varIndex.vt = VT_UINT;
    varIndex.lVal = i;

    VARIANT var2;
    VariantInit(&var2);

    IDispatch *pDisp;
    hr = pAllColl->item(varIndex, var2, &pDisp);   //Get an element
    if(hr == S_OK)
    {
      IHTMLElement   *pElem;
      hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
      if(hr == S_OK)
      {
        BSTR   bstr;

        hr = pElem->get_tagName(&bstr);

        String   strTag;
        strTag = bstr;

        String   mStr = "";
        IHTMLInputTextElement *pUser;
        hr = pDisp->QueryInterface(IID_IHTMLInputTextElement, (void **) &pUser);
        if(hr == S_OK)
        {
        pUser->get_name(&bstr);
        mStr = bstr;
        if(mStr == textInputName)
        {
          pUser->put_value(WideString(textInputValue));

          pUser->Release();
          pElem->Release();
          pDisp->Release();

          return true;
        }

        pUser->Release();
        }

        pElem->Release();
      }

      pDisp->Release();
    }
    }
  }
}

return false;
}

/* */
bool __fastcall TIEInvoke::SetTextAreaInput(String textAreaInputName, String &textAreaInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
  LONG   length = 0;
  hr = pAllColl->get_length(&length);
  if(hr == S_OK)
  {
    for(int i = 0; i < length; i++)
    {
    VARIANT varIndex;
    varIndex.vt = VT_UINT;
    varIndex.lVal = i;

    VARIANT var2;
    VariantInit(&var2);

    IDispatch *pDisp;
    hr = pAllColl->item(varIndex, var2, &pDisp);   //Get an element
    if(hr == S_OK)
    {
      IHTMLElement   *pElem;
      hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
      if(hr == S_OK)
      {
        BSTR   bstr;

        hr = pElem->get_tagName(&bstr);

        String   strTag;
        strTag = bstr;

        String   mStr = "";
        IHTMLTextAreaElement   *pUser;
        hr = pDisp->QueryInterface(IID_IHTMLTextAreaElement, (void **) &pUser);
        if(hr == S_OK)
        {
        pUser->get_name(&bstr);
        mStr = bstr;
        if(mStr == textAreaInputName)
        {
          pUser->put_value(WideString(textAreaInputValue));

          pUser->Release();
          pElem->Release();
          pDisp->Release();

          return true;
        }

        pUser->Release();
        }

        pElem->Release();
      }

      pDisp->Release();
    }
    }
  }
}

return false;
}

/* */
bool __fastcall TIEInvoke::CallJs(String jsName, TStringList *args, CComVariant *pVarResult)
{
CComPtr<IDispatch>   spScript;
HRESULT hr = FIEDoc->get_Script(&spScript);
ATLASSERT(SUCCEEDED(hr));
if(!SUCCEEDED(hr))
{
  return false;
}

BSTR   bstrMember = WideString(jsName);
DISPID   dispid = NULL;
hr = spScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
if(FAILED(hr))
{
  return false;
}

const int   arraySize = args->Count;

DISPPARAMS   dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = arraySize;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];

for(int i = 0; i < arraySize; i++)
{
  CComBSTR   bstr = WideString(args->Strings[arraySize - 1 - i]).Copy(); // back reading
  bstr.CopyTo(&dispparams.rgvarg.bstrVal);
  dispparams.rgvarg.vt = VT_BSTR;
}

dispparams.cNamedArgs = 0;

EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);

CComVariant vaResult;
UINT       nArgErr = (UINT) - 1; // initialize to invalid arg
hr = spScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &excepInfo, &nArgErr);

delete[] dispparams.rgvarg;
if(FAILED(hr))
{
#ifdef _DEBUG
  ShowMessage(GetSystemErrorMessage(hr));
#endif
  return false;
}

if(pVarResult)
{
  *pVarResult = vaResult;
}

return true;
}

/* */
CComPtr<IHTMLDocument2> __fastcall TIEInvoke::FindIE(void)
{
HANDLE   HWND = FindWindow("IEFrame", NULL);
if(HWND == NULL)
{
  return NULL;
}

EnumChildWindows(HWND, (WNDENUMPROC) FindIEInst, (LPARAM) this);
return FIEDoc;
}

/* */
bool __fastcall TIEInvoke::GetTextInput(String textInputName, String &textInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
  LONG   length = 0;
  hr = pAllColl->get_length(&length);
  if(hr == S_OK)
  {
    for(int i = 0; i < length; i++)
    {
    VARIANT varIndex;
    varIndex.vt = VT_UINT;
    varIndex.lVal = i;

    VARIANT var2;
    VariantInit(&var2);

    IDispatch *pDisp;
    hr = pAllColl->item(varIndex, var2, &pDisp);   //Get an element
    if(hr == S_OK)
    {
      IHTMLElement   *pElem;
      hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
      if(hr == S_OK)
      {
        BSTR   bstr;

        hr = pElem->get_tagName(&bstr);

        String   strTag;
        strTag = bstr;

        String   mStr = "";
        IHTMLInputTextElement *pUser;
        hr = pDisp->QueryInterface(IID_IHTMLInputTextElement, (void **) &pUser);
        if(hr == S_OK)
        {
        pUser->get_name(&bstr);
        mStr = bstr;
        if(mStr == textInputName)
        {
          WideString   inputValue = "";
          pUser->get_value(&inputValue);
          textInputValue = inputValue;
          pUser->Release();
          pElem->Release();
          pDisp->Release();

          return true;
        }

        pUser->Release();
        }

        pElem->Release();
      }

      pDisp->Release();
    }
    }
  }
}

return false;
}

/* */
bool __fastcall TIEInvoke::SetDropDownSelect(String dropDownName, String dropDownValue)
{
return false;
}

/* */
bool __fastcall TIEInvoke::GetDropDownSelect(String dropDownName, String &dropDownValue)
{
return false;
}

/* */
bool __fastcall TIEInvoke::GetTextAreaInput(String textAreaInputName, String &textAreaInputValue)
{
CComPtr<IHTMLElementCollection> pAllColl;
HRESULT hr;
hr = FIEDoc->get_all((IHTMLElementCollection **) &pAllColl);
if(hr == S_OK)
{
  LONG   length = 0;
  hr = pAllColl->get_length(&length);
  if(hr == S_OK)
  {
    for(int i = 0; i < length; i++)
    {
    VARIANT varIndex;
    varIndex.vt = VT_UINT;
    varIndex.lVal = i;

    VARIANT var2;
    VariantInit(&var2);

    IDispatch *pDisp;
    hr = pAllColl->item(varIndex, var2, &pDisp);   //Get an element
    if(hr == S_OK)
    {
      IHTMLElement   *pElem;
      hr = pDisp->QueryInterface(IID_IHTMLElement, (void **) &pElem);
      if(hr == S_OK)
      {
        BSTR   bstr;

        hr = pElem->get_tagName(&bstr);

        String   strTag;
        strTag = bstr;

        String   mStr = "";
        IHTMLTextAreaElement   *pUser;
        hr = pDisp->QueryInterface(IID_IHTMLTextAreaElement, (void **) &pUser);
        if(hr == S_OK)
        {
        pUser->get_name(&bstr);
        mStr = bstr;
        if(mStr == textAreaInputName)
        {
          WideString   inputValue = "";
          pUser->get_value(&inputValue);
          textAreaInputValue = inputValue;

          pUser->Release();
          pElem->Release();
          pDisp->Release();

          return true;
        }

        pUser->Release();
        }

        pElem->Release();
      }

      pDisp->Release();
    }
    }
  }
}

return false;
}

/* */
void __fastcall TIEInvoke::SetIEDoc(CComPtr<IHTMLDocument2> value)
{
FIEDoc = value;
}

/* */
CComPtr<IHTMLDocument2> __fastcall TIEInvoke::GetIEDoc(void)
{
return FIEDoc;
}

/* */
String __fastcall TIEInvoke::GetSystemErrorMessage(DWORD dwError)
{
String   strError;
LPTSTR   lpBuffer;

if
(
  !FormatMessage
    (
    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,
    dwError,
    MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
    (LPTSTR) & lpBuffer,
    0,
    NULL
    )
)
{
  strError = "FormatMessage Netive Error";
}
else
{
  strError = lpBuffer;
  LocalFree(lpBuffer);
}

return strError;
}

/* */
void __fastcall TIEInvoke::SetIEHandle(HANDLE value)
{
FIEHandle = value;
}

/* */
HANDLE __fastcall TIEInvoke::GetIEHandle(void)
{
return FIEHandle;
}

 

使用例子:
代码:
TIEInvoke *ie = new TIEInvoke();
CComPtr<IHTMLDocument2> IEDoc = ie->FindIE();
String     subject = "邮件主题";

//ie->SetTextInput("TextBoxSubject", subject);
//ie->GetTextInput("TextBoxFromEmail", subject);
//ie->SetTextAreaInput("TextBoxDescription",subject);
//ie->GetTextAreaInput("TextBoxDescription",subject);
TStringList *args = new TStringList();
args->Add("2");
args->Add("3");

CComVariant *pVarResult = new CComVariant();
ie->CallJs("add", args, pVarResult);

int result = pVarResult->intVal;
delete pVarResult;
pVarResult = NULL;
delete args;
args = NULL;
delete ie;
ie = NULL;
ShowMessage(result);

c++builder 2010 atl库 头文件和lib c++builder 2010 后 atl库都不带,只用使用本资源才能使用 ATL库 使用COM或 CComPtr 必备头文件和lib 立即下载

相关推荐

RK-XCKU5P RoCEv2 传感器桥工程分析报告

烧入后这块 FPGA 就是一个固定身份(CA:FE:C0:FF:EE:00 / 192.168.0.2 / 无 FEC 100G)的RoCEv2 UC 端点,每秒在 UDP 12267 广播自报家门;对端 CX5 只要关 FEC、配 192.168.0.101 +MTU 4200,就能 ping 通它、用 UDP 8192 读写它的全部寄存器、再按"ECB 旁路交换 QPN/rkey"的方式建立 UC RDMA 通道收发数据。

eloudy的专栏 248

IHTMLDocument2接口访问Dom,完成自动搜索

首先感叹下:冬至了,别人都去聚餐言欢,我去孤独写这些文字 之所以写这个东西,是一个网管朋友出50元大洋让我写的,有了这个东东,在网吧可以很轻松的做网吧增值广告了.当时是星期天,想着又没有事做,就答应了,虽知星期天的事情还真多,知道昨天晚上才搞定. 我们来看下这位朋友的要求: 1、网站址:http://www.v232.com/?username,后面的username最好能在配置...

weixin_30852419的博客 333

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1922

从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)

 从 IHTMLDocument2 获得/写入 HTML 文本 (IPersistStreamInit)void CUxHtmlViewerView::SetScript(LPCTSTR lpszTxt){    Navigate(_T("about:blank"),NULL,NULL,NULL,NULL);     HRESULT hr = E_NOINTERFACE;    CComPtr

Redeom的专栏 5327

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

Altium Concord Pro 的应用范围,安装,和使用范围

Altium Concord Pro 的应用范围,安装,和使用范围。保证满足两者软件的最低安装要求。 Altium Concord Pro 是配合Digapcb,和MCAD,Altium 和相应机械设计软件的基础和交换桥梁

hanzhaos的博客 1122

vc操作html的几类处理

html的结构形式  姓名 对于类似上面结构的几类处理方法: 1. 清空html. BOOL ClearHtml() //清空html里面的内容 {  CComPtr pDoc( NULL ); if( !SUCCEEDED( G

sunliangyuan的专栏 3014

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 144

IE 解析 Web Page DOM结构 (一)

IE 浏览器利用DOM结构管理和运用网页的数据的。IE 浏览器通过一个容器IWebBrowser2/IHTMLWindow2来下载一个网页,而众所周知网页是由互相嵌套的许多frames构成的,网页中每一个frame都是IHTMLWindows2。所以,我们的首要任务就是取得IHTMLDocument2接口,此接口代表着你所下载的网页。然后,就可以用递归探索每一个frame和frame中的内容。

LEE的专栏 2098

从重复劳动到智能闭环:OpenClaw实战搭建小红书&公众号全自动化运营体系

如果你有一定的代码开发能力,还可以为OpenClaw开发自定义插件,拓展更多的功能,比如对接更多的平台,实现图文+短视频的全平台自动化运营;对接视频剪辑工具,实现短视频脚本生成、剪辑、配音、发布的全流程自动化;对接私域运营工具,实现公域引流、私域承接、用户转化的全链路自动化;对接电商平台,实现内容种草、商品上架、订单管理的全流程自动化,打造完整的内容电商闭环。新媒体运营的本质,是内容价值的传递,而不是机械的重复劳动。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 311

巡检机器人的基于ROS系统的任务管理架构设计总结

本文探讨了基于ROS(机器人操作系统)的工业巡检机器人任务管理架构设计,提出分层闭环方案。架构围绕稳、准、活、扩四大目标,分为感知层(多源数据融合)、调度层(智能决策)、执行层(动作控制)和数据层(存储交互)。关键技术包括ROS2实时性优化、功能包复用和多机器人协同调度。实践案例显示,该架构在电力巡检中使任务完成率达99%,在化工园区实现95%覆盖率。当前挑战包括SLAM地图漂移和多机通信延迟,未来可通过语义SLAM和区域通信优化。

start_up_go的博客 486

IE WebBrowser 深度复制拷贝/三种遍历IFRAME方式

使用方式: if (m_pBrowserApp != NULL)  {   HRESULT hr;   LPDISPATCH lpDisp = GetHtmlDocument();   if (lpDisp != NULL)   {    CComPtr spDocument;    hr = lpDisp->QueryInterface(IID_IHTMLDocument2, (

章志强的专栏 2823

【Burp入门第二十二篇】BurpSuite配置Hea插件教程+添加配置项

HaE是一个基于BurpSuite Java插件API开发的辅助型框架式插件,旨在实现对HTTP消息的高亮标记和信息提取。该插件通过自定义正则表达式匹配响应报文或请求报文,并对匹配成功的报文进行标记和提取。

等风来 9633

WebBrowser或CHtmlView中屏蔽脚本错误

WebBrowser或CHtmlView中屏蔽脚本错误<br /><br /><br /><br />━━━━━━━━━━━━━━━━━━━━━━━━<br /><br />一、我现在的方法是在void CMyHtmlView::OnInitialUpdate()中添加SetSilent(true);<br />    并且要设置IE的高级选项,方法如下:<br />    禁用脚本调试<br />    如果错误消息是问题的唯一症状,并且网站正在运行,则可以忽略此错误。另外,<br />    如果此问题

jacky_qiu的专栏 8009

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

根据Internet Explorer_Server窗口得到IHtmlDocument2接口

#include <mshtml.h>  #include <atlbase.h>  #include <oleacc.h>  BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)  {  TCHAR buf[100];  ::GetClassName( hwnd, (LPTSTR)&am...

weixin_34408624的博客 443

获取ie窗口的IHTMLDocument2对象

获取IHTMLDocument2

懒雄熊的专栏 2175

VC Webbrowser操作全解(二)

接上一篇文章内容,本篇文章将讲解如何使用Webbrowser 操作HTML页面 二、对HTML页面元素的操作 (1)Input 值设置 xny::Integer SetInputText(LPCTSTR lpInputName, LPCTSTR lpText, LPCTSTR lpParentName, LPCTSTR lpPopFrameName) { xny::Integer nRet = nsny::eProbeErr::NYERR_FAIL; do { if ...

huangxvhui88的专栏 717

WebBrowser之获取跳转页面的Document接口源码

////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 备注:本篇文章来自 vc驿站:http://www.cctry.com/thread-254314-1-1.html // C、C++、VC++ 各种学习资源,免费教程

Lx_XlyS的专栏 1677

关于 IHTMLDocument2

原本是想获取INTERNET EXPLORER_SERVER里面的文本,用了下面这个函数,获取接口正常,但一使用接口就出错。后来我直接尝试获取接口的原函数,还是不行,执行到spDoc-&gt;put_bgColor( CComVariant("red") );这一行就死掉了,麻烦高手帮我看一下,下面是我在MSDN上面找到的代码,一起贴上来,还有说一下我用的是WIN7+VS2008,IE的窗口句柄是...

weixin_34362875的博客 365

IHTMLDocument2接口的简单操作

这几天写的程序中要用到这方面的东西,写了个很简单的例子.//必须包含的头文件#include #include "atlconv.h"#include "Mshtml.h"/********************************************************************** 函数名称:int CErrKbaseDHtmlView::MM_FAULTKBASE

Socrates的专栏 7252

获得Frame或IFrame中的IHTMLDocumnet2接口

IHTMLDocument2* GetDocFromFrame(IHTMLDocument2* pDoc2){  CComPtr pDoc3;  CComPtr pDoc2Frame;  hr = pDoc2->QueryInterface(IID_IHTMLDocument3,(void**)&pDoc3) ;  if(hr==S_OK)  {    CComBSTR bstrName("F

凤之焚的专栏 5126

如何得到网页中所有内嵌框架的IHTMLDocument2接口

如何得到网页中所有内嵌框架的IHTMLDocument2接口 IHTMLDocument2有个方法:HRESULT get_frames(IHTMLFramesCollection2 **p)原来我以为通过该方法可以得到网页内嵌框架的IHTMLDocument2接口,但试过不行!后来找到一种方法,即通过IOleContainer接口的EnumObjects方法。代码如下:  void EnumFr

lbird 5812

IHTMLDocument2 IE浏览器编程

执行script: IHTMLDocument2 *pHTMLDocument=NULL;  if (!(pHTMLDocument = (IHTMLDocument2*)m_Ie.get_Document()))   //获取 IHTMLDocument2 的接口指针     return; CString sScript = L"window.open(\'http

chaoguodong的专栏 4580
上一篇: 得到IOleInPlaceActiveObject接口,IOleInPlaceActiveObject::TranslateAccelerator(&msg);
下一篇: 获取IE (控件)的所有链接(包括Frameset, iframe)zz
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值