Wang Jeff vor 4 Jahren
Ursprung
Commit
8588596dfa

+ 48 - 0
GameAssist/GameAssist/Assist.cpp

@@ -23,6 +23,7 @@ namespace GAssist
 	std::string g_strGameDir;
 	TCHAR g_szGameApp[MAX_PATH];
 	std::map<byte, byte> vsKey;
+	std::vector<GWnd> g_vtGWnd;
 	int nGameWndType;
 
 	void Init()
@@ -266,6 +267,25 @@ namespace GAssist
 		return dwProcessId;
 	}
 
+	void GetAllProcessId(std::vector<DWORD>& vtPid, LPCTSTR lpProcessName)
+	{
+		vtPid.clear();
+		PROCESSENTRY32	pe32 = { 0 };
+
+		HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+		if (hProcessSnap == NULL) return;
+
+		// 遍历进程;
+		pe32.dwSize = sizeof(PROCESSENTRY32);
+		for (BOOL bRet = Process32First(hProcessSnap, &pe32); bRet; bRet = Process32Next(hProcessSnap, &pe32)) {
+			if (_tcscmp(lpProcessName, pe32.szExeFile) == 0) {
+				vtPid.push_back(pe32.th32ProcessID);
+			}
+		}
+
+		CloseHandle(hProcessSnap);
+	}
+
 	HWND GetProcessMainWnd(const DWORD& dwTagetProcessId, LPCTSTR lpTagetWndName /* = _T("大话水浒") */)
 	{
 		DWORD dwCurPorcessId = 0;
@@ -317,6 +337,34 @@ namespace GAssist
 		return hTagetProcessWnd;
 	}
 
+	void GetAllProcessMainWnd(const std::vector<DWORD>& vtPid, std::vector<GWnd>& vtGWnd)
+	{
+		// 删除已失效的进程;
+		for (std::vector<GWnd>::iterator it = vtGWnd.begin(); it != vtGWnd.end();)
+		{
+			BOOL bExit = FALSE;
+			for (std::vector<DWORD>::const_iterator it_pid = vtPid.begin(); it_pid != vtPid.end(); it_pid++ )
+			{
+				if (*it_pid == it->lProcId)
+					bExit = TRUE;
+			}
+
+			if (!bExit)
+			{
+				it = vtGWnd.erase(it);
+			}
+			else
+			{
+				it++;
+			}
+		}
+
+		for ( std::vector<DWORD>::const_iterator it = vtPid.begin(); it != vtPid.end(); it++ )
+		{
+			HWND hGWnd = GetProcessMainWnd(*it);
+		}
+	}
+
 	HWND GetProcessMainWnd(LPCTSTR lpProcessName /* = _T("Game.exe") */, LPCTSTR lpTagetWndName /* = _T("大话水浒") */)
 	{
 		HWND hTagetWnd = NULL;

+ 28 - 16
GameAssist/GameAssist/Assist.h

@@ -96,32 +96,27 @@ namespace GAssist
 	extern TCHAR g_szGameApp[MAX_PATH];
 	extern int nGameWndType;
 
-	extern void Init();
-	extern void GetGameConfig();
-	extern void ShowLog(const TCHAR* format, ...);
-	extern DWORD FindProcess(IN LPCSTR lpProName);
-	extern HWND GetProMainHwnd(DWORD dwProcessId);
-	extern BOOL CALLBACK EnumChildWindowCallBack(HWND hWnd, LPARAM lParam);
-
-	// 根据进程名获取进程pid;
-	extern DWORD GetProcessId(LPCTSTR lpProcessName = _T("Game.exe"));
-	// 根据进程pid获取进程对应程序的窗口句柄;
-	extern HWND GetProcessMainWnd(const DWORD &dwTagetProcessId, LPCTSTR lpTagetWndName = _T("大话水浒"));
-	extern HWND GetProcessMainWnd(LPCTSTR lpProcessName = _T("Game.exe"), LPCTSTR lpTagetWndName = _T("大话水浒"));
 
-
-	typedef struct __GAME_HWNINFO__{
+	typedef struct __GAME_HWNINFO__ {
 		DWORD			dwId;				// 控件id;
 		std::string		strWinText;			// 控件文本;
 		std::string		strClassName;		// 控件类名;
 		HWND			hwnd;				// 控件句柄;
-	}GameHwnd, *pGameHwnd;
+	}GameHwnd, * pGameHwnd;
 
 	// key_event的virtaul+scan
 	extern std::map<byte, byte> vsKey;
 
 	extern std::vector<GameHwnd> g_vtGameHwnd;
 
+	typedef struct __GWND__
+	{
+		unsigned long       lProcId;				// 进程ID;
+		HWND                hWnd;					// 进程窗口句柄;
+		std::string			strWndText;				// 窗口名称;
+	}GWnd, * pGWnd;
+	extern std::vector<GWnd> g_vtGWnd;
+
 	typedef struct __GAC__ {
 		bool				bLogin;                 // 登录状态;
 		std::string			strAccount;             // 账号;
@@ -144,9 +139,26 @@ namespace GAssist
 			nRoleLevel = 0;
 			wndType = 0;
 		}
-	}GUserInfo, *PGUserInfo;
+	}GUserInfo, * PGUserInfo;
 	extern std::vector<GUserInfo> g_vtGUserInfo;
 
