青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 7  文章 - 57  trackbacks - 0
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

續(xù)上文:
QQ美女找茬(外掛)學(xué)習(xí)筆記(一)截圖的實(shí)現(xiàn)與保存
http://www.shnenglu.com/ArthasLee/archive/2010/11/18/134022.html

比較兩幅圖片的不同過(guò)程中,筆者直接用了 == 來(lái)比較,盡管XOR會(huì)效率高點(diǎn)。
以下是筆者的代碼,非完全原創(chuàng),有參考,至于具體URL,在上一篇已經(jīng)跟大家公布過(guò):

 1
void CZhaoChaV30Dlg::CompareBMP( DWORD*& pBuffer, DWORD* pLeft, DWORD* pRight )
 2{
 3    if!pBuffer )   
 4    {   
 5        delete []pBuffer;   
 6        pBuffer = NULL;   
 7    }
   
 8
 9    pBuffer = new DWORD[ nWidth * nHeight ];   
10    //比較兩幅圖,數(shù)據(jù)相同的設(shè)置為白色,不同的為紅色。  
11    for (DWORD i = 0; i < (DWORD)nWidth * nHeight; i++ )   
12    {   
13        if( pLeft[ i ] != pRight[ i ] )    
14            pBuffer[ i ] = RGB( 0,0,255 );    
15        else  
16            pBuffer[ i ] = pLeftBuffer[ i ] ;    
17    }

18
19    //轉(zhuǎn)換圖片數(shù)據(jù),使圖片按正常順序顯示。(BMP格式與窗口圖像存放豎坐標(biāo)相反)  
20    //筆者開始一直不是很明白該位blog主的意思,為什么要倒轉(zhuǎn)y坐標(biāo);
21    //因此就把下面的注釋掉,從windows圖片瀏覽器觀察位圖,發(fā)現(xiàn)位圖顯示出來(lái)的時(shí)候并沒(méi)有倒轉(zhuǎn);
22    //直至在后來(lái)要把位圖顯示到窗口上才真切理解“BMP格式與窗口圖像存放豎坐標(biāo)相反”這個(gè)事實(shí);
23    //要注意,不然日后要寫全自動(dòng)WG,直接由機(jī)器發(fā)送鼠標(biāo)消息模擬點(diǎn)擊的時(shí)候就杯具了。
24    int width = nWidth;   
25    for ( DWORD i = 0; i < (DWORD)(nHeight / 2); i++ )   
26    {   
27        for ( DWORD j = 0; j < (DWORD)width; j++ )   
28        {   
29            DWORD temp;   
30            temp = *( pBuffer + i * width + j );   
31            *( pBuffer + i * width + j ) = *( pBuffer + width * ( nHeight - 1 - i ) + j );   
32            *( pBuffer + width * ( nHeight - 1 - i ) + j ) = temp;   
33        }
   
34    }
  
35
36}

37
傳入三個(gè)pBuffer,然后對(duì)后面兩個(gè)參數(shù)的內(nèi)容進(jìn)行比較,然后把比較結(jié)果寫入第一個(gè)pBuffer指向的內(nèi)存空間中。這段代碼筆者還是好好學(xué)習(xí)了下,大家留意注釋。

比較完成以后,當(dāng)然是要把比較的成果顯示到程序主窗口的客戶區(qū)中。不然之前一切的努力也就白費(fèi)了。
 1void CZhaoChaV30Dlg::BMPToWnd( void )   
 2{    
 3    CBitmap bm; 
 4    CDC* pDC;
 5
 6    bm.CreateBitmap( nWidth, nHeight, 132, pBuffer );   
 7    CBrush brush;   
 8    brush.CreatePatternBrush( &bm );   
 9
10    pDC = GetDC();
11    CBrush* pOldBrush = (CBrush*)pDC -> SelectObject( &brush );   
12
13    pDC->FillRect( &CRect( 00, nWidth, nHeight ), &brush );   
14
15    pDC->SelectObject( pOldBrush );   
16
17    brush.DeleteObject();   
18    bm.DeleteObject();   
19    ReleaseDC(pDC);   
20}
   
