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

3年前曾经用C++写过一个QQ自动登录器,作为一个程序员新手的入门之作,其技术含量那是相当的低。最近回过头看了一遍以前的代码,心潮澎湃,于是按捺不住用流行的C#重新写了一遍,用意在于对比软件开发的趋势。  c++版思路: (1)启动QQ主程序 WinExec(strLoc,SW_HIDE); // strLoc为QQ程序地址 (2)找到登录窗口 pWnd = FindWindow(_T("#32770"), _T("QQ用户登录"));   (3) 找到QQ号码输入窗口并输入号码 (利用剪切板复制粘贴QQ号码) 
 1 CComboBox  * 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(); 24 25                    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        } 10 11         CButton  * pbtnLogin  =  (CButton  * )pWnd -> GetDlgItem( 16032 ); 12          if  (pbtnLogin) 13          { 14            pbtnLogin->PostMessage(WM_LBUTTONDOWN, 00); 15            pbtnLogin->PostMessage(WM_LBUTTONUP, 00); 16        }
以上代码大量用到了消息处理,用程序完全模拟了我们登录QQ的过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值