【转】再谈QQ自动登录(上)

来源:互联网 发布:淘宝中店铺简介怎么写 编辑:程序博客网 时间:2024/05/01 04:35
3年前曾经用C++写过一个QQ自动登录器,作为一个程序员新手的入门之作,其技术含量那是相当的低。最近回过头看了一遍以前的代码,心潮澎湃,于是按捺不住用流行的C#重新写了一遍,用意在于对比软件开发的趋势。 c++版思路:(1)启动QQ主程序WinExec(strLoc,SW_HIDE); // strLoc为QQ程序地址(2)找到登录窗口pWnd = FindWindow(_T("#32770"), _T("QQ用户登录"));  (3) 找到QQ号码输入窗口并输入号码 (利用剪切板复制粘贴QQ号码) 
 1CComboBox *pCob = (CComboBox *)pWnd->GetDlgItem(138); 2 if (pCob) 3 { 4    //CString source; 5    if(OpenClipboard()) 6     7      HGLOBAL clipbuffer; 8      char *buffer; 9      EmptyClipboard();10      clipbuffer=GlobalAlloc(GMEM_DDESHARE,m_strCode.GetLength()+1);11      buffer=(char *)GlobalLock(clipbuffer);12      strcpy(buffer,LPCSTR(m_strCode));13      GlobalUnlock(clipbuffer);14      SetClipboardData(CF_TEXT,clipbuffer);15      CloseClipboard();16     }17    pCob->SetCurSel(0);18    pCob->DeleteString(0);19    pCob->SendMessage(WM_PASTE, 00);20}
(4)输入QQ密码(因为密码输入框不支持粘贴,模拟键盘输入密码)
 1        pCob = (CComboBox *)pWnd->GetDlgItem(0x3e95); 2        if (pCob) 3        { 4            if (pCob->GetCurSel()==CB_ERR) 5            { 6            pCob->SetCurSel(0); 7            } 8        } 9        10        CWnd *pCwnd = pWnd->GetNextWindow(GW_CHILD);11        pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);12        while (pCwnd != NULL)13        {14            if (pCwnd)//找到15            {16                CEdit *pPwd = (CEdit *)pCwnd->GetDlgItem(16038);17                if (pPwd)18                {19                    char buf[20];20                    memset(buf, 0sizeof(buf));21                    int iRet = m_strPassword.GetLength();22                    pPwd->SetSel(0-1);23                    pPwd->Clear();2425                    i = 0;26                    while (i < iRet)27                    {28                        pPwd->SendMessage(WM_CHAR, (WPARAM)m_strPassword.GetAt(i), 0);29                        i++;30                    }31                    break;32                }33            }34            pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);35        }
(5)模拟按下登录按钮
 1        CButton *pbtn = (CButton *)pWnd->GetDlgItem(324); 2        if (pbtn) 3        { 4            if (QQInfo.type!=pbtn->GetCheck()) 5            { 6            pbtn->PostMessage(WM_LBUTTONDOWN, 00); 7            pbtn->PostMessage(WM_LBUTTONUP, 00); 8            } 9        }1011        CButton *pbtnLogin = (CButton *)pWnd->GetDlgItem(16032);12        if (pbtnLogin)13        {14            pbtnLogin->PostMessage(WM_LBUTTONDOWN, 00);15            pbtnLogin->PostMessage(WM_LBUTTONUP, 00);16        }
以上代码大量用到了消息处理,用程序完全模拟了我们登录QQ的过程
原创粉丝点击