在上面的代碼中,有個(gè)函數(shù)是CreateBitmap,與之前截圖用到的CreateCompatableBitmap有點(diǎn)相似,筆者有點(diǎn)好奇,拜了google大神后,找到了以下的文章:
http://hi.baidu.com/550189285/blog/item/3742cfd4f8c9f30ba08bb775.html
PS:盡管隨便貼URL是不道德滴,但是學(xué)習(xí)資料不保留下來(lái)更加不道德~


一般來(lái)說(shuō),WG來(lái)到這里,就差不多了。因?yàn)槲覀兊幕灸繕?biāo)已經(jīng)達(dá)到。
but。。。
其余的細(xì)節(jié)呢?
要不要令這個(gè)WG更自動(dòng)化,讓“它”自己“玩”游戲呢?
又該如何實(shí)現(xiàn)呢???


以下是筆者在編碼過(guò)程中遇到的問(wèn)題和解決心得:
再次聲明,此乃筆記,不具有普適性,有錯(cuò)誤和改進(jìn),歡迎指出~

問(wèn)題3:比較圖片和一個(gè)奇怪的現(xiàn)象?

 

背景:

捕獲了圖片之后開始對(duì)兩幅相同的圖像進(jìn)行比較,可以選取每個(gè)像素點(diǎn)進(jìn)行比較,方法有二:直接用 == 比較,或者將兩個(gè)點(diǎn)進(jìn)行Xor運(yùn)算。但是由此比較出來(lái)的圖片,卻出現(xiàn)了“重影現(xiàn)象”;

如下圖所示:

 

子問(wèn)題:什么原因?qū)е麓爽F(xiàn)象?

 

解決方案:

分析:筆者對(duì)比了幾個(gè)失敗樣本之后,發(fā)現(xiàn)重影多數(shù)是出現(xiàn)在X方向上Y方向上則沒(méi)有明顯現(xiàn)象。如果這種現(xiàn)象是由色差這樣微小的非肉眼能識(shí)別的區(qū)別而造成的,那么應(yīng)該整張圖也出現(xiàn)重影,而不應(yīng)該在某一個(gè)方向上出現(xiàn)特別顯著的重影。

 

結(jié)論:

兩幅圖在X坐標(biāo)上有1個(gè)像素的偏移,筆者沒(méi)有自己通過(guò)任何技術(shù)手段去獲取兩幅圖片左上角的確切坐標(biāo),只是google了一下,就找到了相關(guān)的文章:

http://student.csdn.net/space.php?uid=110891&do=blog&id=38571

這個(gè)鏈接在筆者的上一篇文章已經(jīng)提到過(guò)。

 

關(guān)鍵的數(shù)字們~

x1 = 8;

y1 = 193;

x2 = 516 + 1; //左右兩副圖本身有偏移個(gè)像素,去掉偏移的,只比較共有的部分

y2 = 193;

nWidth = 498 - 1;//左右兩副圖本身有偏移個(gè)像素,去掉偏移的,只比較共有的部分

nHeight = 448;

 

感想:

遇到問(wèn)題的時(shí)候,google很重要。

 

 

 

問(wèn)題4:將比較結(jié)果顯示到更新了的窗口上:

 

背景:

位圖信息被保存在pBuffer上,為了整個(gè)程序可以僅僅透過(guò)pBuffer來(lái)溝通,放棄了之前的hdcWindowhBitMap等變量的使用(讓它們?cè)诮貓D函數(shù)返回前就被銷毀)。因此,MSDN上的那段關(guān)于截圖的代碼的后半部分就不能再用。

 

子問(wèn)題:

在位圖內(nèi)容已經(jīng)存在的情況下,通過(guò)pBuffer,如何把位圖顯示到窗口上?

 

解決方案:

創(chuàng)建一個(gè)滑刷,CBrush brush;然后把pBuffer里面的像素填充進(jìn)去。但是注意填充之前要保證pBuffer里面的縱坐標(biāo)被倒轉(zhuǎn)一下再顯示到窗口中,不然會(huì)出現(xiàn)倒轉(zhuǎn),詳見筆者在上面的代碼,有中文注釋。

 

 

 

問(wèn)題5:隱藏窗口時(shí)的延遲性造成截圖干擾

 

背景:

