|
//首先,要得到对对碰的窗口,这个比较简单,可以用::FindWindow来实现,具体代码如下:
CQQGameToolDlg * dlg = (CQQGameToolDlg *)parm;//这里因为这个函数是作为一个线程来做的,所以得传递一个参数过来
dlg->hWnd = ::FindWindow(NULL,"QQ对对碰");//查询
if(dlg->hWnd == NULL)
dlg->hWnd = ::FindWindow(NULL,"对对碰");//好像窗口标题有时还不同,不知道是不是我自己搞错了
if(dlg->hWnd == NULL)
{
AfxMessageBox("未找到对对碰窗口,请首先启动对对碰!");
dlg->SetDlgItemText(IDC_BUTTON1,"启动");
dlg->m_bStart = false;
return 0;
}
dlg->hDc = ::GetDC(dlg->hWnd);
//下边的函数是为了获取每一个方格的数据的
COLORREF * CQQGameToolDlg::GetRectData(int x, int y)
{
COLORREF * color;
color = new COLORREF[48];
int count = 0;
for(int i=(x-1)*48 + m_posX;i<(x-1)*48 + m_posX + 48;i++)
{
color[count++] = GetPixel(hDc,i,(y-1)*48 + m_posY + 20);
//如果是棋盘的底色,则忽略
if(color[count-1] == 0x00efaa5a || color[count-1] == 0x00f7c384)
color[count-1] = 0x000000;
}
return color;
}
//下边的函数获取每个格子的特征点的数据:
//在这里我们只取六个特征点进行存储,把六个特征点的十六进制保存起来。
void CQQGameToolDlg::GetCode()
{
for(int i=1;i<=8;i++)
for(int j=1;j<=8;j++)
{
CString str;
COLORREF * c;
c = GetRectData(i,j);
str.Format("%x%x%x%x%x%c",c[25],c[26],c[27],c[28],c[29],c[30]);
da |
|