//定义IE程序处理函数指针
typedef  void  (*ProcessWebBrowser)( const IWebBrowser2Ptr pBrowser );
/*
* 枚举当前打开的IE窗口,并输出网页的标题
*/
BOOL  EnumInternetExplorer( ProcessWebBrowser pHander )
{
    Sleep(500);

//IE属于shell的一个应用程序,再次需要枚举ShellWindows集合
    IShellWindowsPtr  spSHWinds;
    if( FAILED( spSHWinds.CreateInstance( __uuidof( ShellWindows ) ) ) )
        return FALSE;

//获取ShellWindows集合的数目
    long nCount=0;
    spSHWinds->get_Count(&nCount);
    for ( long lIndex = 0; lIndex < nCount; lIndex++ )
    {
        //枚举每个项
        IDispatchPtr  spDisp;
        _variant_t  var( lIndex, VT_I4 );
        spSHWinds->Item( var, &spDisp );

if ( spDisp != NULL )
        {
            //Query网页接口
            IWebBrowser2Ptr  spBrowser( spDisp );
            if( ( spBrowser != NULL ) && ( pHander != NULL ) )
            {
                //调用处理函数
                pHander( spBrowser );
            }
        }
    }

return TRUE;
}

//    这里需要事先设置好 LPCTSTR lpszUserNameID, LPCTSTR lpszUser, LPCTSTR lpszPwdID, LPCTSTR lpszPwd, LPCTSTR lpszSubmitID
LPCTSTR lpszUserNameID="loginname";
LPCTSTR lpszUser="87426628123456@sina.com";
LPCTSTR lpszPwdID="password";
LPCTSTR lpszPwd="123456";
LPCTSTR lpszSubmitID="login_submit_btn";
void AutoLogin(const IWebBrowser2Ptr pBrowser)
{
    MSHTML::IHTMLDocument3Ptr ptrDoc3;

IDispatch* pDocDisp;
    HRESULT hResult = pBrowser->get_Document((IDispatch **)&pDocDisp);
    if (FAILED(hResult))
    {
        _TRACE("获取IE里面的文档失败\n");

return;
    }

hResult = pDocDisp->QueryInterface(__uuidof(IHTMLDocument3), (void**)&ptrDoc3);
    if (FAILED(hResult))
    {
        _TRACE("获取IHTMLDocument3    失败\n");

return;
    }
    
    MSHTML::IHTMLDocument2Ptr ptrDoc2 = ptrDoc3;

MSHTML::IHTMLInputElementPtr ptrUserName = NULL;
    MSHTML::IHTMLInputElementPtr ptrPwd = NULL;
    MSHTML::IHTMLElementPtr pstrSubmit = NULL;

try
    {
        //    为什么这里老崩溃呢
        //#pragma implementation_key(9490)
//         inline VARIANT_BOOL MSHTML::DispHTMLSelectElement::GetisTextEdit ( ) {
//             VARIANT_BOOL _result = 0;o
//             _com_dispatch_method(this, 0x8001040a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&_result, NULL);
//             return _result;
//         }
        MSHTML::IHTMLElementPtr elePtr;

elePtr = ptrDoc3->getElementById(lpszUserNameID);
        if (!elePtr.GetInterfacePtr())
        {
            return;
        }
        ptrUserName = (MSHTML::IHTMLInputElementPtr)(elePtr);
    }
    catch(...)
    {

}
    if (ptrUserName==NULL)
    {
        return;
    }

ptrUserName->value = lpszUser;
    ptrUserName->put_value(ptrUserName->value);

ptrPwd = ptrDoc3->getElementById(lpszPwdID);
    if (ptrPwd==NULL)
    {
        return;
    }

ptrPwd->value = lpszPwd;
    ptrPwd->put_value(ptrPwd->value);
    
    CComBSTR bstrMember("toggleLogin");
    DISPID dispid = NULL;

IDispatchPtr ptrDisp = ptrDoc2->Script;
    HRESULT hr=ptrDisp->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
    if (SUCCEEDED(hr))
    {
        DISPPARAMS paraDisp = {0,0,0,0};
        ptrDisp->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &paraDisp, NULL, NULL, NULL);
    }

pstrSubmit = ptrDoc3->getElementById(lpszSubmitID);
    if (pstrSubmit==NULL)
    {
        return;
    }

pstrSubmit->click();
}