按下display按鈕進(jìn)行找茬之后,需要隱藏窗口再進(jìn)行截圖,不知道是機(jī)器原因還是別的問(wèn)題,窗口還沒(méi)有隱藏好,可能截圖操作就已經(jīng)完成了,這是截下的圖就會(huì)是包含了“窗口殘像”的圖,再進(jìn)行比較當(dāng)然毫無(wú)意義。

 

例如出現(xiàn)了這樣的“靈異事件”:


 

分析:

顯然是窗口還沒(méi)有完全隱藏,截圖就進(jìn)行了,so……

詳情見代碼:

 1void CZhaoChaV30Dlg::OnBnClickedButtonDisplay()
 2{
 3    // TODO: 在此添加控件通知處理程序代碼
 4    ShowWindow( SW_HIDE );
 5    Sleep( 500 );// Good code!
 6
 7    pBuffer = NULL;
 8#ifdef DEBUG_CODE
 9    CaptureImage( pLeftBuffer, x1, y1, nWidth, nHeight );
10    SaveBMP( pLeftBuffer, _T("Debug_1.bmp") );
11    CaptureImage( pRightBuffer, x2, y2, nWidth, nHeight );
12    SaveBMP( pRightBuffer, _T("Debug_2.bmp") );
13    CompareBMP( pBuffer, pLeftBuffer, pRightBuffer );
14    SaveBMP( pBuffer, _T("Result.bmp") );
15#else
16    CaptureImage( pLeftBuffer, x1, y1, nWidth, nHeight );
17    CaptureImage( pRightBuffer, x2, y2, nWidth, nHeight );
18    CompareBMP( pBuffer, pLeftBuffer, pRightBuffer );
19#endif
20    ShowWindow( SW_SHOW );
21
22    //RetSetWnd();
23    BMPToWnd();    
24}

 

解決方案:

隱藏窗口代碼后加一行:Sleep 500 ;

讓程序“休息”一下,這樣就可以等窗口完全隱藏過(guò)后才開始截圖。

 

感想:

Sleep真神奇~
理想狀態(tài)下一切都很理想,但實(shí)際操作的時(shí)候,還是會(huì)出現(xiàn)某些非理論性延遲。這時(shí)需要
coder們靈活變通,處理一下這個(gè)延遲了的“消息”~

 

鳴謝:
jingzhongrong——提供了不少測(cè)試樣例和分析案例,從反面促使筆者盡快完成此文;
vczh——從正面鼓勵(lì)筆者盡快完成此文;
vczh:http://www.shnenglu.com/vczh/

posted on 2010-11-24 00:02 ArthasLee 閱讀(3606) 評(píng)論(14)  編輯 收藏 引用 所屬分類: windows應(yīng)用層編程

FeedBack:
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 00:53 長(zhǎng)沙
學(xué)習(xí)了。。。很牛逼  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 09:07 潘孫友
寫得不錯(cuò),加油!

