用VC++製作QQ自動登陸軟體

來源:互聯網
上載者:User
用VC++製作QQ自動登陸軟體[

  近日由於在華為培訓,期間因為導師們忙得要緊,沒那麼多時間去教導我們,只是給我們看文檔和代碼,看完了,沒事就想出這個來玩玩了。這裡要先用SPY++來找到QQ登陸框的各個視窗標題或ID號。

  原理:其實不難,只要找到QQ登陸框的號碼輸入和密碼輸入框,然後向其填資料就是了。

  這裡填資料就是向其發送訊息,類比鍵盤 罷了。

  一、先是查看QQ登陸框是否開啟,否則開啟它。

//找QQ的登陸對話方塊,如果QQ沒有啟動,則先啟動它。
pWnd = FindWindow(_T("#32770"), _T("QQ使用者登入"));
if (!pWnd)
{
 PROCESS_INFORMATION lpProcessInformation;
 STARTUPINFO startupinfo;
 memset(&startupinfo,0,sizeof(STARTUPINFO));
 memset(&lpProcessInformation,0,sizeof(PROCESS_INFORMATION));
 startupinfo.cb = sizeof(STARTUPINFO);
 startupinfo.dwFlags = STARTF_FORCEOFFFEEDBACK;
 startupinfo.dwX = 0;
 startupinfo.dwY = 0;
 startupinfo.lpDesktop = NULL;
 startupinfo.lpReserved = NULL;
 startupinfo.lpReserved2 = NULL;
 startupinfo.lpTitle = NULL;
 CreateProcess(_T("D://Tencent//qq//CoralQQ.exe"), NULL, NULL, NULL, FALSE,
 NORMAL_PRIORITY_CLASS, NULL, NULL, &startupinfo, &lpProcessInformation);
}

  二、開啟和開啟後就是取得QQ的號碼框和密碼框的控制代碼了

  這裡要注意的是,因為QQ密碼框是登陸框的子視窗,先要找到登陸框後再一步步找到QQ的密碼框。找到後就是向它們發送訊息了。QQ的密碼框先複製到剪下板後發送WM_PASTE就可以了,但是密碼框因為使用了QQ鍵盤加密保護技術,所以不能發送WM_PASTE,而要類比鍵盤發送WM_CHAR訊息,讓其一個一個接收密碼就可以了。

if (pWnd)
{
 //獲得QQ的號碼輸入框指標
 CComboBox *pCob = (CComboBox *)pWnd->GetDlgItem(138);
 if (pCob)
 {
  m_edtCode.SetSel(0, -1);
  m_edtCode.Copy();

  //先刪除原有號碼後向號碼輸入框發送複製訊息
  pCob->SetCurSel(0);
  pCob->DeleteString(0);
  pCob->SendMessage(WM_PASTE, 0, 0);
 }

 //因為QQ的密碼框是包含在主視窗裡的子視窗,所以先獲得子視窗後再一個個往後找
 CWnd *pCwnd = pWnd->GetNextWindow(GW_CHILD);
 pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);
 while (pCwnd != NULL)
 {
  if (pCwnd)//找到
  {
   CEdit *pPwd = (CEdit *)pCwnd->GetDlgItem(16038);
   if (pPwd)
   {
    char cKey;
    char buf[20];
    memset(buf, 0, sizeof(buf));
    //因為我的程式是unicode,所以這裡要轉換。如果不是,則不用轉換了。
    int iRet = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK,
m_strPassword.GetBuffer(m_strPassword.GetLength()),
m_strPassword.GetLength(), buf, 20, NULL, NULL);

    //清除密碼框
    pPwd->SetSel(0, -1);
    pPwd->Clear();
    i = 0;

    //將密碼一個個地發送過去。這裡不能用複製訊息,因為QQ的密碼框不允許複製
    while (i < iRet)
    {
     strncpy(&cKey, buf+i, 1);
     pPwd->SendMessage(WM_CHAR, (WPARAM)cKey, 0);
     i++;
    }
    break;
   }
  }
  pCwnd = pCwnd->GetNextWindow(GW_HWNDNEXT);
 }

  三、當填充好號碼和密碼後就可以發送單擊滑鼠訊息,讓QQ登陸了。

//以下為找到登陸按鈕後,發送按一下滑鼠訊息
CButton *pbtnLogin = (CButton *)pWnd->GetDlgItem(16032);
if (pbtnLogin)
{
 pbtnLogin->PostMessage(WM_LBUTTONDOWN, 0, 0);
 pbtnLogin->PostMessage(WM_LBUTTONUP, 0, 0);
}

  四、要讓QQ自動登陸,只要加個WM_TIMER就可以了,至於這個大家都會的了,這裡不再講述。

  五、結束語:

  這裡使用到的技術就是向別的進程發送(資料)訊息,主要就是要找到對方進程接收訊息的控制代碼(這裡用了SPY++),找到後就可以向其它發送(資料)訊息了。比如我前幾天幫別人裝了個PP,但是PP有個瀏覽器,只要你開PP這個東東就會出來,我覺得非常礙眼,就可以給它 發送一個WM_HIDE訊息。其它的大家可以隨意發揮了!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.