3年前曾经用C++写过一个QQ自动登录器,作为一个程序员新手的入门之作,其技术含量那是相当的低。最近回过头看了一遍以前的代码,心潮澎湃,于是按捺不住用流行的C#重新写了一遍,用意在于对比软件开发的趋势。
 c++版思路:
(1)启动QQ主程序
WinExec(strLoc,SW_HIDE); // strLoc为QQ程序地址
(2)找到登录窗口
pWnd = FindWindow(_T("#32770"), _T("QQ用户登录"));  
(3) 找到QQ号码输入窗口并输入号码 (利用剪切板复制粘贴QQ号码) 
 1【转】再谈QQ自动登录(上)_ideCComboBox *pCob = (CComboBox *)pWnd->GetDlgItem(138);
 2【转】再谈QQ自动登录(上)_ide if (pCob)
 3【转】再谈QQ自动登录(上)_c++_03【转】再谈QQ自动登录(上)_i++_04 【转】再谈QQ自动登录(上)_复制粘贴_05{
 4【转】再谈QQ自动登录(上)_复制粘贴_06    //CString source;
 5【转】再谈QQ自动登录(上)_复制粘贴_06    if(OpenClipboard())
 6【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09    【转】再谈QQ自动登录(上)_复制粘贴_05
 7【转】再谈QQ自动登录(上)_复制粘贴_06      HGLOBAL clipbuffer;
 8【转】再谈QQ自动登录(上)_复制粘贴_06      char *buffer;
 9【转】再谈QQ自动登录(上)_复制粘贴_06      EmptyClipboard();
10【转】再谈QQ自动登录(上)_复制粘贴_06      clipbuffer=GlobalAlloc(GMEM_DDESHARE,m_strCode.GetLength()+1);
11【转】再谈QQ自动登录(上)_复制粘贴_06      buffer=(char *)GlobalLock(clipbuffer);
12【转】再谈QQ自动登录(上)_复制粘贴_06      strcpy(buffer,LPCSTR(m_strCode));
13【转】再谈QQ自动登录(上)_复制粘贴_06      GlobalUnlock(clipbuffer);
14【转】再谈QQ自动登录(上)_复制粘贴_06      SetClipboardData(CF_TEXT,clipbuffer);
15【转】再谈QQ自动登录(上)_复制粘贴_06      CloseClipboard();
16【转】再谈QQ自动登录(上)_i++_20     }