期待后續(xù)文章 :)  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 09:37 睡覺(jué)沒(méi)床
兄弟,這也叫外掛?  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 10:25 放屁阿狗
我在5173的時(shí)候有個(gè)同事是用vb做游戲圖像識(shí)別的,當(dāng)時(shí)覺(jué)得很土,但還是比較有效  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 10:26 陳梓瀚(vczh)
@睡覺(jué)沒(méi)床
因?yàn)橛辛瞬钅憔涂梢钥刂剖髽?biāo)去點(diǎn)了吧,我覺(jué)得基本上可以構(gòu)成一個(gè)外掛了——雖然目標(biāo)游戲比較簡(jiǎn)單。  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 11:27 尤里卡
呵呵,我理解的話,一般將代碼注入其他程序進(jìn)程的東西才稱為外掛(比較形象吧?)。這種的話,我一般稱之為輔助工具、或作弊程序。
樓主加油。  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 16:49 陳梓瀚(vczh)
@尤里卡
這是病毒- -b  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示[未登錄](méi) 2010-11-24 17:12 niino
@陳梓瀚(vczh)
那是病毒...  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 19:13 ArthasLee
@潘孫友
多謝支持,也打算寫后續(xù)文章。不過(guò)都是那句:這兩篇文章都是我的筆記性質(zhì)居多,因此不具有普適性。  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 19:14 ArthasLee
@放屁阿狗
本人才疏學(xué)淺,這個(gè)哪里是什么圖像識(shí)別,只不過(guò)是單純比較像素點(diǎn)罷了,呵呵!  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 19:18 ArthasLee
@陳梓瀚(vczh)
vczh兄正解~目標(biāo)游戲那是相當(dāng)簡(jiǎn)單,要我以現(xiàn)在的水平弄個(gè)星際蟑螂流戰(zhàn)術(shù)算法評(píng)估器,估計(jì)成功率跟我在有生之年看到人類實(shí)現(xiàn)超光速飛行的概率差不多。
例如這些:http://sc2.plu.cn/tactical/2010-11-04/22450.html
不過(guò)可能也不能叫做外掛吧?  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-24 19:22 ArthasLee
@尤里卡
將代碼注入其他進(jìn)程???呵呵,聽聞過(guò)。不過(guò)現(xiàn)在還不會(huì)呢。有機(jī)會(huì)的話希望兄臺(tái)指點(diǎn)指點(diǎn)~
多謝支持先。  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-26 14:22 feixuwu
樓主這種辦法比較耗CPU吧?另外,刷新也會(huì)是個(gè)問(wèn)題,不過(guò)探索精神應(yīng)該贊一個(gè)。原來(lái)也為朋友做過(guò)這個(gè)外掛,當(dāng)時(shí)用的一個(gè)辦法是掛鉤directDraw,直接操作緩沖區(qū),效率會(huì)比較高,另外顯示上也會(huì)更好。  回復(fù)  更多評(píng)論
  
