Wang Jeff 4 лет назад
Родитель
Сommit
d0730a3a0c

+ 11 - 2
GameAssist/GameAssist/Assist.cpp

@@ -343,7 +343,13 @@ namespace GAssist
 		HWND hTagetProcessWnd = NULL;
 		TCHAR szWndName[MAX_PATH] = { 0 };
 		TCHAR szClassName[MAX_PATH] = { 0 };
-		TCHAR szRoleName[MAX_PATH] = { 0 };
+		// ÓÎÏ·´°¿ÚÐÅÏ¢;
+		TCHAR szGameName[MAX_PATH] = { 0 };
+		TCHAR szGameRelease[MAX_PATH] = { 0 };
+		TCHAR szGameVersion[MAX_PATH] = { 0 };
+		TCHAR szGameZoon[MAX_PATH] = { 0 };
+		TCHAR szGameServer[MAX_PATH] = { 0 };
+		TCHAR szGameRoleName[MAX_PATH] = { 0 };
 		// Çå¿Õ¶ÓÁÐ;
 		vtGWnd.clear();
 		for ( std::vector<DWORD>::const_iterator it = vtPid.begin(); it != vtPid.end(); it++ )
@@ -372,6 +378,7 @@ namespace GAssist
 							OutputDebugString(szLogMsg);
 #endif
 							if (_tcsstr(szWndName, lpTagetWndName) != NULL) {
+								_stscanf_s(szWndName, _T("%[^ ] %[^ ] %[^ ] %[^ ] %[^ ] %[^ ]"), szGameName, MAX_PATH, szGameRelease, MAX_PATH, szGameVersion, MAX_PATH, szGameZoon, MAX_PATH, szGameServer, MAX_PATH, szGameRoleName, MAX_PATH);
 								hTagetProcessWnd = hCurWnd;
 								break;
 							}
@@ -394,7 +401,9 @@ namespace GAssist
 				GameWndInfo gameInfo;
 				gameInfo.hWnd = hTagetProcessWnd;
 				gameInfo.lProcId = *it;
-				gameInfo.strWndText = szRoleName;
+				gameInfo.strGameZoon = szGameZoon;
+				gameInfo.strGameServer = szGameServer;
+				gameInfo.strGameRoleName = szGameRoleName;
 				vtGWnd.push_back(gameInfo);
 			}
 		}

+ 3 - 1
GameAssist/GameAssist/Assist.h

@@ -113,7 +113,9 @@ namespace GAssist
 	{
 		unsigned long       lProcId;				// ½ø³ÌID;
 		HWND                hWnd;					// ½ø³Ì´°¿Ú¾ä±ú;
-		std::string			strWndText;				// ´°¿ÚÃû³Æ;
+		std::string			strGameRoleName;		// ÓÎÏ·½ÇÉ«Ãû³Æ;
+		std::string			strGameZoon;
+		std::string			strGameServer;
 	}GameWndInfo, * pGameWndInfo;
 	extern std::vector<GameWndInfo> g_vtGameWndInfo;
 

+ 1 - 5
GameAssist/GameAssist/GameAssist.cpp

@@ -324,11 +324,7 @@ BOOL CGameAssistApp::InitInstance()
 
 	GAssist::IsWin10DpiScaleEanbled();
 
-#if 1
-	std::vector<DWORD> vtPID;
-	GAssist::GetAllProcessId(vtPID);
-	GAssist::GetAllProcessMainWnd(vtPID, GAssist::g_vtGameWndInfo);
-#endif
+
 
 	// 标准初始化
 	// 如果未使用这些功能并希望减小

+ 1 - 1
GameAssist/GameAssist/GameAssist.rc

@@ -119,7 +119,7 @@ BEGIN
     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
+    COMBOBOX        IDC_COMBO1,9,8,149,123,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON      "刷新",IDC_BUTTON11,167,7,50,14
     PUSHBUTTON      "Alt+A",IDC_BUTTON12,7,207,50,14
     PUSHBUTTON      "到指定NPC坐标",IDC_BUTTON13,7,230,57,14

