枚举所有IE窗口,实现自动登录
//定义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, ¶Disp, NULL, NULL, NULL);
}
pstrSubmit = ptrDoc3->getElementById(lpszSubmitID);
if (pstrSubmit==NULL)
{
return;
}
pstrSubmit->click();
}
枚举所有IE窗口,实现自动登录相关推荐
- 让Windows XP系统启动时不输入密码自动登录
Windows XP每次开机都需要输入密码或者等待点击登陆,确实有些麻烦,特别是对私人电脑而言完全没有必要.中的某些功能却非要我们设置账户的密码(如远程桌面连接),那么还有什么办法能让XP实现自动登录 ...
- windows下putty自动登录和窗口显示IP
一,写一个bat文件,里面内容写上 start D:\soft\putty.exe -pw my$1234 william@119.29.109.244 然后就可以自动登录了.如果有多个窗口的话,标题 ...
- c# winform登录窗口按enter自动登录设置
键盘按enter自动登录设置 1.选择登录窗体属性 2.选择AcceptButton ,把AcceptButton 设置成登录按钮,这样敲打回车就会执行登录按钮.
- 求QQ自动登录解决方案
QQ2010现在不支持命令行登录了,还有如果是模拟鼠标键盘的话,如何确定输入框的位置 先FindWindow找到登陆框,GetWindowRect就可以计算机了顶到有人帮忙解决为止 没人知道吗?现在有 ...
- 让Ubuntu自动登录到X
Windows可以做到自动登录到桌面,Ubuntu可以吗? 印象中Linux是必须登录的,想到每次登录Linux总是要输入一番: login: password: 自己用的电脑不用这么麻烦吧. 其实U ...
- 系统自动登录及盘符无法双击打开问题处理
1.如何让系统自动登录?(windows 2k/xp/2003) 找开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENT ...
- Rundll32.exe文件详解(显示我的电脑 取消自动登录)
winexec(Pchar('StrCommand'),sw_Show); 其中"StrCommand"代表以下命令之一(使用Windows中的运行不要加引号): " ...
- python selenium 自动登录_windows7 python3.63使用selenium+webdriver 实现自动登录使用过程...
本人用的是python3.63版本 这里会讲到安装时所遇到的问题 这里是根据火狐浏览器来操作的 1.首先安装selenium 在 windows 的 cmd窗口通过pip 没安装pip的小伙伴自行去搜 ...
- Tips——RN webview如何实现首次加载自动登录及后续定时登录
一.首次加载自动登录 1.问题分析 Rn webview有自动登录机制,即如果是需要登录的页面,在首次登录后,二次进入不需登录.但第一次进入页面必须要进行密码输入和登录操作.所以,如果要实现首次自动登 ...
- 「实用」微信扫码 - 关注公众号后网站自动登录
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 作者:destiny 链接:htt ...
最新文章
- POJ 3177 判决素数个数
- 深入研究 System.out.println()
- 面试官:能说一说Mysql缓存池吗?
- 搜索关键词分析——以个人博客网站为例
- 操作系统内存管理_操作系统6内存管理基础
- python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...
- 【C++】const讲解
- 腾讯视频下载安装链接_腾讯视频怎么上传视频
- BZOJ2976 : [Poi2002]出圈游戏
- java if else程序,java – if then else条件评估
- 良好的Makefile实践
- html5+上下左右边界顺序,详解canvas绘制多张图的排列顺序问题
- inception-v1 自复现 有问题尽管问
- 06540计算机网络2018年自考真题,自考06540计算机网络基本原理复习资料六
- 为什么独立站卖家都在WhatsApp上进行销售?
- 2019年度总结,憧憬2020
- 计算机网络的基础知识
- QT实现图片的滚轮缩放、框选放大、拖拽移动
- re_mysql_20221210
- 有了域名,怎么搭建自己的网站?
热门文章
- mysql alert on delete cascade_mysql-我的“ ON DELETE CASCADE”不起作用
- 数学建模常识及论文写作方法
- Linux对文本查找、检索、统计及替换的常用命令
- SpringCloud(三)了解了概念,现在来验证一下,玩个小案例
- 英雄无敌3pc移植android版,今日手游:全盘移植《魔法门之英雄无敌3》
- matlab 直方图
- win7工作组计算机无法连接打印机,win7无法访问共享打印机怎么解决
- Flink - Watermark
- 团队作业第三次——项目原型设计(追光的人)
- 使用RestTemplate 对接微信付款码支付接入问题记录