www.pudn.com > QQdizhu.rar > DemonLLKWG.cpp


/*------------------------------------------------------- 
/*  《加密与解密》 第6章 加密算法    
/*   ElGamal算法,签名算法在序列保护中的应用 
/*  (c) www.PEDIY.com  by 段钢 2002.12 
-------------------------------------------------------*/ 
/*-----------------------------------------------------------*/ 
/* 本程序调用了MIRACL v4.74 大数运算库,编译前请参考MIRACL目 */ 
/* 录里的说明文件MSVISUAL.TXT安装 MIRACL 。                  */ 
/* 各命令用法参考MIRACL目录里的MANUAL.DOC                    */ 
/* MIRACL官方主页:http://indigo.ie/~mscott/                 */ 
/*-----------------------------------------------------------*/ 
 
//////////////////////////////////////////////////////////////////// 
 
#include  
#include  
//#include "md5c.c" 
//#include "global.h" 
//#include  
#include  
#include "resource.h" 
 
/*-------------------------------------------------------------*/ 
/* 定义子程序与全局变量、常量                                  */ 
/*-------------------------------------------------------------*/ 
//连连看////////////////////////////////////////// 
char lzBuff[50]; 
 
////////////////////////////////////////////////// 
#define ID_READYTIMER    1 
#define ID_DOWNTIMER    2 
HINSTANCE	hInst; 
 
/*-------------------------------------------------------------*/ 
/*  函数声明                                                   */ 
/*-------------------------------------------------------------*/ 
BOOL    CALLBACK MainDlg   (HWND, UINT, WPARAM, LPARAM) ; 
BOOL    CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ; 
 
/*-------------------------------------------------------------*/ 
/* WinMain - 基于WIN32的程序的入口                            */ 
/*-------------------------------------------------------------*/ 
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) 
{ 
	InitCommonControls(); 
	hInst=hInstance; 
	HANDLE hApp = CreateMutex(NULL,FALSE,"DemonQQ斗地主刷分外挂"); 
 if(GetLastError() == ERROR_ALREADY_EXISTS) 
 { 
  MessageBox(NULL,TEXT("DemonQQ斗地主刷分外挂已经运行!"),TEXT("提示"),NULL); 
  return FALSE; 
 } 
 //ShellExecute(NULL, NULL, "http://wg258.com", NULL, NULL, SW_SHOWNORMAL); 
	DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, (DLGPROC)MainDlg,0); 
	return 0; 
} 
 
