Jelajahi Sumber

基本流程OK,仍会失败:在判断是否我方攻击

Jeff 4 tahun lalu
induk
melakukan
060be7b3eb

+ 48 - 0
GameAssist/GameAssist/Assist.cpp

@@ -774,6 +774,36 @@ namespace GAssist
 		return 0;
 	}
 
+	BOOL IsWin10DpiScaleEanbled()
+	{
+		SetProcessDPIAware();
+		HDC hDC = GetDC(NULL);
+		int dpi_x = GetDeviceCaps(hDC, LOGPIXELSX);//96 是100%、120 是125%、144 是150%、168 是175%
+		int dpi_y = GetDeviceCaps(hDC, LOGPIXELSY);
+
+		int dpi1 = GetDeviceCaps(hDC, HORZRES);
+		int dpi2 = GetDeviceCaps(hDC, DESKTOPHORZRES);
+
+		BOOL bRet = FALSE;
+		BOOL bProcessed = FALSE;
+		if (GetDeviceCaps(hDC, LOGPIXELSX) != 96)
+		{
+			DEVMODE curDevMode;
+			memset(&curDevMode, 0, sizeof(curDevMode));
+			curDevMode.dmSize = sizeof(DEVMODE);
+			BOOL bEnumRet = ::EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &curDevMode);
+			if (bEnumRet < curDevMode.dmPelsWidth)
+			{
+				bProcessed = TRUE;
+				//::SetStretchBltMode(hMemDC, STRETCH_HALFTONE);
+				//bRet = ::StretchBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, 0, 0, curDevMode.dmPelsWidth, curDevMode.dmPelsHeight, SRCCOPY | CAPTUREBLT);
+			}
+		}
+
+		ReleaseDC(NULL, hDC);
+		return TRUE;
+	}
+
 	void SaveHwndToBmpFile(HWND hWnd, std::string strSavePath) {
 		HDC hDC = ::GetWindowDC(hWnd);
 		ASSERT(hDC);
@@ -786,6 +816,24 @@ namespace GAssist
 
 		ASSERT(hBitmap);
 		HBITMAP hOldBmp = (HBITMAP)::SelectObject(hMemDC, hBitmap);
+
+		BOOL bRet = FALSE;
+		BOOL bProcessed = FALSE;
+		// 针对win10 DWM虚拟缩放时的处理
+		if (GetDeviceCaps(hDC, LOGPIXELSX) != 96)
+		{
+			DEVMODE curDevMode;
+			memset(&curDevMode, 0, sizeof(curDevMode));
+			curDevMode.dmSize = sizeof(DEVMODE);
+			BOOL bEnumRet = ::EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &curDevMode);
+			if (bEnumRet < curDevMode.dmPelsWidth)
+			{
+				bProcessed = TRUE;
+				//::SetStretchBltMode(hMemDC, STRETCH_HALFTONE);
+				//bRet = ::StretchBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, 0, 0, curDevMode.dmPelsWidth, curDevMode.dmPelsHeight, SRCCOPY | CAPTUREBLT);
+			}
+		}
+
 		::PrintWindow(hWnd, hMemDC, 0);
 		BITMAP bitmap = { 0 };
 		::GetObject(hBitmap, sizeof(BITMAP), &bitmap);

+ 1 - 0
GameAssist/GameAssist/Assist.h

@@ -180,6 +180,7 @@ namespace GAssist
 	
 	// Ö°Òµ´óÌôÕ½;
 	void ZhiYeDaTiaoZhan();
+	BOOL IsWin10DpiScaleEanbled();
 };
 
 #endif // __ASSIST__

+ 3 - 0
GameAssist/GameAssist/GameAssist.cpp

@@ -322,6 +322,9 @@ BOOL CGameAssistApp::InitInstance()
 	HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void**)&pCreateDevEnum);
 #endif
 
+
+	GAssist::IsWin10DpiScaleEanbled();
+
 	// 标准初始化
 	// 如果未使用这些功能并希望减小
 	// 最终可执行文件的大小,则应移除下列

+ 9 - 7
GameAssist/GameAssist/GameAssist.rc

@@ -53,8 +53,8 @@ BEGIN
     "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"
     "LANGUAGE 4, 2\r\n"
     "#pragma code_page(936)\r\n"
-    "#include ""res\\GameAssist.rc2""  // 闂?Microsoft Visual C++ 缂傛牞绶惃鍕カ濠?\n"
-    "#include ""l.CHS\\afxres.rc""      // 閺嶅洤鍣紒鍕\r\n"
+    "#include ""res\\GameAssist.rc2""  // 闂?Microsoft Visual C++ 缂傚倹鐗炵欢顐︽儍閸曨喚銈繝?\n"
+    "#include ""l.CHS\\afxres.rc""      // 闁哄秴娲ら崳顖滅磼閸曨亝顐?\n"
     "#endif\r\n"
     "\0"
 END
@@ -88,14 +88,14 @@ BEGIN
     DEFPUSHBUTTON   "确定",IDOK,113,41,50,14,WS_GROUP
 END
 
-IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 123, 199
+IDD_GAMEASSIST_DIALOG DIALOGEX 0, 0, 233, 199
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "GameAssist"
 FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
     DEFPUSHBUTTON   "确定",IDOK,7,177,50,14
-    PUSHBUTTON      "取消",IDCANCEL,66,177,50,14
+    PUSHBUTTON      "取消",IDCANCEL,176,177,50,14
     PUSHBUTTON      "打开",BTN_OPENGAME,7,61,50,14
     PUSHBUTTON      "截图",IDC_BUTTON2,7,7,50,14
     PUSHBUTTON      "镜妖",IDC_BUTTON3,7,25,50,14
@@ -104,6 +104,8 @@ BEGIN
     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,112,28,43,10
+    CONTROL         "镜妖重击",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,28,52,10
 END
 
 
@@ -165,7 +167,7 @@ BEGIN
     IDD_GAMEASSIST_DIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 116
+        RIGHTMARGIN, 226
         TOPMARGIN, 7
         BOTTOMMARGIN, 191
         HORZGUIDE, 190
@@ -213,8 +215,8 @@ END
 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
 LANGUAGE 4, 2
 #pragma code_page(936)
-#include "res\GameAssist.rc2"  // 闂?Microsoft Visual C++ 缂傛牞绶惃鍕カ濠?
-#include "l.CHS\afxres.rc"      // 閺嶅洤鍣紒鍕
+#include "res\GameAssist.rc2"  // 闂?Microsoft Visual C++ 缂傚倹鐗炵欢顐︽儍閸曨喚銈繝?
+#include "l.CHS\afxres.rc"      // 闁哄秴娲ら崳顖滅磼閸曨亝顐?
 #endif
 
 /////////////////////////////////////////////////////////////////////////////

+ 11 - 9
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -286,7 +286,7 @@ void BattleOnece(HWND hWnd, BOOL bHasSummoner)
 }
 
 // 与镜妖战斗;
-void BattleJY(HWND hWnd, BOOL bHasSummoner)
+void BattleJY(HWND hWnd, BOOL bHasSummoner, BOOL bZJ)
 {
 	BOOL bFirstAttack = TRUE;
 	while (IsBattle(hWnd)) { // 是否在战斗中;
@@ -309,14 +309,15 @@ void BattleJY(HWND hWnd, BOOL bHasSummoner)
 					CRect rc;
 					// 召唤兽技能;
 					DebugLog(_T("BattleJY:召唤兽技能选择"));
-
-					GAssist::SendKey(hWnd, VK_S, FALSE, TRUE);
-					SRAND(200, 350);
+					
 					// 选择重击;
-					SRAND(100, 300);
-					if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击.bmp"), rc))
-					{
-						GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
+					if (bZJ) {
+						SRAND(200, 450);
+						GAssist::SendKey(hWnd, VK_S, FALSE, TRUE);
+						if (GAssist::GetImgMatchtemplate(hWnd, GAssist::g_strAppdir + _T("img\\活动\\镜妖\\重击2.bmp"), rc))
+						{
+							GAssist::MouseClick(hWnd, CPoint((rc.right + rc.left) / 2 + rand() % 3, (rc.top + rc.bottom) / 2 + rand() % 3), TRUE);
+						}
 					}
 
 					SRAND(200, 500);
@@ -614,6 +615,7 @@ void CGameAssistDlg::DoDataExchange(CDataExchange* pDX)
 {
 	CDialog::DoDataExchange(pDX);
 	DDX_Control(pDX, IDC_CHECK1, m_cbSummoner);
+	DDX_Control(pDX, IDC_CHECK2, m_cbZJ);
 }
 
 BEGIN_MESSAGE_MAP(CGameAssistDlg, CDialog)
@@ -986,7 +988,7 @@ void CGameAssistDlg::OnBnClickedButton3() // 
 	{
 		UpdateData(FALSE);
 		DebugLog(_T("start.打镜妖 %d----------------------------"), i);
-		BattleJY(hProWnd, m_cbSummoner.GetCheck());
+		BattleJY(hProWnd, m_cbSummoner.GetCheck(), m_cbZJ.GetCheck());
 		DebugLog(_T("end.打镜妖 %d----------------------------\n"), i);
 	}
 

+ 1 - 0
GameAssist/GameAssist/GameAssistDlg.h

@@ -40,4 +40,5 @@ public:
 	afx_msg void OnBnClickedButton6();
 	CButton m_cbSummoner;
 	afx_msg void OnBnClickedButton7();
+	CButton m_cbZJ;
 };

+ 3 - 1
GameAssist/GameAssist/resource.h

@@ -16,6 +16,8 @@
 #define IDC_BUTTON6                     1005
 #define IDC_CHECK1                      1006
 #define IDC_BUTTON7                     1007
+#define IDC_CHECK2                      1008
+#define IDC_CHECK3                      1009
 
 // Next default values for new objects
 // 
@@ -23,7 +25,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        129
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1008
+#define _APS_NEXT_CONTROL_VALUE         1009
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

TEMPAT SAMPAH
GameAssist/img/活动/镜妖/重击2.bmp