• 大小: 91KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: C/C++
  • 标签:

资源简介

这是一个c++内web实现模拟登陆,还有获取web事件,以及c++与js的交互。 http://blog.csdn.net/nanjun520/article/details/53024503

资源截图

代码片段和文件信息

#include “WebAutoLogin.h“
#pragma comment(lib“atl“)
#pragma comment(lib“User32.lib“)

WebAutoLogin::WebAutoLogin(HWND hwndRECT webRc)
{
LPOLESTR pszName=OLESTR(“shell.Explorer.2“);
m_WinContainer.Create(hwnd webRc 0WS_CHILD |WS_VISIBLE);
m_WinContainer.CreateControl(pszName);
HRESULT hr = m_WinContainer.QueryControl(__uuidof(IWebBrowser2)(void**)&m_iWebBrowser); 
if(FAILED(hr))
{
MessageBox(hwnd_T(“获取IWebBrowser2 对象失败!!!“)_T(“错误“)MB_OK|MB_IConerror);
m_iWebBrowser = NULL;
}
}

WebAutoLogin::~WebAutoLogin(void)
{
if (NULL != m_iWebBrowser)
{
m_iWebBrowser->Release();
}
}

READYSTATE WebAutoLogin::ReadyState()
{
READYSTATE r = READYSTATE_UNINITIALIZED;
HRESULT hr = m_iWebBrowser->get_ReadyState(&r);
//printf(“get_ReadyState = %d“r);
if (SUCCEEDED(hr) && r == READYSTATE_COMPLETE) 
{

}
return r;
}

bool WebAutoLogin::AutoLogin(HWND hwndstd::wstring userNamestd::wstring password)
{
bool isLogin = false;
HRESULT hr = S_OK;
IHTMLElement *user_nameElet= GetHTMLElementByIdOrName(L“username“);
if (user_nameElet!=0)
{
//转换成CComBSTR      
CComBSTR bStr =userName.c_str();     
//输入内容     
hr = user_nameElet->put_innerText(bStr);
user_nameElet->Release();
}
else
{
MessageBox(hwnd_T(“获取:用户名HTMLElement 失败!“)_T(“错误“)MB_OK|MB_IConerror );
}

IHTMLElement *passwdElet= GetHTMLElementByIdOrName(L“password“);
if (passwdElet!=0)
{
//转换成CComBSTR      
CComBSTR bStr = password.c_str();     
//输入内容     
hr = passwdElet->put_innerText(bStr);
passwdElet->Release();
}
else
{
MessageBox(hwnd_T(“获取:密码HTMLElement 失败!“)_T(“错误“)MB_OK|MB_IConerror );
}

IHTMLElement *loginSubElet = GetHTMLElementByTag(L“input“L“value“L“登 录“);
if (loginSubElet!=0)
{
loginSubElet->click();
loginSubElet->Release();
isLogin = true;
}
else
{
MessageBox(hwnd_T(“获取:登陆HTMLElement 失败!“)_T(“错误“)MB_OK|MB_IConerror );
}
return isLogin;
}

bool WebAutoLogin::LoginResult()
{
bool isLogin = false;
IDispatch *dispatch=0; 
HRESULT hr = m_iWebBrowser->get_Document(&dispatch); 
if ((S_OK==hr)&&(dispatch!=0))
{
IHTMLDocument2 *doc;  
hr = dispatch->QueryInterface(IID_IHTMLDocument2(void**)&doc);
dispatch->Release(); 
if ( S_OK == hr )
{
//登陆成功的 判断方式可以用不同的 方法
BSTR bstrCookie;
hr = doc->get_cookie(&bstrCookie);
if (S_OK == hr)
{
_bstr_t bstr_t(bstrCookie);

std::string strCookie(bstr_t);

::SysFreeString(bstrCookie);
}
BSTR bstrReferrer;
hr = doc->get_referrer(&bstrReferrer);
if (S_OK == hr)
{
if(NULL != bstrReferrer)
{
_bstr_t bstr_t0(bstrReferrer);

std::string strReferrer(bstr_t0);

::SysFreeString(bstrReferrer);
}
}
BSTR bstrUrl;
hr = doc->get_URL(&bstrUrl);
if (S_OK == hr)
{
if(NULL != bstrUrl)
{
_bstr_t bstr_t(bstrUrl);

std::string strUrl(bstr_t);
if (0 == strcmp(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-11-02 22:21  WebAutoLogin\
     文件         731  2016-11-01 16:57  WebAutoLogin\resource.h
     文件       33976  2016-11-01 17:32  WebAutoLogin\WebAutoLogin.aps
     文件        7736  2016-11-01 15:38  WebAutoLogin\WebAutoLogin.cpp
     文件         810  2016-11-01 15:37  WebAutoLogin\WebAutoLogin.h
     文件        2583  2016-11-01 17:32  WebAutoLogin\WebAutoLogin.rc
     文件        4192  2016-11-01 16:58  WebAutoLogin\WebAutoLogin.vcproj
     文件        1423  2016-11-02 18:04  WebAutoLogin\WebAutoLogin.vcproj.20150707-1509.Administrator.user
     文件        1425  2016-11-02 22:21  WebAutoLogin\WebAutoLogin.vcproj.PC201312221637.Administrator.user
     文件        4855  2016-11-05 21:54  WebAutoLogin\WinMain.cpp
     目录           0  2016-11-05 21:54  WebEventsMonitor\
     文件        5742  2011-05-05 07:24  WebEventsMonitor\Demo.cpp
     文件       99501  2011-05-05 07:24  WebEventsMonitor\FastDelegate.h
     文件        8686  2011-05-05 07:24  WebEventsMonitor\FastDelegateBind.h
     文件         324  2016-11-01 17:22  WebEventsMonitor\GlobalUnit.cpp
     文件         144  2016-11-01 17:19  WebEventsMonitor\GlobalUnit.h
     文件         781  2016-11-02 16:40  WebEventsMonitor\resource.h
     文件        4166  2016-11-02 18:02  WebEventsMonitor\TDocHostUIHandlerImpl.cpp
     文件        2578  2016-11-02 17:56  WebEventsMonitor\TDocHostUIHandlerImpl.h
     文件        5901  2016-11-01 17:51  WebEventsMonitor\WebEventSink.cpp
     文件        2279  2016-11-01 17:29  WebEventsMonitor\WebEventSink.h
     文件       33952  2016-11-02 16:40  WebEventsMonitor\WebEventsMonitor.aps
     文件        2516  2016-11-02 16:40  WebEventsMonitor\WebEventsMonitor.rc
     文件        4752  2016-11-02 18:04  WebEventsMonitor\WebEventsMonitor.vcproj
     文件        1423  2016-11-02 18:04  WebEventsMonitor\WebEventsMonitor.vcproj.20150707-1509.Administrator.user
     文件        1425  2016-11-02 22:21  WebEventsMonitor\WebEventsMonitor.vcproj.PC201312221637.Administrator.user
     文件       12450  2016-11-02 17:52  WebEventsMonitor\WebMonitor.cpp
     文件        1570  2016-11-02 17:49  WebEventsMonitor\WebMonitor.h
     文件        2851  2016-11-02 18:03  WebEventsMonitor\WinMain.cpp
     文件         525  2016-11-02 18:02  test.html
     文件        1388  2016-11-01 17:06  Win32CallWeb.sln
............此处省略2个文件信息

评论

共有 条评论

相关资源