Example #1
0
// ## Internet Explorer ##
bool Nicookie::findInternetExplorer()
{
    WCHAR cookie_data[256];
    DWORD cookie_data_size = 256;
    BOOL result = false;
#ifdef _MSC_VER
    // 保護モードでの取得。VisualStudioでのみ有効。
    // 32bitは32bitだけ、64bitは64bitだけしか取得できない。
    HRESULT hr;
    hr = IEGetProtectedModeCookie(Nicookie::COOKIE_URL.toStdWString().c_str(),
                                  Nicookie::COOKIE_NAME.toStdWString().c_str(),
                                  cookie_data,
                                  &cookie_data_size,
                                  0);
    result = (hr == S_OK);
#endif // _MSC_VER
    if (!result) {
        result = InternetGetCookieW(Nicookie::COOKIE_URL.toStdWString().c_str(),
                                    Nicookie::COOKIE_NAME.toStdWString().c_str(),
                                    cookie_data,
                                    &cookie_data_size);
    }
    if (result) {
        this->userSession = QString::fromStdWString(std::wstring(cookie_data));
        return true;
    } else {
        setError(Nicookie::NotFoundDataError);
        return false;
    }
}
Example #2
0
// 使用IE Cookie
void CLoginDlg::OnBnClickedButton3()
{
	DWORD size = 1024 * 1024;
	BOOL result = InternetGetCookieEx(_T("http://tieba.baidu.com/"), NULL, m_cookie.GetBuffer(size),
		&size, INTERNET_COOKIE_HTTPONLY, NULL);
	m_cookie.ReleaseBuffer();

	BOOL jump = TRUE;
CheckResult:
	if (!result)
	{
		if (jump)
			goto Win10;
		AfxMessageBox(_T("获取Cookie失败!"), MB_ICONERROR);
		return;
	}
	if (!StringIncludes(m_cookie, _T("BDUSS=")))
	{
		if (jump)
			goto Win10;
		AfxMessageBox(_T("请先在IE浏览器登陆百度账号并选中下次自动登录!"), MB_ICONERROR);
		return;
	}

	GetLoginUserName();
	if (m_userName == _T(""))
	{
		AfxMessageBox(_T("获取用户名失败!"), MB_ICONERROR);
		return;
	}

	AfxMessageBox(_T("登录完毕,不要在IE退出账号以免cookie失效,可以直接清除cookie"), MB_ICONINFORMATION);
	EndDialog(IDOK);
	return;

Win10:
	size = 1024 * 1024;
	result = SUCCEEDED(IEGetProtectedModeCookie(L"http://tieba.baidu.com/", NULL, m_cookie.GetBuffer(size),
		&size, INTERNET_COOKIE_HTTPONLY));
	jump = FALSE;
	goto CheckResult;
}