Fill input field in IE


//Fill input field in IE
//If it works, it is written by masterz,otherwise I don't
//know who writes it^_^
///
#import <mshtml.tlb> // Internet Explorer 5
#import <shdocvw.dll>
#include "Shlwapi.h"
#pragma comment(lib,"Shlwapi.lib")
int _tmain(int argc, _TCHAR* argv[])
{
 CoInitialize(NULL);
 SHDocVw::IShellWindowsPtr m_spSHWinds;
 if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
 {
  IDispatchPtr spDisp;
  long nCount = m_spSHWinds->GetCount();
  for (long i = 0; i < nCount; i++)
  {
   _variant_t va(i, VT_I4);
   spDisp = m_spSHWinds->Item(va);
   SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
   if (spBrowser != NULL)
   {
    IDispatchPtr spDisp;
    if(spBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
    {
     MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
     MSHTML::IHTMLElementPtr spHtmlElement;
     if(spHtmlDocument==NULL)
      continue;
     spHtmlDocument->get_body(&spHtmlElement);
     if(spHtmlDocument==NULL)
      continue;
     HRESULT hr;
     MSHTML::IHTMLElementCollection* pColl=NULL;
     hr=spHtmlDocument->get_all(&pColl);
     if(pColl!=NULL&&SUCCEEDED(hr))
     {
      long lcount = 0;
      pColl->get_length(&lcount);
      for(int i=0;i<lcount;i++)
      {
       _variant_t index;
       index.vt=VT_I4;
       index.intVal=i;
       IDispatchPtr disp;
       disp=pColl->item(index,index);
       if(disp==NULL)
        hr=E_FAIL;
       else
       {
        MSHTML::IHTMLInputElementPtr pInput(disp);
        if(pInput)
        {
         BSTR bstrtype;
         pInput->get_type(&bstrtype);
         printf(_bstr_t(bstrtype));
         if(StrCmpW(bstrtype,L"text")==0)
         {
          pInput->put_value(_bstr_t("fill it"));
          printf("fill a field/n");
         }
         SysFreeString(bstrtype);
        }
       }

      }
      pColl->Release();
     }
    }

   }
  }

 }
 else
 {
  printf("Shell Windows interface is not avilable/n");
 }
 CoUninitialize();
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值