# re: QQ美女找茬(外掛)學(xué)習(xí)筆記(二)圖片的比較與顯示 2010-11-26 15:18 ArthasLee
@feixuwu
哇!長(zhǎng)見識(shí)了!今晚去了解了解。謝謝兄臺(tái)給的建議!  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久精品国产第一区二区三区| 欧美在线一区二区| 一区二区三区高清不卡| 最新日韩在线| 亚洲三级性片| 日韩视频在线一区二区三区| 亚洲精品中文字| 一区二区av| 亚洲欧美国产77777| 欧美一区二区三区免费大片| 欧美一区二区在线免费观看| 欧美中文字幕在线| 久久久久久久97| 欧美二区视频| 欧美日韩中文字幕在线视频| 国产精品成人v| 国产日韩精品一区观看| 狠狠入ady亚洲精品| 亚洲韩国一区二区三区| 亚洲美女少妇无套啪啪呻吟| 一区二区三区久久久| 亚洲在线一区二区| 久久精品国产77777蜜臀| 久久久亚洲欧洲日产国码αv| 狂野欧美一区| 亚洲黄色视屏| 亚洲天堂网站在线观看视频| 午夜亚洲性色福利视频| 久久一区二区三区超碰国产精品| 欧美激情一级片一区二区| 欧美性大战久久久久| 国产曰批免费观看久久久| 亚洲国产专区校园欧美| 亚洲视频一区在线观看| 久久成年人视频| 欧美激情中文字幕乱码免费| 日韩视频在线播放| 性刺激综合网| 欧美高清一区| 国产亚洲精品综合一区91| 亚洲欧洲视频在线| 亚洲在线观看视频| 免播放器亚洲| 亚洲性视频网站| 久热综合在线亚洲精品| 国产精品每日更新| 亚洲国产精品激情在线观看| 亚洲一区二区高清| 另类综合日韩欧美亚洲| 一区二区三区毛片| 久久这里有精品视频| 国产精品欧美一区喷水| 亚洲欧洲一区二区三区在线观看| 亚洲欧美日韩精品久久久| 欧美成人一区二区三区片免费 | 亚洲一区国产一区| 久久精品国产久精国产一老狼| 欧美日韩国产一区精品一区| 精品动漫3d一区二区三区| 亚洲小说欧美另类婷婷| 欧美1级日本1级| 亚洲影视在线播放| 欧美激情1区2区3区| 国产亚洲一级高清| 亚洲欧美日本日韩| 亚洲国产日韩在线一区模特| 久久精品一区二区三区四区| 国产精品美女诱惑| 在线一区日本视频| 亚洲国产精品一区二区久| 久久久99爱| 国产嫩草一区二区三区在线观看 | 亚洲大胆在线| 欧美一区二区三区婷婷月色| 国产精品va在线播放我和闺蜜| 亚洲全黄一级网站| 女女同性女同一区二区三区91| 亚洲你懂的在线视频| 欧美日韩亚洲一区二区三区| 亚洲国产欧美日韩精品| 久久婷婷影院| 性做久久久久久久免费看| 国产精品欧美精品| 亚洲午夜小视频| 亚洲精品一区二区三区在线观看 | 宅男噜噜噜66一区二区| 最新日韩av| 欧美成人精品高清在线播放| 亚洲国产欧美国产综合一区 | 亚洲一区二区三区三| 亚洲黄网站在线观看| 美腿丝袜亚洲色图| 一区二区三区在线免费观看| 久久精品一区二区三区不卡牛牛| 亚洲少妇一区| 国产精品高清在线| 亚洲欧美日韩另类| 亚洲视频导航| 国产精品嫩草99av在线| 亚洲欧美福利一区二区| 中文亚洲字幕| 国产精品免费一区豆花| 欧美一区二视频| 亚洲欧美影院| 国产日韩欧美在线看| 久久久精品日韩| 久久精品视频免费| 亚洲高清视频在线| 欧美激情在线狂野欧美精品| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲少妇自拍| 一本一本a久久| 国产精品普通话对白| 久久动漫亚洲| 久久久国产午夜精品| 亚洲第一精品夜夜躁人人躁| 欧美福利一区二区三区| 欧美国产高清| 亚洲欧美日韩精品综合在线观看| 亚洲砖区区免费| 一区二区三区在线免费视频| 亚洲第一页中文字幕| 欧美久久精品午夜青青大伊人| 一区二区毛片| 亚洲欧美在线免费| 国内精品写真在线观看| 欧美成人资源网| 欧美日韩中文字幕在线视频| 久久本道综合色狠狠五月| 久久久999精品| 99精品国产福利在线观看免费| 9国产精品视频| 国产一区99| 亚洲高清久久久| 国产精品毛片一区二区三区| 久热精品视频在线| 欧美精品三级在线观看| 欧美一区二区三区日韩视频| 久久影视三级福利片| 一区二区三区精品| 欧美在线3区| 99xxxx成人网| 久久国产精品高清| 亚洲视频综合| 久久蜜桃av一区精品变态类天堂| 一本久道综合久久精品| 欧美一区二区精品在线| 亚洲精品日产精品乱码不卡| 亚洲影院免费观看| 亚洲精品色婷婷福利天堂| 亚洲自拍偷拍一区| 亚洲日产国产精品| 午夜日韩激情| 一本色道久久综合狠狠躁篇的优点| 亚洲自拍偷拍网址| 亚洲毛片在线观看.| 欧美亚洲尤物久久| 一区二区三区 在线观看视频| 久久不射中文字幕| 亚洲一区二区三区高清| 久久亚洲精品一区| 午夜在线观看欧美| 欧美精品久久久久久久免费观看| 久久大香伊蕉在人线观看热2| 欧美区一区二| 欧美a级大片| 国产区精品视频| 99爱精品视频| 亚洲人体偷拍| 久久超碰97中文字幕| 亚洲影院色无极综合| 欧美成人精品激情在线观看| 久久久一本精品99久久精品66| 欧美日韩精品二区| 欧美高清在线观看| 激情久久五月天| 亚洲综合成人婷婷小说| 国产精品99久久久久久久女警 | 欧美日韩免费观看一区三区| 麻豆国产va免费精品高清在线| 国产精品国码视频| 亚洲日本va午夜在线影院| 亚洲国产欧美国产综合一区| 久久精品水蜜桃av综合天堂| 久久成人av少妇免费| 国产精品美女久久久久aⅴ国产馆| 亚洲国产小视频在线观看| 伊人久久综合97精品| 午夜精品免费视频| 亚洲欧美国产精品va在线观看 | 久久一区二区三区四区| 久久久久女教师免费一区| 国产拍揄自揄精品视频麻豆| 中文国产亚洲喷潮| 亚洲一级网站| 欧美三级在线| 一本色道久久综合亚洲91| 一本色道久久综合亚洲91 | 亚洲国产精品嫩草影院| 久久久91精品国产一区二区三区|