+ 69 - 43
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -1131,6 +1131,8 @@ BOOL CGameAssistDlg::OnInitDialog()
 	}
 	m_cbZYNPC.SetCurSel(0);
 
+	OnBnClickedButton11();
+
 	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 }
 
@@ -1184,6 +1186,15 @@ HCURSOR CGameAssistDlg::OnQueryDragIcon()
 }
 
 
+HWND CGameAssistDlg::GetCurGameWnd()
+{
+	int nCurSel = m_cbGameRole.GetCurSel();
+	if (nCurSel == CB_ERR)
+		return NULL;
+
+	return (HWND)m_cbGameRole.GetItemDataPtr(nCurSel);
+}
+
 void CGameAssistDlg::OnBnClickedOpengame()
 {
 #if 1 // 获取游戏标题;
@@ -1381,7 +1392,9 @@ void CGameAssistDlg::OnBnClickedOpengame()
 void CGameAssistDlg::OnBnClickedButton2()  // 截图;
 {
 	// TODO: 在此添加控件通知处理程序代码
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	UpdateData();
 	INT nX = GetDlgItemInt(IDC_EDIT3);
 	INT nY = GetDlgItemInt(IDC_EDIT4);
@@ -1401,7 +1414,7 @@ void CGameAssistDlg::OnBnClickedButton2()  // 
 	}
 
 #if 0
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();//GAssist::GetProcessMainWnd();
 
 #if 1
 	// 快捷键;
@@ -1457,7 +1470,7 @@ void CGameAssistDlg::OnBnClickedButton2()  // 
 
 #if 0
 	CRect rc;
-	HWND hProWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
 	// POINT spt= { 20, 555 }; // 左下角;
 	//POINT spt = { 20, 50 }; // 左上角
 	POINT spt = { 625, 28 }; // 战斗时的右上角
@@ -1473,7 +1486,7 @@ void CGameAssistDlg::OnBnClickedButton2()  // 
 
 #if 0
 	CRect rc;
-	HWND hProWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
 	POINT spt[4] = { { 250, 335 }, { 310,360}, { 385, 315}, { 280,295 } };
 	static int i = 2;
 	if (i < 4)
@@ -1521,7 +1534,9 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 		|
 	*/
 	CRect rc;
-	HWND hProWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();//GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	int nZJType = 0;
 	if (m_cbZJ.GetCheck() || m_cbZJ2.GetCheck())
 	{
@@ -1536,7 +1551,7 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 	{
 		UpdateData(FALSE);
 		DebugLog(_T("start.打镜妖 %d----------------------------"), i);
-		BattleJY(hProWnd, m_cbSummoner.GetCheck(), nZJType, m_cbAggressiveSkill.GetCheck());
+		BattleJY(hWnd, m_cbSummoner.GetCheck(), nZJType, m_cbAggressiveSkill.GetCheck());
 		DebugLog(_T("end.打镜妖 %d----------------------------\n"), i);
 	}
 }
@@ -1547,7 +1562,9 @@ void CGameAssistDlg::OnBnClickedButton4() // 
 	// TODO: 在此添加控件通知处理程序代码
 	// 星秀村:送礼协会会长丙
 	// 【星】铜钱怪
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	FindNPC(hWnd, _T("送礼协会会长丙"));
 	IsWalkStop(hWnd);
 
@@ -1733,15 +1750,17 @@ void CGameAssistDlg::OnBnClickedButton4() // 
 
 void CGameAssistDlg::OnBnClickedButton5() // 开宝箱;
 {
-	HWND hProcessMainWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	if (GAssist::nGameWndType == GAssist::GW_SMALL)
 	{
 		CRect rc;
 		MouseAssist mouseAssist;
-		mouseAssist.BindWnd(hProcessMainWnd, PT_TYPE::SCREEN_POINT);
+		mouseAssist.BindWnd(hWnd, PT_TYPE::SCREEN_POINT);
 		for (int i = 0; i < 50; i++)
 		{
-			if (!GAssist::GetImgMatchtemplate(hProcessMainWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\应天府铁匠.bmp"), rc))
+			if (!GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\应天府铁匠.bmp"), rc))
 			{
 				// 没找到,要将鼠标从目标中移走;并且要右击一次将目标的高亮状态取消;
 				mouseAssist.SetCursorPos(rc.top + rand() % 5, rc.left + rand() % 5);
@@ -1750,14 +1769,14 @@ void CGameAssistDlg::OnBnClickedButton5() // 
 			}
 			else
 			{
-				GAssist::MouseClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 5));
+				GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 5));
 				Sleep(600 + rand() % 30);
 				// 再移动下,会更高精度;
 				mouseAssist.MoveTo(rc.top - rand() % 15, rc.left - rand() % 15);
 				// 判断是否还有对话,如果没有的话表明不是第一次进入;
-				if (GAssist::GetImgMatchtemplate(hProcessMainWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\开宝箱.bmp"), rc)) {
+				if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\开宝箱\\开宝箱.bmp"), rc)) {
 
-					GAssist::MouseClick(hProcessMainWnd, CPoint((rc.right + rc.left) / 2 + rand() % 2, (rc.top + rc.bottom) / 2 + rand() % 2));
+					GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 2, (rc.top + rc.bottom) / 2 + rand() % 2));
 					Sleep(rand() % 200 + 190);
 					// 然后移动出去;
 					//GAssist::MouseMove(hProcessMainWnd, CPoint(rc.top - 50 - rand()%20, rc.left - 50 - rand() % 20));
@@ -1776,8 +1795,10 @@ void CGameAssistDlg::OnBnClickedButton6() // 职业
 {
 	CRect rc;
 	DebugLog(_T("进入孤独洞========="));
-	HWND hProWnd = GAssist::GetProcessMainWnd();
-	if (!FindNPC(hProWnd, "职业训导大师"))
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
+	if (!FindNPC(hWnd, "职业训导大师"))
 		return;
 
 	// 选择进入;
@@ -1785,24 +1806,24 @@ void CGameAssistDlg::OnBnClickedButton6() // 职业
 	int trySize = 20;
 
 	// 我要挑战他们;
-	while (!(bMatch = ClickDlgSetup(hProWnd, _T("img\\zyxdds-wytztm.bmp")))) {
+	while (!(bMatch = ClickDlgSetup(hWnd, _T("img\\zyxdds-wytztm.bmp")))) {
 		SRAND(1200, 2200);
 		if (!trySize--) break;
 	}
 
 	// 准备好了
-	if (ClickDlgSetup(hProWnd, _T("img\\zyxdds-zbhl.bmp")))
+	if (ClickDlgSetup(hWnd, _T("img\\zyxdds-zbhl.bmp")))
 	{
 		// 地图切换,等出图;
 		SRAND(2000, 2500);
-		if (IsOnMap(hProWnd, _T("img\\gdd\\name.bmp")))
+		if (IsOnMap(hWnd, _T("img\\gdd\\name.bmp")))
 		{
 			DebugLog(_T("进入孤独洞"));
 			char szName[10][32] = { "术士独侠","道士独侠","武师独侠","浪子独侠","剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
-			BattleYS(hProWnd, "缚神诀");
+			BattleYS(hWnd, "缚神诀");
 			for (int i = 0; i < 10; i++)
 			{
-				BattleOthers(hProWnd, szName[i], "缚神诀");
+				BattleOthers(hWnd, szName[i], "缚神诀");
 			}
 		}
 	}
@@ -1820,13 +1841,14 @@ void CGameAssistDlg::OnBnClickedButton8() // 职业
 	// TODO: 在此添加控件通知处理程序代码
 	CRect rc;
 	DebugLog(_T("进入孤独洞========="));
-	HWND hProWnd = GAssist::GetProcessMainWnd();
-
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	DebugLog(_T("进入孤独洞"));
 	char szName[10][32] = { "术士独侠","道士独侠","武师独侠","浪子独侠","剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
 	for (int i = 0; i < 10; i++)
 	{
-		BattleOthers(hProWnd, szName[i], "缚神诀");
+		BattleOthers(hWnd, szName[i], "缚神诀");
 	}
 }
 
@@ -1834,7 +1856,9 @@ void CGameAssistDlg::OnBnClickedButton8() // 职业
 void CGameAssistDlg::OnBnClickedButton9() // 移动到目标点
 {
 	// TODO: 在此添加控件通知处理程序代码
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	UpdateData();
 	INT nX = GetDlgItemInt(IDC_EDIT1);
 	INT nY = GetDlgItemInt(IDC_EDIT2);
@@ -1851,7 +1875,9 @@ void CGameAssistDlg::OnBnClickedButton10()
 {
 	// TODO: 在此添加控件通知处理程序代码
 	CRect rc;
-	HWND hProWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	int nZJType = 0;
 	if (m_cbZJ.GetCheck() || m_cbZJ2.GetCheck())
 	{
@@ -1863,7 +1889,7 @@ void CGameAssistDlg::OnBnClickedButton10()
 
 	UpdateData(FALSE);
 	DebugLog(_T("start.打镜妖 %d----------------------------"));
-	BattleJY(hProWnd, m_cbSummoner.GetCheck(), nZJType, m_cbAggressiveSkill.GetCheck());
+	BattleJY(hWnd, m_cbSummoner.GetCheck(), nZJType, m_cbAggressiveSkill.GetCheck());
 	DebugLog(_T("end.打镜妖 %d----------------------------\n"));
 
 }
@@ -1872,31 +1898,29 @@ void CGameAssistDlg::OnBnClickedButton10()
 void CGameAssistDlg::OnBnClickedButton11() // 刷新;
 {
 	// TODO: 在此添加控件通知处理程序代码
-	InitZYNPC();
-	HWND hWnd = GAssist::GetProcessMainWnd();
-	// "职业训导大师", 
-	char szName[11][32] = {"医师独侠", "术士独侠","道士独侠","武师独侠","浪子独侠",
-		"剑客独侠","弓手独侠","禁卫独侠","墨者独侠","巫煞独侠","魂武独侠" };
+#if 1
+	std::vector<DWORD> vtPID;
+	GAssist::GetAllProcessId(vtPID);
+	GAssist::GetAllProcessMainWnd(vtPID, GAssist::g_vtGameWndInfo);
+#endif
 
-	for ( int i = 0; i < 11; i++ )
+	int nIndx = 0;
+	m_cbGameRole.ResetContent();
+	for (std::vector<GAssist::GameWndInfo>::iterator it = GAssist::g_vtGameWndInfo.begin(); it != GAssist::g_vtGameWndInfo.end(); it++)
 	{
-		auto it = g_mapZYNPC.find(szName[i]);
-		if (it != g_mapZYNPC.end())
-		{
-			FindNPC(hWnd, it->second, it->first.c_str());
-			if (_tcsicmp("职业训导大师", it->first.c_str()))
-				Sleep(6000);
-			Sleep(500);
-			GAssist::MouseRClick(hWnd);
-		}
+		nIndx = m_cbGameRole.AddString(it->strGameRoleName.c_str());
+		m_cbGameRole.SetItemDataPtr(nIndx, it->hWnd);
 	}
+	m_cbGameRole.SetCurSel(0);
 }
 
 
 void CGameAssistDlg::OnBnClickedButton12()
 {
 	// TODO: 在此添加控件通知处理程序代码
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	// 将鼠标移动到指定位置;
 	POINT ptDest = { 625, 28 }; // 左上角;
 	
@@ -1919,7 +1943,9 @@ void CGameAssistDlg::OnBnClickedButton12()
 
 void CGameAssistDlg::OnBnClickedButton13() // 地图找挑战NPC;
 {
-	HWND hWnd = GAssist::GetProcessMainWnd();
+	HWND hWnd = GetCurGameWnd();// GAssist::GetProcessMainWnd();
+	if (hWnd == NULL)
+		return;
 	int nCurSel = m_cbZYNPC.GetCurSel();
 	if (nCurSel == CB_ERR)
 		return;

+ 1 - 0
GameAssist/GameAssist/GameAssistDlg.h

@@ -31,6 +31,7 @@ protected:
 	DECLARE_MESSAGE_MAP()
 
 	MouseAssist m_mouseAssist;
+	HWND GetCurGameWnd();
 public:
 	afx_msg void OnBnClickedOpengame();
 	afx_msg void OnBnClickedButton2();