/*-------------------------------------------------------------*/ 
/* AboutDlgProc - 关于窗口                                    */ 
/*-------------------------------------------------------------*/ 
 
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,  
                            WPARAM wParam, LPARAM lParam) 
{ 
	switch (message) 
	{ 
		case  WM_LBUTTONDOWN: 
			PostMessage(hDlg, WM_NCLBUTTONDOWN, HTCAPTION, 0); 
			return TRUE ; 
         
		case WM_COMMAND : 
			switch (LOWORD (wParam))  		             
			{ 
				case IDOK : 
				case IDCANCEL : 
				EndDialog (hDlg, 0) ; 
				return TRUE ; 
			} 
			 break ; 
	 } 
     return FALSE ; 
} 
 
 
/*-------------------------------------------------------------*/ 
/*  MainDlg - 主对话窗口                                      */ 
/*-------------------------------------------------------------*/ 
BOOL CALLBACK MainDlg(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{	 
	static HWND hmain[6],hParent[6],hButton[6][20],htmp1,htmp2,htmp3,htmp4,htmp5,htmp6,htmp7,htmp8,hDeskTop; 
	static int i,j,readydelay=500,downdelay=500; 
	static RECT rect; 
/*********************************************************************************** 
hmain[6]游戏主窗口,hParent[6]关键句柄 
hButton[6][20]游戏中用到的按纽 
hButton[0][3]开始 
hButton[0][2]三分 
hButton[0][7]出牌 
 
hButton[0][6]不叫 
hButton[0][5]不出 
************************************************************************************/ 
	switch (message) 
	{    
	case WM_TIMER: 
		switch(wParam) { 
			case ID_READYTIMER: 
 
			/* 
			htmp1=FindWindowEx(hDeskTop,0,"#32770","俄罗斯提示框"); 
			while (htmp1)  
			{ 
					htmp2=FindWindowEx(htmp1,0,"Button","确定"); 
					PostMessage(htmp2,BM_CLICK,NULL,NULL); 
					PostMessage(htmp2,BM_CLICK,NULL,NULL); 
					htmp1=FindWindowEx(hDeskTop,htmp1,"#32770","俄罗斯提示框"); 
			} 
			*/ 
			htmp1=FindWindowEx(hDeskTop,0,"#32770","提示信息"); 
			if(htmp1) 
			{ 
				while (htmp1)  
				{ 
					htmp2=FindWindowEx(htmp1,0,"Button","确定"); 
					PostMessage(htmp2,BM_CLICK,0,0); 
					PostMessage(htmp2,BM_CLICK,0,0); 
					htmp1=FindWindowEx(hDeskTop,htmp1,"#32770","提示信息"); 
				} 
				return 0; 
			} 
 
				for(i=0;i<3;i++) 
				{ 
					if(hmain[i]) 
					{ 
						//PostMessage(hmain[i],WM_LBUTTONDOWN,1,0X01DE02DC); 
						//PostMessage(hmain[i],WM_LBUTTONUP,0,0X01DE02DC); 
						//PostMessage(hmain[i],WM_SETFOCUS,0,0); 
						//PostMessage(hmain[i],WM_KEYDOWN,VK_F2,0); 
						//PostMessage(hParent[i],BN_CLICKED ,GetDlgCtrlID(hButton[i][3]),(LONG)hButton[i][3]); 
							//开始 
						if(IsWindowVisible(hButton[i][3])) 
							PostMessage(hButton[i][3],BM_CLICK ,0,0);	 
						 
//							PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,MAKELONG(562,665)); 
//							PostMessage(hParent[i],WM_LBUTTONUP,0x1,MAKELONG(562,665)); 
							//PostMessage(hButton[i][3],WM_LBUTTONDOWN,0x1,0X70023); 
							//PostMessage(hButton[i][3],WM_LBUTTONUP,0x0,0X70023); 
 
						 
					} 
					else 
						break; 
				} 
				break; 
			case ID_DOWNTIMER: 
 
				for(i=0;i<3;i++) 
				{ 
					if(hmain[i]) 
					{ 
//						PostMessage(hButton[i][6],WM_LBUTTONDOWN,0x1,0X70023); 
//						PostMessage(hButton[i][6],WM_LBUTTONUP,0x0,0X70023); 
						if(i==0) 
						{ 
							htmp1=FindWindowEx(hDeskTop,0,"#32770","提示信息"); 
							if(htmp1) 
							{ 
								while (htmp1)  
								{ 
									htmp2=FindWindowEx(htmp1,0,"Button","确定"); 
									PostMessage(htmp2,BM_CLICK,0,0); 
									PostMessage(htmp2,BM_CLICK,0,0); 
				 
							 
									htmp1=FindWindowEx(hDeskTop,htmp1,"#32770","提示信息"); 
								} 
									for(j=198;j<600;j+=15) 
									{ 
										PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,MAKELONG(j,540)); 
										//Sleep(100) 
									} 
									return 0; 
 
							} 
							 
							for(j=198;j<600;j+=15) 
							{ 
								PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,MAKELONG(j,540)); 
								//Sleep(100) 
							} 
							//出牌 
							PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,0X02510169);//选牌 
							PostMessage(hParent[i],WM_LBUTTONUP,0x0,0X02510169);//选牌 
						//	if(IsWindowVisible(hButton[i][7])) 
						//		PostMessage(hButton[i][7],BM_CLICK ,0,0);	 
 
							PostMessage(hParent[i],WM_RBUTTONDOWN,0x1,0X02510169);//选牌 
							PostMessage(hParent[i],WM_RBUTTONUP,0x0,0X02510169);//选牌 
							/* 
							PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,0X02510169);//选牌 
							PostMessage(hParent[i],WM_LBUTTONUP,0x0,0X02510169);//选牌 
							PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,0X02510169);//选牌 
							PostMessage(hParent[i],WM_LBUTTONUP,0x0,0X02510169);//选牌 
							PostMessage(hParent[i],WM_RBUTTONDOWN,0x1,0X02510169);//选牌 
							PostMessage(hParent[i],WM_RBUTTONUP,0x0,0X02510169);//选牌 
							*/ 
 
							//Sleep(500); 
							//出牌 
							//PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,MAKELONG(367,500)); 
							//PostMessage(hParent[i],WM_LBUTTONUP,0x0,MAKELONG(367,500)); 
													 
							//叫3分 
							if(IsWindowVisible(hButton[i][2])) 
								PostMessage(hButton[i][2],BM_CLICK ,0,0);	 
							//PostMessage(hParent[i],WM_LBUTTONDOWN,0x1,MAKELONG(411,500)); 
							//PostMessage(hParent[i],WM_LBUTTONUP,0x0,MAKELONG(411,500)); 
 
							/* 
 
							PostMessage(hButton[i][7],WM_LBUTTONDOWN,0x1,0X70023); 
							PostMessage(hButton[i][7],WM_LBUTTONUP,0x0,0X70023); 
							PostMessage(hButton[i][2],WM_LBUTTONDOWN,0x1,0X70023); 
							PostMessage(hButton[i][2],WM_LBUTTONUP,0x0,0X70023); 
							*/ 
							//PostMessage(hParent[i],BN_CLICKED ,GetDlgCtrlID (hButton[i][7]),(LONG)hButton[i][7]); 
							//PostMessage(hButton[i][7],BM_CLICK ,0,0); 
							//PostMessage(hButton[i][2],BM_CLICK ,0,0); 
							//PostMessage(hParent[i],BN_CLICKED ,GetDlgCtrlID (hButton[i][2]),(LONG)hButton[i][2]); 
						} 
						else 
						{ 
							//不叫 
							if(IsWindowVisible(hButton[i][6])) 
								PostMessage(hButton[i][6],BM_CLICK ,0,0); 
							//不出 
							if(IsWindowVisible(hButton[i][5])) 
							{ 
								PostMessage(hButton[i][5],BM_CLICK ,0,0); 
							} 
						} 
					} 
					else 
						break; 
				} 
				break; 
		} 
		return 0; 
	case WM_HOTKEY: 
		switch((UINT) HIWORD(lParam)) 
		{ 
		case VK_F8: 
			for(i=1;i<6;i++) 
			{ 
				if(!hmain[i]) 
				{ 
					SendMessage(hmain[i],WM_SETFOCUS,0,0); 
					PostMessage(hmain[i],WM_KEYDOWN,0x00000028,0X1); 
				} 
				else 
					break; 
				//PostMessage(hmain[i],WM_LBUTTONDOWN,1,MAKELONG(733,486)); 
				//PostMessage(hmain[i],WM_LBUTTONUP,0,MAKELONG(733,486)); 
				//PostMessage(hmain[i],WM_KEYDOWN,VK_F2,0X0); 
			} 
			//PostMessage(hmain[0],WM_LBUTTONDOWN,1,MAKELONG(733,486)); 
			//PostMessage(hmain[0],WM_LBUTTONUP,0,MAKELONG(733,486)); 
			PostMessage((HWND)0X204DA,WM_KEYDOWN,VK_F2,0); 
			break; 
		case VK_F9: 
			break; 
		} 
 
			return 0; 
		 
	case WM_CLOSE: 
		EndDialog(hWnd,0); 
		break; 
 
	case WM_HSCROLL: 
		if((HWND) lParam==GetDlgItem (hWnd, IDC_READYDELAY)) 
		{ 
			readydelay=SendMessage(GetDlgItem (hWnd, IDC_READYDELAY),TBM_GETPOS,0,0); 
			wsprintf (lzBuff, "%d",readydelay); 
			SetDlgItemText (hWnd, IDC_TEXTREADYDELAY, lzBuff); 
			if(KillTimer(hWnd,ID_READYTIMER)) 
				SetTimer (hWnd, ID_READYTIMER,readydelay, NULL); 
		} 
		else 
		{ 
			downdelay=SendMessage(GetDlgItem (hWnd, IDC_DOWNDELAY),TBM_GETPOS,0,0); 
			wsprintf (lzBuff, "%d",downdelay); 
			SetDlgItemText (hWnd, IDC_TEXTDOWNDELAY, lzBuff); 
			if(KillTimer(hWnd,ID_DOWNTIMER)) 
				SetTimer (hWnd, ID_DOWNTIMER,downdelay, NULL); 
		} 
 
		break; 
	case WM_COMMAND: 
		switch (LOWORD(wParam)) 
		{  
		case IDC_AUTOPLAY: 
			  if(SendMessage (GetDlgItem (hWnd, IDC_AUTOPLAY), BM_GETCHECK, 0, 0)) 
			  { 
				hmain[0]=0; 
				hmain[0]=FindWindowEx(hDeskTop,0,NULL,"斗地主"); 
/* 
				htmp1=FindWindowEx(hmain[0],0,NULL,NULL); 
				htmp1=FindWindowEx(htmp1,0,"Button",NULL); 
 
			_itoa((int)hmain[0],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
*/ 
//找主窗口句柄  
				for(i=0;i<6;i++) 
				{ 
					while (hmain[i]) { 
						htmp1=FindWindowEx(hmain[i],0,"#32770",""); 
						htmp2=FindWindowEx(htmp1,0,"Afx:400000:0",""); 
						htmp3=FindWindowEx(htmp1,htmp2,"Afx:400000:0",""); 
						htmp4=FindWindowEx(htmp1,htmp3,"Afx:400000:0",""); 
						if(htmp1&&htmp2&&htmp3&&htmp1) 
							break; 
						else 
							hmain[i]=FindWindowEx(hDeskTop,hmain[i],NULL,"斗地主"); 
					} 
					hParent[i]=htmp2; 
					hmain[i+1]=FindWindowEx(hDeskTop,hmain[i],NULL,"斗地主");				 
					//hButtonjf[i]=htmp2; 
					if(!hmain[i+1]) 
						break;					 
					 
				} 
			  for(i=0;i<6;i++) 
			  { 
 
				  if(hmain[i]) 
				  { 
					  htmp1=FindWindowEx(hmain[i],0,"#32770",""); 
					  htmp1=FindWindowEx(htmp1,0,"Afx:400000:0",""); 
					  hButton[i][0]=FindWindowEx(htmp1,0,"Button",""); 
					  for(j=1;j<11;j++) 
					  { 
						  hButton[i][j]=FindWindowEx(htmp1,hButton[i][j-1],"Button",""); 
						  if(!hButton[i][j]) 
							  break; 
						  /* 
							if(j==3) 
							{ 
								_itoa((int)hButton[i][j],lzBuff, 16); 
								MessageBox(NULL,lzBuff,"",NULL); 
							} 
						*/ 
//						  _itoa((int)hButton[i][j],lzBuff, 16); 
//						  MessageBox(NULL,lzBuff,"",NULL); 
					  } 
				  } 
 
			  } 
 
/* 
			_itoa((int)hmain[0],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
			_itoa((int)hmain[1],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
			_itoa((int)hmain[2],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
			_itoa((int)hmain[3],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
			_itoa((int)hmain[4],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
			_itoa((int)hmain[5],lzBuff, 16); 
			MessageBox(NULL,lzBuff,"",NULL); 
*/ 
				SetTimer (hWnd, ID_DOWNTIMER,downdelay, NULL); 
				SetTimer (hWnd, ID_READYTIMER,readydelay, NULL); 
			  } 
			  else 
			  { 
				  KillTimer(hWnd,ID_DOWNTIMER); 
				  KillTimer(hWnd,ID_READYTIMER); 
			  } 
//			_itoa((int)hEdit[0],lzBuff, 16); 
//			MessageBox(NULL,lzBuff,"",NULL); 
					 
			//hmain1=htmp2; 
		//	_itoa((int)i,lzBuff, 10); 
		//	MessageBox(NULL,lzBuff,"",NULL); 
/* 
			hmain2=FindWindowEx(hDeskTop,hmain1,"#32770",""); 
			while (hmain2) { 
				htmp1=FindWindowEx(hmain2,0,"AfxOleControl42",""); 
				htmp2=FindWindowEx(hmain2,0,"Edit",""); 
				htmp3=FindWindowEx(hmain2,htmp2,"Edit",""); 
				htmp4=FindWindowEx(hmain2,htmp3,"Static",""); 
				if(htmp1&&htmp2&&htmp3&&htmp1) 
					break; 
				else 
					hmain2=FindWindowEx(hDeskTop,hmain2,"#32770",""); 
			} 
			hmain2=htmp2; 
			*/ 
//找挂机需要用的句柄 
//					  _itoa((int)hmain[0],lzBuff, 16); 
//					  MessageBox(NULL,lzBuff,"",NULL); 
//					  htmp1=FindWindowEx(hmain[0],0,"#32770",""); 
//					  _itoa((int)htmp1,lzBuff, 16); 
//					  MessageBox(NULL,lzBuff,"",NULL); 
 
 
 
			break; 
		case IDC_ABOUT : 
			//SendMessage(hmain[0],WM_SETFOCUS,0,0); 
			//SetForegroundWindow(hmain1); 
			//SetActiveWindow(hmain1); 
			//PostMessage(hmain[0],WM_KEYDOWN,0x00000053,0X00180001); 
			/* 
			PostMessage(hmain1,WM_KEYDOWN,0x0000004F,0X00180001); 
			PostMessage(hmain1,WM_CHAR,0x0000006F,0X00180001); 
			PostMessage(hmain1,WM_KEYUP,0x0000004F,0Xc0180001); 
			PostMessage(hmain1,WM_KEYDOWN,0x0000004F,0X00180001); 
			PostMessage(hmain1,WM_CHAR,0x0000006F,0X00180001); 
			PostMessage(hmain1,WM_KEYUP,0x0000004F,0Xc0180001); 
						PostMessage(hmain1,WM_KEYDOWN,0x0000004F,0X00180001); 
			PostMessage(hmain1,WM_CHAR,0x0000006F,0X00180001); 
			PostMessage(hmain1,WM_KEYUP,0x0000004F,0Xc0180001); 
						PostMessage(hmain1,WM_KEYDOWN,0x0000004F,0X00180001); 
			PostMessage(hmain1,WM_CHAR,0x0000006F,0X00180001); 
			PostMessage(hmain1,WM_KEYUP,0x0000004F,0Xc0180001); 
*/ 
			DialogBox (hInst, MAKEINTRESOURCE (IDD_ABOUT), hWnd, AboutDlgProc) ; 
			break;	 
 
		case IDC_EXIT: 
			KillTimer(hWnd,ID_DOWNTIMER); 
			KillTimer(hWnd,ID_READYTIMER); 
			PostQuitMessage(0); 
		} 
		break; 
 
	case WM_INITDIALOG: 
		SendMessage(GetDlgItem (hWnd, IDC_READYDELAY),TBM_SETRANGE,1,(LPARAM) MAKELONG(50,1000)); 
		SendMessage(GetDlgItem (hWnd, IDC_READYDELAY),TBM_SETPAGESIZE,0,50); 
		SendMessage(GetDlgItem (hWnd, IDC_READYDELAY),TBM_SETLINESIZE,0,5); 
		SendMessage(GetDlgItem (hWnd, IDC_READYDELAY),TBM_SETPOS,1,readydelay); 
			wsprintf (lzBuff, "%d",readydelay); 
			SetDlgItemText (hWnd, IDC_TEXTREADYDELAY, lzBuff); 
		SendMessage(GetDlgItem (hWnd, IDC_DOWNDELAY),TBM_SETRANGE,1,(LPARAM) MAKELONG(50,1000)); 
		SendMessage(GetDlgItem (hWnd, IDC_DOWNDELAY),TBM_SETPAGESIZE,0,50); 
		SendMessage(GetDlgItem (hWnd, IDC_DOWNDELAY),TBM_SETLINESIZE,0,5); 
		SendMessage(GetDlgItem (hWnd, IDC_DOWNDELAY),TBM_SETPOS,1,downdelay); 
			wsprintf (lzBuff, "%d",downdelay); 
			SetDlgItemText (hWnd, IDC_TEXTDOWNDELAY, lzBuff); 
				SendMessage(hWnd,WM_SETICON,(WPARAM) 1,(LPARAM) LoadIconA(hInst,MAKEINTRESOURCE(IDI_ICON)));   
		GetWindowRect(hWnd,&rect); 
		SetWindowPos(hWnd,HWND_TOPMOST,0,0,rect.right-rect.left,rect.bottom-rect.top,SWP_NOMOVE|SWP_SHOWWINDOW); 
		break; 
	} 
	return 0; 
}