昨夜跳舞回来没事可做,又睡不着。在网络游荡了好一会儿也不知做什么是好,于是玩起连连看来。我眼神差的很,玩到零晨三点都还没过通关,不是时间不够就是生命不够,心有不甘呐。便产生了修理它的念头,正好很久没写程序了,用它来练练手也好。
     今晚一洗完澡就动手开工了,程序是对我等菜鸟或是上了年纪的人玩连连看设计的。它可以修改生命、提示、分数和停止计时。程序只对这个llk1.GIF系列的连连看有效。下面是源程序。程序效果如图:

llk.GIF

 


下载:http://www.cnitblog.com/Files/walaog/llk.rar 

#include <windows.h>
#include "resource.h"
//    author:gym
//   mail: 
net_gym@163.com
//   QQ:41581106
//   date: 2006/12/3  新疆
//   注:若欲转载,请保持代码与此段完整性.
//  并注明出处:
http://www.cnitblog.com/walaog
 #define TIMEID 1
 HWND llk = NULL;
BOOL CALLBACK  DlgProc (HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE preHinstance, char* comline,int show)
{
    DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,(DLGPROC)DlgProc);
 
 return 0;
}

BOOL CALLBACK  DlgProc (HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
   
    switch (uMsg)
 {
 case WM_INITDIALOG:
  SetTimer(hDlg,TIMEID,500,NULL);
  break;
 case WM_TIMER:
  {
   if (!llk)
   {
    int i;
   char title[6][12]={ "连连看",
                                  "连连看 v3.9",
                                  "连连看 v4.0",
                                  "连连看 v3.4",
                                 "连连看 v2.0",
                                  "连连看 v3.0" };
     for(i=0; i<6; ++i)
    {
    llk = FindWindow("#32770",title[i]);
    if (llk)
     break;
    }
   }
   
   if (llk)
   {
       RECT llk_rect;
    RECT Dlg_rect;
    int position1;
    int position2;
    GetWindowRect(hDlg, & Dlg_rect);
    GetWindowRect(llk , & llk_rect);
    position1 = (llk_rect.right - llk_rect.left) / 2;
    position1 += llk_rect.left ;
    position2 = (Dlg_rect.right - Dlg_rect.left) / 2;
   SetWindowPos(hDlg,HWND_TOPMOST,position1-position2,llk_rect.top,0,0,SWP_NOSIZE);
  
   if (position1 < -400000)
   {
    int x = GetSystemMetrics(SM_CXSCREEN) / 2;
    int y = GetSystemMetrics(SM_CYSCREEN) / 2;
    SetWindowPos(hDlg,HWND_TOPMOST,x-160,y-30,0,0,SWP_NOSIZE);
    llk = NULL;
   }
   }
  }
  break;
 case WM_CLOSE:
  KillTimer(hDlg,TIMEID);
  EndDialog(hDlg,0);
  break;
 case WM_COMMAND:
  switch (wParam)
  {
  case IDCOK:
   {
   HANDLE ProHandle;
   DWORD ProcessID;
   
    if (llk)
    {
    int life;
    int tip;
       int score;
    BOOL success;
      life = GetDlgItemInt(hDlg,IDC_EDIT1,&success,TRUE);
      tip = GetDlgItemInt(hDlg,IDC_EDIT2,&success,TRUE);
      score = GetDlgItemInt(hDlg,IDC_EDIT3,&success,TRUE);
    GetWindowThreadProcessId(llk,&ProcessID);
             ProHandle = OpenProcess(PROCESS_ALL_ACCESS,TRUE, ProcessID);//VM_WRITE   FALSE
    if (!life )
    WriteProcessMemory(ProHandle,0x12FEB8,&life,sizeof(life),NULL); 
    if (!tip)
    WriteProcessMemory(ProHandle,0x12FEBC,&tip,sizeof(tip),NULL); 
    if (!score)
    WriteProcessMemory(ProHandle,0x12FEC0,&score,sizeof(score),NULL); 
    CloseHandle(ProHandle); 
    }
   
   }
   break;
  case IDC_TIME:
   {
    
   if (llk)
    KillTimer(llk,2);
   }
   break;
  
  }
  break;
 }
  return 0;
}

 

posted on 2006-12-04 01:57 gym 阅读(587) 评论(6)  编辑 收藏 引用