天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > QQ找茬辅助器

QQ找茬辅助器

时间:2023-10-07 13:38:30

相关推荐

QQ找茬辅助器

直接正题。

软件需求:给定2张相似图,找出不同处。

A、从游戏窗口获取需要分析的图片

B、对比2图片,辨别出不同处(用红色表示)

C、点击不同处,并给游戏窗口发送点击事件

下图是游戏截图。可见效果还是可以。

1、获得游戏窗口句柄:

CWnd* pGameWnd = FindWindow( NULL, _T("大家来找茬") );if( !pGameWnd ){MessageBox( _T("FindWindow fail! Please run the game!") );return ;}HDC m_srcdc = ::GetDC( *pGameWnd );

2、截图:

bool getPbuffer(int x, int y,DWORD* buffer){CBitmap bitmap;CDC* srcdc = CDC::FromHandle(m_srcdc);CDC dc;bitmap.CreateCompatibleBitmap(srcdc,m_srcWidth,m_srcHeight);dc.CreateCompatibleDC(srcdc);dc.SelectObject(bitmap);ShowWindow(SW_HIDE);::PostMessage(m_srchWnd,WM_PAINT,0,0);//告诉游戏窗口重绘Sleep(100);//这里sleep是非常有必要的,必须给游戏窗口绘制让出时间dc.BitBlt(0,0,m_srcWidth,m_srcHeight,srcdc,x,y,SRCCOPY);ShowWindow(SW_SHOW);dc.GetCurrentBitmap()->GetBitmapBits(m_srcWidth*m_srcHeight*sizeof(DWORD),buffer);return true;}

3、分析2幅图片:

bool AnalyticPixel(){m_pBuffer1 = new DWORD[m_srcWidth*m_srcHeight];//第一幅图m_pBuffer2 = new DWORD[m_srcWidth*m_srcHeight];//第二幅图ZeroMemory(m_pBuffer1,m_srcWidth*m_srcHeight);getPbuffer(8,192,m_pBuffer1);ZeroMemory(m_pBuffer2,m_srcWidth*m_srcHeight);getPbuffer(517,192,m_pBuffer2);////逐像素比较2图,不同处用红色替换COLORREF* c1 = m_pBuffer1;COLORREF* c2 = m_pBuffer2;bool newdifferent = false;for (int i =0;i<m_srcWidth*m_srcHeight;++i){if (*c1 != *c2){*c1 = RGB(0,0,255);}++c1;++c2;}////将比较后的图片显示出来CBitmap bitmap;bitmap.CreateCompatibleBitmap(GetDC(),m_srcWidth,m_srcHeight);bitmap.SetBitmapBits(m_srcWidth*m_srcHeight*sizeof(DWORD),(void*)m_pBuffer1);CDC dc;dc.CreateCompatibleDC(GetDC());dc.SelectObject(bitmap);GetDC()->BitBlt(0,0,m_srcWidth,m_srcHeight,&dc,0,0,SRCCOPY);return true;}

4、向游戏窗口发送消息:

::PostMessage(m_srchWnd,WM_LBUTTONDOWN,0,MAKELPARAM(point.x+8,point.y+192));//这里加上偏移,毕竟游戏图片不是在(0,0)位置。

当然要是加上 图片切换自动分析 、自动点击 就更完善。能力有限只能做到这步。

如果觉得《QQ找茬辅助器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。