ddp2_wgDlg.cpp
上传用户:asdl8888
上传日期:2022-05-12
资源大小:1858k
文件大小:7k
源码类别:

外挂编程

开发平台:

Visual C++

  1. // ddp2_wgDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ddp2_wg.h"
  5. #include "ddp2_wgDlg.h"
  6. #include "mirror.h"
  7. #include "clearone.h"
  8. #include "updata.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CAboutDlg dialog used for App About
  16. class CAboutDlg : public CDialog
  17. {
  18. public:
  19. CAboutDlg();
  20. // Dialog Data
  21. //{{AFX_DATA(CAboutDlg)
  22. enum { IDD = IDD_ABOUTBOX };
  23. //}}AFX_DATA
  24. // ClassWizard generated virtual function overrides
  25. //{{AFX_VIRTUAL(CAboutDlg)
  26. protected:
  27. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  28. //}}AFX_VIRTUAL
  29. // Implementation
  30. protected:
  31. //{{AFX_MSG(CAboutDlg)
  32. //}}AFX_MSG
  33. DECLARE_MESSAGE_MAP()
  34. };
  35. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  36. {
  37. //{{AFX_DATA_INIT(CAboutDlg)
  38. //}}AFX_DATA_INIT
  39. }
  40. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialog::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CAboutDlg)
  44. //}}AFX_DATA_MAP
  45. }
  46. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  47. //{{AFX_MSG_MAP(CAboutDlg)
  48. // No message handlers
  49. //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CDdp2_wgDlg dialog
  53. CDdp2_wgDlg::CDdp2_wgDlg(CWnd* pParent /*=NULL*/)
  54. : CDialog(CDdp2_wgDlg::IDD, pParent)
  55. {
  56. //{{AFX_DATA_INIT(CDdp2_wgDlg)
  57. m_c = _T("");
  58. m_cs = 0;
  59. //}}AFX_DATA_INIT
  60. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  61. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  62. }
  63. void CDdp2_wgDlg::DoDataExchange(CDataExchange* pDX)
  64. {
  65. CDialog::DoDataExchange(pDX);
  66. //{{AFX_DATA_MAP(CDdp2_wgDlg)
  67. DDX_Text(pDX, IDC_EDIT1, m_c);
  68. DDX_Text(pDX, IDC_EDIT2, m_cs);
  69. //}}AFX_DATA_MAP
  70. }
  71. BEGIN_MESSAGE_MAP(CDdp2_wgDlg, CDialog)
  72. //{{AFX_MSG_MAP(CDdp2_wgDlg)
  73. ON_WM_SYSCOMMAND()
  74. ON_WM_PAINT()
  75. ON_WM_QUERYDRAGICON()
  76. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  77. //}}AFX_MSG_MAP
  78. END_MESSAGE_MAP()
  79. /////////////////////////////////////////////////////////////////////////////
  80. // CDdp2_wgDlg message handlers
  81. BOOL CDdp2_wgDlg::OnInitDialog()
  82. {
  83. CDialog::OnInitDialog();
  84. // Add "About..." menu item to system menu.
  85. // IDM_ABOUTBOX must be in the system command range.
  86. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  87. ASSERT(IDM_ABOUTBOX < 0xF000);
  88. CMenu* pSysMenu = GetSystemMenu(FALSE);
  89. if (pSysMenu != NULL)
  90. {
  91. CString strAboutMenu;
  92. strAboutMenu.LoadString(IDS_ABOUTBOX);
  93. if (!strAboutMenu.IsEmpty())
  94. {
  95. pSysMenu->AppendMenu(MF_SEPARATOR);
  96. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  97. }
  98. }
  99. // Set the icon for this dialog.  The framework does this automatically
  100. //  when the application's main window is not a dialog
  101. SetIcon(m_hIcon, TRUE); // Set big icon
  102. SetIcon(m_hIcon, FALSE); // Set small icon
  103. // TODO: Add extra initialization here
  104. return TRUE;  // return TRUE  unless you set the focus to a control
  105. }
  106. void CDdp2_wgDlg::OnSysCommand(UINT nID, LPARAM lParam)
  107. {
  108. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  109. {
  110. CAboutDlg dlgAbout;
  111. dlgAbout.DoModal();
  112. }
  113. else
  114. {
  115. CDialog::OnSysCommand(nID, lParam);
  116. }
  117. }
  118. // If you add a minimize button to your dialog, you will need the code below
  119. //  to draw the icon.  For MFC applications using the document/view model,
  120. //  this is automatically done for you by the framework.
  121. void CDdp2_wgDlg::OnPaint() 
  122. {
  123. if (IsIconic())
  124. {
  125. CPaintDC dc(this); // device context for painting
  126. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  127. // Center icon in client rectangle
  128. int cxIcon = GetSystemMetrics(SM_CXICON);
  129. int cyIcon = GetSystemMetrics(SM_CYICON);
  130. CRect rect;
  131. GetClientRect(&rect);
  132. int x = (rect.Width() - cxIcon + 1) / 2;
  133. int y = (rect.Height() - cyIcon + 1) / 2;
  134. // Draw the icon
  135. dc.DrawIcon(x, y, m_hIcon);
  136. }
  137. else
  138. {
  139. CDialog::OnPaint();
  140. }
  141. }
  142. // The system calls this to obtain the cursor to display while the user drags
  143. //  the minimized window.
  144. HCURSOR CDdp2_wgDlg::OnQueryDragIcon()
  145. {
  146. return (HCURSOR) m_hIcon;
  147. }
  148. void CDdp2_wgDlg::OnButton1() 
  149. {
  150. POINT ph1,ph2;
  151. bool bl=false;
  152. byte x,y,t1,a,b;
  153. byte r1;
  154. byte chessdata[8][25];
  155. byte qp[8][25];
  156.     
  157. for(x=0;x<8;x++)
  158. {
  159. for(y=0;y<7;y++)
  160. {
  161. //更新数据
  162. HWND gameh=::FindWindow(NULL,"对对碰角色版");
  163. DWORD processid;
  164. ::GetWindowThreadProcessId(gameh,&processid);
  165. HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,processid);
  166. DWORD byread;
  167. LPCVOID pbase=(LPCVOID)0x0047f944;
  168. LPVOID mbuffer=(LPVOID)&chessdata;
  169. ::ReadProcessMemory(processH,pbase,mbuffer,200,&byread);
  170. //数组赋值
  171.     mirror(qp,chessdata);
  172.   
  173. //数据移位 
  174.  t1=qp[x][y];qp[x][y]=qp[x][y+1];qp[x][y+1]=t1;
  175. //数据检测
  176.  for(a=0;a<8;a++)
  177.  {
  178.  r1=1;
  179.  for(b=0;b<7;b++)
  180.  {  
  181. if (qp[a][b]==qp[a][b+1])
  182. {
  183. r1+=1;
  184. if(r1>=3)
  185. {
  186. m_cs=1;UpdateData(false);
  187. ph1.x=x;ph1.y=y;ph2.x=x;ph2.y=y+1;
  188. clearone(ph1,ph2);
  189. goto end;
  190. }
  191. }
  192. else
  193. {r1=1;m_cs=7;UpdateData(false);}
  194.  }
  195.  }
  196.  for(b=0;b<8;b++)
  197.  {
  198.  r1=1;
  199.  for(a=0;a<7;a++)
  200.  {  
  201. if (qp[a][b]==qp[a+1][b])
  202. {
  203. r1+=1;
  204. if(r1>=3)
  205. {
  206. m_cs=2;UpdateData(false);
  207. ph1.x=x;ph1.y=y;ph2.x=x;ph2.y=y+1;
  208. clearone(ph1,ph2);
  209. goto end;
  210. }
  211. }
  212. else
  213. {r1=1;m_cs=7;UpdateData(false);}
  214.  }
  215.  }
  216.   }
  217.  
  218.  }
  219. //////////////////////////////////////////////////////////////////////////////
  220. for(y=0;y<8;y++)
  221. {
  222. for(x=0;x<7;x++)
  223. {
  224. //更新数据
  225. HWND gameh=::FindWindow(NULL,"对对碰角色版");
  226. DWORD processid;
  227. ::GetWindowThreadProcessId(gameh,&processid);
  228. HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,processid);
  229. DWORD byread;
  230. LPCVOID pbase=(LPCVOID)0x0047f944;
  231. LPVOID mbuffer=(LPVOID)&chessdata;
  232. ::ReadProcessMemory(processH,pbase,mbuffer,200,&byread);
  233. //数组赋值
  234.     mirror(qp,chessdata);
  235.   
  236. //数据移位 
  237.  t1=qp[x][y];qp[x][y]=qp[x+1][y];qp[x+1][y]=t1;
  238. //数据检测
  239.  for(a=0;a<8;a++)
  240.  {
  241.  r1=1;
  242.  for(b=0;b<7;b++)
  243.  {  
  244. if (qp[a][b]==qp[a][b+1])
  245. {
  246. r1+=1;
  247. if(r1>=3)
  248. {
  249. m_cs=3;UpdateData(false);
  250. ph1.x=x;ph1.y=y;ph2.x=x+1;ph2.y=y;
  251. clearone(ph1,ph2);
  252. goto end;
  253. }
  254. }
  255. else
  256. {r1=1;m_cs=7;UpdateData(false);}
  257.  }
  258.  }
  259.  for(b=0;b<8;b++)
  260.  {
  261.  r1=1;
  262.  for(a=0;a<7;a++)
  263.  {  
  264. if (qp[a][b]==qp[a+1][b])
  265. {
  266. r1+=1;
  267. if(r1>=3)
  268. {
  269. m_cs=4;UpdateData(false);
  270. ph1.x=x;ph1.y=y;ph2.x=x+1;ph2.y=y;
  271. clearone(ph1,ph2);
  272. goto end;
  273. }
  274. }
  275. else
  276. {r1=1;m_cs=7;UpdateData(false);}
  277.  }
  278.  }
  279.   }
  280.  
  281.  }
  282. //////////////////////////////////////////////////////////////////////////
  283. end:
  284. //显示棋盘数据
  285. char buf;
  286. m_c="";
  287. for(x=0;x<8;x++)
  288. {
  289. for(y=0;y<8;y++)
  290. {
  291. itoa(qp[x][y],&buf,16);
  292. m_c+=buf;
  293. m_c+=" ";
  294.  }
  295. m_c+="rn";
  296.   
  297. }
  298.  UpdateData(false);
  299.  
  300. }