+	extern void Init();
+	extern void GetGameConfig();
+	extern void ShowLog(const TCHAR* format, ...);
+	extern DWORD FindProcess(IN LPCSTR lpProName);
+	extern HWND GetProMainHwnd(DWORD dwProcessId);
+	extern BOOL CALLBACK EnumChildWindowCallBack(HWND hWnd, LPARAM lParam);
+
+	// 根据进程名获取进程pid;
+	extern DWORD GetProcessId(LPCTSTR lpProcessName = _T("Game.exe"));
+	extern void GetAllProcessId(std::vector<DWORD> &vtPid, LPCTSTR lpProcessName = _T("Game.exe"));
+	// 根据进程pid获取进程对应程序的窗口句柄;
+	extern HWND GetProcessMainWnd(const DWORD &dwTagetProcessId, LPCTSTR lpTagetWndName = _T("大话水浒"));
+	extern void GetAllProcessMainWnd(const std::vector<DWORD> &vtPid, std::vector<GWnd> &vtGWnd);
+	extern HWND GetProcessMainWnd(LPCTSTR lpProcessName = _T("Game.exe"), LPCTSTR lpTagetWndName = _T("大话水浒"));
+
+
+
 	// 启动游戏;
 	extern void StartGame(std::string strGameDir, int nStartCount = 5);
 	// 单击事件;

+ 25 - 23
GameAssist/GameAssist/GameAssist.rc

@@ -96,29 +96,31 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
     DEFPUSHBUTTON   "确定",IDOK,7,215,50,14
     PUSHBUTTON      "取消",IDCANCEL,212,215,50,14
-    PUSHBUTTON      "打开",BTN_OPENGAME,7,61,50,14
-    PUSHBUTTON      "截图",IDC_BUTTON2,7,7,50,14
-    PUSHBUTTON      "镜妖",IDC_BUTTON3,7,25,50,14
-    PUSHBUTTON      "周六礼物",IDC_BUTTON4,7,43,50,14
-    PUSHBUTTON      "开宝箱",IDC_BUTTON5,7,97,50,14
-    PUSHBUTTON      "职业大挑战",IDC_BUTTON6,7,79,50,14
-    CONTROL         "召唤兽参战",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,28,50,10
-    PUSHBUTTON      "家园任务",IDC_BUTTON7,7,115,50,14
-    CONTROL         "普通重击",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,28,40,10
-    CONTROL         "镜妖重击",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,28,39,10
-    PUSHBUTTON      "职业大挑战2",IDC_BUTTON8,60,79,50,14
-    PUSHBUTTON      "移动到目标",IDC_BUTTON9,7,140,50,14
-    EDITTEXT        IDC_EDIT1,63,140,40,14,ES_AUTOHSCROLL | ES_NUMBER
-    EDITTEXT        IDC_EDIT2,106,140,40,14,ES_AUTOHSCROLL | ES_NUMBER
-    CONTROL         "打开地图",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,143,43,10
-    EDITTEXT        IDC_EDIT3,62,7,21,14,ES_AUTOHSCROLL | ES_NUMBER
-    EDITTEXT        IDC_EDIT4,85,7,21,14,ES_AUTOHSCROLL | ES_NUMBER
-    EDITTEXT        IDC_EDIT5,118,7,21,14,ES_AUTOHSCROLL | ES_NUMBER
-    EDITTEXT        IDC_EDIT6,141,7,21,14,ES_AUTOHSCROLL | ES_NUMBER
-    LTEXT           "-",IDC_STATIC,109,9,8,8
-    CONTROL         "裁剪",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,9,30,10
-    CONTROL         "攻击技能",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,28,43,10
-    PUSHBUTTON      "复制战斗",IDC_BUTTON10,7,175,50,14
+    PUSHBUTTON      "打开",BTN_OPENGAME,7,87,50,14
+    PUSHBUTTON      "截图",IDC_BUTTON2,7,33,50,14
+    PUSHBUTTON      "镜妖",IDC_BUTTON3,7,51,50,14
+    PUSHBUTTON      "周六礼物",IDC_BUTTON4,7,69,50,14
+    PUSHBUTTON      "开宝箱",IDC_BUTTON5,7,123,50,14
+    PUSHBUTTON      "职业大挑战",IDC_BUTTON6,7,105,50,14
+    CONTROL         "召唤兽参战",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,54,50,10
+    PUSHBUTTON      "家园任务",IDC_BUTTON7,7,141,50,14
+    CONTROL         "普通重击",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,54,40,10
+    CONTROL         "镜妖重击",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,54,39,10
+    PUSHBUTTON      "职业大挑战2",IDC_BUTTON8,60,105,50,14
+    PUSHBUTTON      "移动到目标",IDC_BUTTON9,7,166,50,14
+    EDITTEXT        IDC_EDIT1,63,166,40,14,ES_AUTOHSCROLL | ES_NUMBER
+    EDITTEXT        IDC_EDIT2,106,166,40,14,ES_AUTOHSCROLL | ES_NUMBER
+    CONTROL         "打开地图",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,169,43,10
+    EDITTEXT        IDC_EDIT3,62,33,21,14,ES_AUTOHSCROLL | ES_NUMBER
+    EDITTEXT        IDC_EDIT4,85,33,21,14,ES_AUTOHSCROLL | ES_NUMBER
+    EDITTEXT        IDC_EDIT5,118,33,21,14,ES_AUTOHSCROLL | ES_NUMBER
+    EDITTEXT        IDC_EDIT6,141,33,21,14,ES_AUTOHSCROLL | ES_NUMBER
+    LTEXT           "-",IDC_STATIC,109,35,8,8
+    CONTROL         "裁剪",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,164,35,30,10
+    CONTROL         "攻击技能",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,54,43,10
+    PUSHBUTTON      "复制战斗",IDC_BUTTON10,7,188,50,14
+    COMBOBOX        IDC_COMBO1,9,8,149,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "刷新",IDC_BUTTON11,167,7,50,14
 END
 
 

