自动登录yahoo邮箱

转载 2012年03月30日 02:30:47

感觉这个很有参考价值。

原文链接:http://blog.csdn.net/suisuibianbian/article/details/550260


在yahooDlg.h中定义变量

 IWebBrowser2 * pBrowser;
 BOOL bReady;       //判断yahoo邮箱页面是否完全打开
 CString m_strURL;
 CString m_strUserName;
 CString m_strPassWord;

在yahooDlg.cpp中

void CYahooDlg::OnOK() 
{
 // TODO: Add extra validation here
 m_strURL = "http://cn.mail.yahoo.com/";  //URL地址
 m_strUserName = "name";      //邮箱用户名
 m_strPassWord = "password";     //用户密码

 VARIANT id, index;

 BSTR bsStatus;
 bReady=0;
 BSTR bsPW = m_strPassWord.AllocSysString();
 BSTR bsUser=m_strUserName.AllocSysString();
 
 CString mStr;
 HRESULT hr;

 hr = CoInitialize(NULL);
 if(!SUCCEEDED(hr))
 {
  return;
 }

 hr = CoCreateInstance (CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, 
  IID_IWebBrowser2, (LPVOID *)&pBrowser); //Create an Instance of web browser
 if(hr!=S_OK)
 {
  char a[1024] = {0};
  DWORD b = GetLastError();
  sprintf(a,"CoCreateInstance fail a=%d hr = 0x%x",b,hr);
  return;
 }
 
 VARIANT_BOOL pBool=true;

 pBrowser->put_Visible( pBool ) ; //Commentout this line if you dont want the browser to be displayed
 COleVariant vaURL(m_strURL) ;
 COleVariant null;

 pBrowser->Navigate2(vaURL,null,null,null,null) ; //Open the URL page

 while(!bReady)  //This while loop maks sure that the page is fully loaded before we go to the next page
 {
  //如果用户手动关闭IE窗口,退出循环
  SHANDLE_PTR hHwnd;
  pBrowser->get_HWND(&hHwnd);
  if (NULL == hHwnd)
  {
   bReady=1;
   return;
  }

  //等待网页完全打开,退出循环
  pBrowser->get_StatusText(&bsStatus);
  mStr=bsStatus;
  if(mStr=="完毕" || mStr=="完成" || mStr=="Done" )
  {
   bReady=1;
  }

  Sleep(200);
 }
 
 IDispatch* pDisp;
 hr=pBrowser->get_Document(&pDisp);//Get the underlying document object of the browser
 
 if (pDisp == NULL )
 {
  CoUninitialize();
  return;
 }
 
 IHTMLDocument2* pHTMLDocument2;
 
 hr = pDisp->QueryInterface( IID_IHTMLDocument2,
  (void**)&pHTMLDocument2 );//Ask for an HTMLDocument2 interface

 if (hr != S_OK)
 {
  CoUninitialize();
  return ;
 }

 IHTMLElementCollection* pColl = NULL;//Enumerate the HTML elements
 
 hr = pHTMLDocument2->get_all( &pColl );
 if (hr != S_OK || pColl == NULL)
 {
  pHTMLDocument2->Release();
  CoUninitialize();
  return;
 }

 LONG celem;
 hr = pColl->get_length( &celem );//Find the count of the elements
 
 if ( hr != S_OK )
 {
  pHTMLDocument2->Release();
  pColl->Release();
  CoUninitialize();
  return;
 }

 for ( int i=0; i< celem; i++ )//Loop through each elment
 {
  IDispatch* pDisp2;
  
  V_VT(&id) = VT_I4;
  V_I4(&id) = i;
  V_VT(&index) = VT_I4;
  V_I4(&index) = 0;
  hr = pColl->item( id,index, &pDisp2 );//Get an element
  
  if ( hr == S_OK )
  {
   IHTMLElement* pElem;

   //Ask for an HTMLElemnt interface
   hr = pDisp2->QueryInterface(IID_IHTMLElement,(void **)&pElem);
   if ( hr == S_OK )
   {
    BSTR bstr;
    
    IHTMLInputTextElement* pUser;//We need to check for input elemnt on login screen
    hr = pDisp2->QueryInterface(IID_IHTMLInputTextElement,(void **)&pUser );
    if ( hr == S_OK )
    {
     pUser->get_name(&bstr);
     mStr=bstr;
     if(mStr=="login")
     {//Is this a User Id frield
      pUser->put_value(bsUser);//Paste the User Id
     }
     else if(mStr=="passwd")
     {//Or, is this a password field
      pUser->put_value(bsPW);// Paste your password into the field                 
     }
     pUser->Release();
     
    }
    else
    {
     IHTMLInputButtonElement* pButton;
     hr = pDisp2->QueryInterface(
      IID_IHTMLInputButtonElement, 
      (void **)&pButton);
     if ( hr == S_OK )
     {
      //pButton->get_type(&bstr);//This will send the all the information in correct format         
      pButton->get_value(&bstr);
      mStr=bstr;
      if (mStr=="登 录")
      {
       pElem->click();

       i=celem;
      }
      pButton->Release();
     }
    }
    pElem->Release();
   }
   pDisp2->Release();
  }
 }

 pColl->Release();

 pHTMLDocument2->Release();//For the next page open a fresh document

 pDisp->Release();

 CoUninitialize();
 return;
 //CDialog::OnOK();
}

相关文章推荐

php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录(摘抄)

//出处:http://topic.csdn.net/u/20101007/23/90d1bd3d-9b28-4710-ae1d-f7e795d094b3.html?14639 1.GMAIL ...

自动化Web邮箱: Gmail、Hotmail和Yahoo Mail

背景 趋势科技的数据安全方案leakproof可以很好的防止企业敏感数据外泄,其中一个功能就是阻止敏感数据通过下面的邮箱发送出去。产品测试中,为了保证功能可靠性,测试工程师需要测试多个版本的邮箱...

(文章)分享功能 & RSS订阅到Google,Yahoo,qq邮箱的接口源码

1、 (文章)分享功能           function request(paras) {  var url=location.href;   ...

仿新浪微博登录的邮箱地址自动补全功能

首先,来看一下登录新浪微博的效果图:  当你开始输入你的电子邮箱前的帐号时,就会出现常用邮箱的列表,并自动补齐。 实现的时候,首先在页面上放一个输入文本框和一个div。将div隐藏:电子邮件: ...

自动登录邮箱AHK脚本

  • 2013-10-14 21:18
  • 1005B
  • 下载

【Watir Webdriver】自动登录QQ邮箱并发送电子邮件

最近重新熟悉Web driver,以前曾经摸索过Selenium,不过这次发现Watir+Webdriver用起来也是蛮就手。以下是一个脚本实现了登陆QQ邮箱,并发送邮件的过程,包括指定收件人、主题、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)