枚举所有IE窗口,实现自动登录相关推荐

  1. 让Windows XP系统启动时不输入密码自动登录

    Windows XP每次开机都需要输入密码或者等待点击登陆,确实有些麻烦,特别是对私人电脑而言完全没有必要.中的某些功能却非要我们设置账户的密码(如远程桌面连接),那么还有什么办法能让XP实现自动登录 ...

  2. windows下putty自动登录和窗口显示IP

    一,写一个bat文件,里面内容写上 start D:\soft\putty.exe -pw my$1234 william@119.29.109.244 然后就可以自动登录了.如果有多个窗口的话,标题 ...

  3. c# winform登录窗口按enter自动登录设置

    键盘按enter自动登录设置 1.选择登录窗体属性 2.选择AcceptButton ,把AcceptButton 设置成登录按钮,这样敲打回车就会执行登录按钮.

  4. 求QQ自动登录解决方案

    QQ2010现在不支持命令行登录了,还有如果是模拟鼠标键盘的话,如何确定输入框的位置 先FindWindow找到登陆框,GetWindowRect就可以计算机了顶到有人帮忙解决为止 没人知道吗?现在有 ...

  5. 让Ubuntu自动登录到X

    Windows可以做到自动登录到桌面,Ubuntu可以吗? 印象中Linux是必须登录的,想到每次登录Linux总是要输入一番: login: password: 自己用的电脑不用这么麻烦吧. 其实U ...

  6. 系统自动登录及盘符无法双击打开问题处理

    1.如何让系统自动登录?(windows 2k/xp/2003) 找开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENT ...

  7. Rundll32.exe文件详解(显示我的电脑 取消自动登录)

    winexec(Pchar('StrCommand'),sw_Show);  其中"StrCommand"代表以下命令之一(使用Windows中的运行不要加引号):  " ...

  8. python selenium 自动登录_windows7 python3.63使用selenium+webdriver 实现自动登录使用过程...

    本人用的是python3.63版本 这里会讲到安装时所遇到的问题 这里是根据火狐浏览器来操作的 1.首先安装selenium 在 windows 的 cmd窗口通过pip 没安装pip的小伙伴自行去搜 ...

  9. Tips——RN webview如何实现首次加载自动登录及后续定时登录

    一.首次加载自动登录 1.问题分析 Rn webview有自动登录机制,即如果是需要登录的页面,在首次登录后,二次进入不需登录.但第一次进入页面必须要进行密码输入和登录操作.所以,如果要实现首次自动登 ...

  10. 「实用」微信扫码 - 关注公众号后网站自动登录

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 作者:destiny 链接:htt ...

最新文章

  1. POJ 3177 判决素数个数
  2. 深入研究 System.out.println()
  3. 面试官:能说一说Mysql缓存池吗?
  4. 搜索关键词分析——以个人博客网站为例
  5. 操作系统内存管理_操作系统6内存管理基础
  6. python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...
  7. 【C++】const讲解
  8. 腾讯视频下载安装链接_腾讯视频怎么上传视频
  9. BZOJ2976 : [Poi2002]出圈游戏
  10. java if else程序,java – if then else条件评估
  11. 良好的Makefile实践
  12. html5+上下左右边界顺序,详解canvas绘制多张图的排列顺序问题
  13. inception-v1 自复现 有问题尽管问
  14. 06540计算机网络2018年自考真题,自考06540计算机网络基本原理复习资料六
  15. 为什么独立站卖家都在WhatsApp上进行销售?
  16. 2019年度总结,憧憬2020
  17. 计算机网络的基础知识
  18. QT实现图片的滚轮缩放、框选放大、拖拽移动
  19. re_mysql_20221210
  20. 有了域名,怎么搭建自己的网站?

热门文章

  1. mysql alert on delete cascade_mysql-我的“ ON DELETE CASCADE”不起作用
  2. 数学建模常识及论文写作方法
  3. Linux对文本查找、检索、统计及替换的常用命令
  4. SpringCloud(三)了解了概念,现在来验证一下,玩个小案例
  5. 英雄无敌3pc移植android版,今日手游:全盘移植《魔法门之英雄无敌3》
  6. matlab 直方图
  7. win7工作组计算机无法连接打印机,win7无法访问共享打印机怎么解决
  8. Flink - Watermark
  9. 团队作业第三次——项目原型设计(追光的人)
  10. 使用RestTemplate  对接微信付款码支付接入问题记录