+ 20 - 0
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -786,6 +786,12 @@ void BattleYS(HWND hWnd, const char* lpszJN)
 
 	// 右键退出;
 	SRAND(300, 500); //必要的等待时间;
+	do
+	{
+		rc = FindMatchIcon(hWnd, "img\\对话框关闭按钮.bmp");
+		Sleep(900);
+	} while (rc.IsRectEmpty() || rc.IsRectNull());
+
 	GAssist::MouseRClick(hWnd);
 }
 
@@ -848,6 +854,12 @@ void BattleOthers(HWND hWnd, const char* lpszName, const char* lpszSkillName)
 	if (_tcsicmp(lpszName, _T("魂武独侠")))
 	{
 		SRAND(300, 500);
+		do
+		{
+			rc = FindMatchIcon(hWnd, "img\\对话框关闭按钮.bmp");
+			Sleep(900);
+		} while (rc.IsRectEmpty() || rc.IsRectNull());
+
 		GAssist::MouseRClick(hWnd);
 	}
 	else
@@ -907,6 +919,7 @@ void CGameAssistDlg::DoDataExchange(CDataExchange* pDX)
 	DDX_Control(pDX, IDC_CHECK2, m_cbZJ);
 	DDX_Control(pDX, IDC_CHECK3, m_cbZJ2);
 	DDX_Control(pDX, IDC_CHECK6, m_cbAggressiveSkill);
+	DDX_Control(pDX, IDC_COMBO1, m_cbGameRole);
 }
 
 BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
@@ -924,6 +937,7 @@ BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
 	ON_BN_CLICKED(IDC_BUTTON8, &CGameAssistDlg::OnBnClickedButton8)
 	ON_BN_CLICKED(IDC_BUTTON9, &CGameAssistDlg::OnBnClickedButton9)
 	ON_BN_CLICKED(IDC_BUTTON10, &CGameAssistDlg::OnBnClickedButton10)
+	ON_BN_CLICKED(IDC_BUTTON11, &CGameAssistDlg::OnBnClickedButton11)
 END_MESSAGE_MAP()
 
 
@@ -1698,3 +1712,9 @@ void CGameAssistDlg::OnBnClickedButton10()
 		DebugLog(_T("end.打镜妖 %d----------------------------\n"));
 
 }
+
+
+void CGameAssistDlg::OnBnClickedButton11()
+{
+	// TODO: 在此添加控件通知处理程序代码
+}

+ 2 - 0
GameAssist/GameAssist/GameAssistDlg.h

@@ -46,4 +46,6 @@ public:
 	CButton m_cbZJ2;
 	CButton m_cbAggressiveSkill;
 	afx_msg void OnBnClickedButton10();
+	CComboBox m_cbGameRole;
+	afx_msg void OnBnClickedButton11();
 };

+ 3 - 2
GameAssist/GameAssist/resource.h

@@ -30,7 +30,8 @@
 #define IDC_CHECK5                      1019
 #define IDC_CHECK6                      1020
 #define IDC_BUTTON10                    1021
-#define IDC_MFCPROPERTYGRID1            1022
+#define IDC_COMBO1                      1023
+#define IDC_BUTTON11                    1024
 
 // Next default values for new objects
 // 
@@ -38,7 +39,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        129
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1023
+#define _APS_NEXT_CONTROL_VALUE         1025
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif