Ò»¡¢ÒýÑÔ
QQÒ»Ö±ÊǹúÄÚ×îÁîÈËÖõÄ¿µÄ¼°Ê±Í¨Ñ¶Èí¼þ
£¬½ü6ÄêµÄ¾ÓªÊ¹ÆäÔÚIMÊг¡ÓÐÁË"ÊÀ½çµÚÒ»"ÃûºÅ
¡£ÔÚ¹úÄÚÊг
¡£¬QQ µÄÊг¡Õ¼ÓÐÂÊÒѾ³¬¹ýÁË70%
£¬Óû§ÈºÅӴ󣬱¾È˾ÍÊÇÌÚѶQQµÄÒ»¸öÓû§¡£²»ÖªQQ»áÔ±ÊÇ·ñÄܹ»ÏûϢȺ·¢£¬µ«ÎÒÕâ¸öÃâ·ÑÓû§ÊÇÏíÊܲ»ÁËÕâ¸ö·þÎñµÄ£¬¸øͬÊ ºÍÅóÓÑÃÇ·¢Í¨ÖªºÃÐÁ¿à°¡¡£ÔÚÍøÉÏGoogleÁËһϣ¬ÕÒµ½¼¸¸öСÈí¼þ£¬¿ÉÊÇÏûÏ¢ºóÃæÓÖ¼Ó¸ö¹ã¸æβ°Í¡£»¹ÊÇ×Ô¼º¶¯ÊÖ°É£º
Èç¹ûÒª·ÖÎöÌÚѶQQÐÒéÀ´±àд·¢ËÍQQÏûÏ¢ÊǺܸ´ÔÓµÄÒ»¼þÊÂÇ飬ÄÇô£¬ÓÐûÓмòµ¥µÄ°ì·¨ÄØ£¿´ð°¸Êǿ϶¨µÄ£ºÓУ¡
¼ÈÈ»WindowsʹÓÃÏûϢѻ·À´´¦ÀíÊäÈëÐÅÏ¢£¬ÄÇôÈç¹ûÎÒÃÇÄܹ»ÓóÌÐòÄ£Äâ²úÉú"²Ù×÷QQʱÊó±êºÍ¼üÅ̲Ù×÷Ëù·¢³öµÄÏûÏ¢" £¬ÄÇô¾ÍÓ¦¸Ã¿ÉÒÔʵÏÖ³ÌÐò·¢ËÍQQÏûÏ¢£¬½ø¶øÅúÁ¿·¢ËÍQQÏûÏ¢£¬¼´ÏûϢȺ·¢¡£
¶þ¡¢¾ßÌåʵÏÖ
QQ¸øij¸öÈË·¢ËÍÏûϢʱ£¬½«´´½¨ÈçÏÂͼËùʾµÄ´°¿Ú£¨¶Ô»°¿ò´°¿Ú£©£¬ÎÒÃÇ·¢ÏûÏ¢¾ÍÊÇÌîдÏûÏ¢ÄÚÈÝ£¬È»ºóµã»÷·¢ËÍ¡£ÒªÄ£ÄâQQÏûÏ¢·¢ËÍ£¬ÎÒÃǾÍÐèÒªÌîдÏûÏ¢ÄÚÈÝ£¬È»ºóÄ£Äâ°´¼ü·¢ËÍ¡£
C++ ʵÏÖQQÏûϢȺ·¢" src="/uploadfile/2012/0404/20120404105258438.jpg">
µÚÒ»²½£¬ÕÒµ½ÁÄÌìÖ÷´°¿Ú£¬¸Ã´°¿ÚµÄ±êÌâÊÇÓë*****ÁÄÌìÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓÃFindWindowExº¯ÊýÀ´ÕÒµ½Õâ¸ö´°¿Ú¡£
µÚ¶þ²½£¬ÕÒµ½ÊäÈëÏûÏ¢µÄ¿Ø¼þ²¢ÔÚÀïÃæÌîдÏûÏ¢¡£×¢Ò⣺¿ÉÄÜÊÇÌÚѶ¹«Ë¾ÎªÁË
°²È«£¬ÔÚ´°¿ÚÀïÓÖÌ×Á˼¸¸ö´°¿Ú£¬Èç¹ûÓÐÐËȤ£¬¿ÉÒÔÓÃ΢ÈíµÄ¹¤¾ßSPY++×Ô¼º¿´¿´¡£Í¨¹ýʹÓÃSPY++¹Û²ì£¬·¢ÏָÿؼþÊÇÒ»¸öRichEditÀ࣬λÖÃÈçÉÏͼËùʾ£¬ÎÒÃÇ»¹ÊÇÓà FindWindowExº¯ÊýÀ´ÕÒµ½Ëü£¬È»ºóÈ¡µÃÖ¸Õ룬ͨ¹ýÖ¸ÕëÍùÀïÃæЩÊý¾Ý¡£
C++ ʵÏÖQQÏûϢȺ·¢" src="/uploadfile/2012/0404/20120404105258492.jpg">
µÚÈý²½£¬Ä£ÄâÊó±êµã·¢ËÍ°´Å¥µÄ²Ù×÷£¬¿ÉÒÔͨ¹ýÈ¡µÃ¸Ã°´Å¥µÄÖ¸Õ룬Ȼºó·¢ËÍÒ»¸öBM_CLICKÏûÏ¢¾Í¿ÉÒÔÁË¡£
ͨ¹ý³ÌÐòÄ£Ä⣬ʵÏֵķdz£ºÃ¡£ÓÃVC6½¨Á¢Ò»¸ö¼òµ¥µÄ¶Ô»°¿ò³ÌÐò£¬Ìí¼ÓÒ»¸ö°´Å¥£¨¸ÄCaptionֵΪ·¢ËÍ£©£¬Îª¸Ã°´Å¥Ìî¼ÓÒÔÏÂÖ´ÐдúÂ룺
void CMySMSDlg:: QQSendMessage()
{
CString str;
CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
HWND hWnd,hNext;
hWnd = pMainWnd->m_hWnd;
pMainWnd->GetWindowText(str);
if(str.Find ("ÁÄÌì")>-1){//ÕÒµ½ÁÄÌìÖ÷´°¿ÚBegin
//ÕÒRichEdit
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"#32770",NULL);
pMainWnd = CWnd::FromHandle(hWnd);
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL);
CWnd* pChildWnd=CWnd::FromHandle(hWnd);
int nLen = str.GetLength ();
hNext = FindWindowEx(pChildWnd->m_hWnd,NULL,"RICHEDIT",NULL);
if(hNext){//ÕÒµ½ÏûÏ¢Ìîд¿Ø¼þ
CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));
pRich->GetWindowText (str);
pRich->SetSel (nLen,nLen);
pRich->ReplaceSel ("³É¶¼Íâ¹úÓïѧУ »Æ¶«");//ÌîÉϽ«Òª·¢Ë͵ÄÄÚÈÝ
}else return;
//ÕÒÏûÏ¢·¢ËÍ°´Å¥
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,NULL,NULL);
while (hWnd) {
pChildWnd=CWnd::FromHandle(hWnd);
pChildWnd->GetWindowText(str);
if(str.Find ("·¢ËÍ")>-1){
pChildWnd->SendMessage (BM_CLICK);//·¢ËÍ
return;//¡¡Í˳ö
}
hWnd=FindWindowEx(pMainWnd->m_hWnd,hWnd,NULL,NULL);
}
return;
}//ÕÒµ½ÁÄÌìÖ÷´°¿ÚEnd
else pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); //¼ÌÐøÕÒ
}//While
}
ÖÁ´Ë£¬Ö÷Òª²¿¼þÒѾʵÏÖÁË£¬ÈçºÎÈóÌÐò×Ô¶¯ÎªÃ¿¸öºÃÓÑ´ò¿ªÁÄÌì´°¿Ú£¬ºÍÕâ¸öÒ²²î²»ÁËÌ«¶à£¬¾ÍÁô¸ø¸÷λȥÑо¿°É£¬ÕâÌõ˼·ÊʺÏÄ¿Ç°ËùÓеÄIMÈí¼þ¡£
³ÌÐòÔÚVC6ϱàÒëͨ¹ý(ÎļþºÜС£¬Ö»ÓÐ20KB)£¬²Ù×÷ϵͳΪWindows 2000 SP4£¬QQ°æ±¾Îª2004 SP1£¬°´·¢ËÍ°´Å¥Ö®Ç°ÐèÒª´ò¿ªÒ»¸öÁÄÌì´°¿Ú¡£