17【转】再谈QQ自动登录(上)_复制粘贴_06    pCob->SetCurSel(0);
18【转】再谈QQ自动登录(上)_复制粘贴_06    pCob->DeleteString(0);
19【转】再谈QQ自动登录(上)_复制粘贴_06    pCob->SendMessage(WM_PASTE, 00);
20【转】再谈QQ自动登录(上)_ide_24}
(4)输入QQ密码(因为密码输入框不支持粘贴,模拟键盘输入密码)
 1【转】再谈QQ自动登录(上)_ide        pCob = (CComboBox *)pWnd->GetDlgItem(0x3e95);
 2【转】再谈QQ自动登录(上)_ide        if (pCob)
 3【转】再谈QQ自动登录(上)_c++_03【转】再谈QQ自动登录(上)_i++_04        【转】再谈QQ自动登录(上)_复制粘贴_05{
 4【转】再谈QQ自动登录(上)_复制粘贴_06            if (pCob->GetCurSel()==CB_ERR)
 5【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09            【转】再谈QQ自动登录(上)_复制粘贴_05{
 6【转】再谈QQ自动登录(上)_复制粘贴_06            pCob->SetCurSel(0);
 7【转】再谈QQ自动登录(上)_i++_20            }

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

 9【转】再谈QQ自动登录(上)_ide        
10【转】再谈QQ自动登录(上)_ide        CWnd *pCwnd = pWnd->GetNextWindow(GW_CHILD);
11【转】再谈QQ自动登录(上)_ide        pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);
12【转】再谈QQ自动登录(上)_ide        while (pCwnd != NULL)
13【转】再谈QQ自动登录(上)_c++_03【转】再谈QQ自动登录(上)_i++_04        【转】再谈QQ自动登录(上)_复制粘贴_05{
14【转】再谈QQ自动登录(上)_复制粘贴_06            if (pCwnd)//找到
15【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09            【转】再谈QQ自动登录(上)_复制粘贴_05{
16【转】再谈QQ自动登录(上)_复制粘贴_06                CEdit *pPwd = (CEdit *)pCwnd->GetDlgItem(16038);
17【转】再谈QQ自动登录(上)_复制粘贴_06                if (pPwd)
18【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09                【转】再谈QQ自动登录(上)_复制粘贴_05{
19【转】再谈QQ自动登录(上)_复制粘贴_06                    char buf[20];
20【转】再谈QQ自动登录(上)_复制粘贴_06                    memset(buf, 0sizeof(buf));
21【转】再谈QQ自动登录(上)_复制粘贴_06                    int iRet = m_strPassword.GetLength();
22【转】再谈QQ自动登录(上)_复制粘贴_06                    pPwd->SetSel(0-1);
23【转】再谈QQ自动登录(上)_复制粘贴_06                    pPwd->Clear();
24【转】再谈QQ自动登录(上)_复制粘贴_06
25【转】再谈QQ自动登录(上)_复制粘贴_06                    i = 0;
26【转】再谈QQ自动登录(上)_复制粘贴_06                    while (i < iRet)
27【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09                    【转】再谈QQ自动登录(上)_复制粘贴_05{
28【转】再谈QQ自动登录(上)_复制粘贴_06                        pPwd->SendMessage(WM_CHAR, (WPARAM)m_strPassword.GetAt(i), 0);
29【转】再谈QQ自动登录(上)_复制粘贴_06                        i++;
30【转】再谈QQ自动登录(上)_i++_20                    }

31【转】再谈QQ自动登录(上)_复制粘贴_06                    break;
32【转】再谈QQ自动登录(上)_i++_20                }

33【转】再谈QQ自动登录(上)_i++_20            }

34【转】再谈QQ自动登录(上)_复制粘贴_06            pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);
35【转】再谈QQ自动登录(上)_ide_24        }
(5)模拟按下登录按钮
 1【转】再谈QQ自动登录(上)_ide        CButton *pbtn = (CButton *)pWnd->GetDlgItem(324);
 2【转】再谈QQ自动登录(上)_ide        if (pbtn)
 3【转】再谈QQ自动登录(上)_c++_03【转】再谈QQ自动登录(上)_i++_04        【转】再谈QQ自动登录(上)_复制粘贴_05{
 4【转】再谈QQ自动登录(上)_复制粘贴_06            if (QQInfo.type!=pbtn->GetCheck())
 5【转】再谈QQ自动登录(上)_复制粘贴_08【转】再谈QQ自动登录(上)_ide_09            【转】再谈QQ自动登录(上)_复制粘贴_05{
 6【转】再谈QQ自动登录(上)_复制粘贴_06            pbtn->PostMessage(WM_LBUTTONDOWN, 00);
 7【转】再谈QQ自动登录(上)_复制粘贴_06            pbtn->PostMessage(WM_LBUTTONUP, 00);
 8【转】再谈QQ自动登录(上)_i++_20            }

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

10【转】再谈QQ自动登录(上)_ide
11【转】再谈QQ自动登录(上)_ide        CButton *pbtnLogin = (CButton *)pWnd->GetDlgItem(16032);
12【转】再谈QQ自动登录(上)_ide        if (pbtnLogin)
13【转】再谈QQ自动登录(上)_c++_03【转】再谈QQ自动登录(上)_i++_04        【转】再谈QQ自动登录(上)_复制粘贴_05{
14【转】再谈QQ自动登录(上)_复制粘贴_06            pbtnLogin->PostMessage(WM_LBUTTONDOWN, 00);
15【转】再谈QQ自动登录(上)_复制粘贴_06            pbtnLogin->PostMessage(WM_LBUTTONUP, 00);
16【转】再谈QQ自动登录(上)_ide_24        }
以上代码大量用到了消息处理,用程序完全模拟了我们登录QQ的过程
【转】再谈QQ自动登录(上)_git_94