zoukankan      html  css  js  c++  java
  • VC 通过IHTMLINTEFACE 接口实现网页执行自定义js代码

      1 VC 通过IHTMLINTEFACE 接口实现网页执行自定义js代码
      2 IHTMLDocument2 *pDoc2
      3 
      4 ......
      5 
      6 IHTMLWindow2 *pWindow;
      7 HRESULT hr=pDoc2->get_parentWindow(&pWindow);
      8 VARIANT ret;
      9 ret.vt=VT_EMPTY;
     10 CComBSTR func="alert(document.cookie)";
     11 CComBSTR lang="JAVAScript";
     12 hr=pWindow->execScript(func,lang,&ret);
     13 
     14  
     15 
     16 //首先只要得到 ihtmldocument2 接口即可
     17 BOOL CIEop::putValue(CString IDorName,CString put_value,DWORD ChoosePtr){
     18  IHTMLElementCollection *pAllElement=NULL;
     19  if (m_pHTMLDocument2==NULL)
     20  {
     21   OutputDebugString(_T("LTDLL putValue Failed m_pHTMLDocument2==null"));
     22   // initcom();
     23   return FALSE;
     24  }
     25  m_pHTMLDocument2->get_all(&pAllElement);
     26  if (pAllElement==NULL)
     27  {
     28   MessageBox(0,_T("putValue pAllElement is NULL "),_T("错误提示"),MB_OK);
     29   return FALSE;
     30  }
     31  CComPtr<IDispatch> pDispIE;
     32  HRESULT hr;
     33  switch (ChoosePtr)
     34  {
     35  case  Choose_IHTMLInputTextElment:{
     36   hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
     37   if (FAILED(hr))
     38   {
     39    MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
     40    return FALSE;
     41   }
     42   CComQIPtr<IHTMLInputTextElement,&IID_IHTMLInputTextElement> pElement;
     43   pElement=pDispIE;
     44   put_value.ReleaseBuffer();
     45   pElement->put_value(put_value.AllocSysString());
     46            }
     47            break;
     48  case Choose_JavaScript:{
     49   hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
     50   if (FAILED(hr))
     51   {
     52    MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
     53    return FALSE;
     54   }
     55   IHTMLWindow2* pIHTMLWindow = NULL;
     56   m_pHTMLDocument2->get_parentWindow(&pIHTMLWindow);
     57   put_value.ReleaseBuffer();
     58   VARIANT        pvarRet;
     59   pIHTMLWindow->execScript(CComBSTR(put_value.AllocSysString()), CComBSTR("JavaScript"), &pvarRet);
     60   pIHTMLWindow->Release(); 
     61          }
     62          break;
     63  case Choose_Click:{
     64   hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
     65   if (FAILED(hr))
     66   {
     67    //MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
     68    return FALSE;
     69   }
     70   CComQIPtr<IHTMLElement,&IID_IHTMLElement> pElement;
     71   if (pDispIE==NULL)
     72   {
     73    return FALSE;
     74   }
     75   pElement=pDispIE;
     76   pElement->click();
     77 //   VARIANT vOnclick;
     78 // 
     79 //     pElement->put_onclick(&vOnclick);
     80        }
     81        break;
     82  case Choose_IHTMLFormElement :
     83   {
     84    hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
     85    if (FAILED(hr))
     86    {
     87     MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
     88     return FALSE;
     89    }
     90    CComQIPtr<IHTMLFormElement,&IID_IHTMLFormElement> pElement1;
     91    pElement1=pDispIE;
     92   // pElement1->put_target(CComBSTR("_blank"));
     93    pElement1->put_target(CComBSTR(_T("_self")));
     94    pElement1->put_action(CComBSTR(_T("action.php")));
     95    pElement1->submit();
     96   }
     97   break;
     98  case CHoose_GetText:
     99   {
    100    hr= pAllElement->item(CComVariant(IDorName.AllocSysString()),CComVariant((long)0),&pDispIE);
    101    if (FAILED(hr))
    102    {
    103     MessageBox(0,_T("putValue pDispIE is NULL put_value="+put_value),_T("错误提示"),MB_OK);
    104     return FALSE;
    105    }
    106 //    CComQIPtr<IHTMLElement,&IID_IHTMLElement> pElement1;
    107 //    pElement1=pDispIE;
    108 //    pElement1->get_innerText(&m_strVerify);
    109 
    110   }
    111   break;
    112  }
    113  return TRUE;
    114 }
  • 相关阅读:
    java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
    多文本框的值得存放和赋值
    多个相同元素的展开和收起
    java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
    上传控件获取的文件路径不对
    C#中的DataSet、string、DataTable 、对象转换成Json
    jquery 操作DOM的基本用法
    JS 实现文件夹目录选择
    vue 调取腾讯webService API遇到跨域使用 jsonp
    nodesass和sassloader版本冲突问题导致sassloader报错
  • 原文地址:https://www.cnblogs.com/FCoding/p/2552442.html
Copyright © 2011-2022 走看看