Procházet zdrojové kódy

SendMessage时,加上fwkeys:MK_LBUTTON.

sat23 před 5 roky
rodič
revize
b4cb469725

+ 65 - 6
GameAssist/GameAssist/Assist.cpp

@@ -184,7 +184,7 @@ namespace GAssist
 		if ( !IsWindow(hwnd) )
 			return;
 
-		::SendMessage(hwnd, WM_LBUTTONDOWN, 0, MAKELPARAM(pt.x, pt.y));
+		::SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
 		::SendMessage(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(pt.x, pt.y));
 		Sleep(200);
 	}
@@ -194,25 +194,84 @@ namespace GAssist
 		if ( !IsWindow(hwnd) )
 			return;
 
-		::SendMessage(hwnd, WM_LBUTTONDOWN, 0, MAKELPARAM(x, y));
+		::SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
 		::SendMessage(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(x, y));
 		Sleep(200);
 	}
 
+	void MouseMove(HWND hwnd, POINT pt)
+	{
+		if ( !IsWindow(hwnd) )
+			return;
+
+		::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
+		Sleep(200);
+	}
+
 	void MouseMove(HWND hwnd, POINT ptStart, POINT ptEnd)
 	{
 		if ( !IsWindow(hwnd) )
 			return;
 
-		LPARAM lparam = MAKELPARAM(ptStart.x, ptStart.y);
 		//::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, lparam);
-		::SendMessage(hwnd, WM_MOUSEMOVE, 0, lparam);
+		::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, MAKELPARAM(ptStart.x, ptStart.y));
+		Sleep(200);
+
+#if 1
+		// 计算个中间点;
+		POINT ptMid = { (ptStart.x + ptEnd.x) / 2, (ptStart.y + ptEnd.y) / 2};
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptMid.x, ptMid.y));
+		Sleep(200);
+#endif
+
+		//::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, lparam);
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptEnd.x, ptEnd.y));
+		Sleep(200);
+	}
+
+	// 最后一步直接单击;
+	void MouseMoveEx(HWND hwnd, POINT ptStart, POINT ptEnd)
+	{
+		if ( !IsWindow(hwnd) )
+			return;
+
+		//::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, lparam);
+		::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, MAKELPARAM(ptStart.x, ptStart.y));
 		Sleep(200);
 
-		lparam = MAKELPARAM(ptEnd.x, ptEnd.y);
+#if 1
+		// 计算个中间点;
+		POINT ptMid = { (ptStart.x + ptEnd.x) / 2, (ptStart.y + ptEnd.y) / 2};
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptMid.x, ptMid.y));
+		Sleep(200);
+#endif
+
 		//::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, lparam);
-		::SendMessage(hwnd, WM_MOUSEMOVE, 0, lparam);
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptEnd.x, ptEnd.y));
+		Sleep(200);
+		MouseClick(hwnd, ptEnd);
+	}
+
+	void DragMouse(HWND hwnd, POINT ptStart, POINT ptEnd)
+	{
+		if ( !IsWindow(hwnd) )
+			return;
+		
+#if 0
+		MouseClick(hwnd, ptStart);
+		// 按下鼠标左键;
+		::SendMessage(hwnd, WM_MOUSEMOVE, MK_LBUTTON, MAKELPARAM(ptStart.x, ptStart.y));
+		//Sleep(200);
+
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptEnd.x, ptEnd.y));
 		Sleep(200);
+#else
+		::SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(ptStart.x, ptStart.y));
+
+		::SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(ptEnd.x, ptEnd.y));
+
+		::SendMessage(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(ptEnd.x, ptEnd.y));
+#endif
 	}
 
 	// 截图;

+ 5 - 0
GameAssist/GameAssist/Assist.h

@@ -51,7 +51,12 @@ namespace GAssist
 	// 单击事件;
 	extern void MouseClick(HWND hwnd, POINT pt);
 	extern void MouseClick(HWND hwnd, unsigned int x, unsigned int y);
+	// 移动鼠标;
+	extern void MouseMove(HWND hwnd, POINT pt);
 	extern void MouseMove(HWND hwnd, POINT ptStart, POINT ptEnd);
+	extern void MouseMoveEx(HWND hwnd, POINT ptStart, POINT ptEnd);
+	// 拖动鼠标;
+	extern void DragMouse(HWND hwnd, POINT ptStart, POINT ptEnd);
 	// 截图;
 	HBITMAP CopyDC2Bitmap(HWND hWnd, LPRECT lpRect);
 	// 保存图片;

+ 22 - 6
GameAssist/GameAssist/GameAssistDlg.cpp

@@ -164,12 +164,28 @@ void CGameAssistDlg::OnBnClickedOpengame()
 	TCHAR szWinText[MAX_PATH] = {0};
 	::GetWindowText(hProWnd, szWinText, MAX_PATH);
 
-	Sleep(5000);
-	GAssist::MouseMove(hProWnd, CPoint(100,100), CPoint(200,200));
-	Sleep(2000);
-	GAssist::MouseMove(hProWnd, CPoint(100,100), CPoint(250,250));
-	Sleep(2000);
-	GAssist::MouseMove(hProWnd, CPoint(100,100), CPoint(350,350));
+#if 0
+ 	Sleep(1000);
+ 	GAssist::MouseMove(hProWnd, CPoint(205,150));
+ 	Sleep(2000);
+ 	GAssist::MouseMove(hProWnd, CPoint(100,100), CPoint(250,250));
+ 	Sleep(2000);
+ 	GAssist::MouseMove(hProWnd, CPoint(100,100), CPoint(350,350));
+#endif
+
+	if (1)
+	{
+		Sleep(1000);
+		GAssist::MouseClick(hProWnd, CPoint(205,150));
+
+		Sleep(1000);
+		GAssist::MouseClick(hProWnd, CPoint(235,150));
+
+		Sleep(1000);
+		GAssist::MouseClick(hProWnd, CPoint(275,150));
+	}
+	//Sleep(1000);
+	//GAssist::DragMouse(hProWnd, CPoint(205,150), CPoint(295,150));
 
 	RECT rc = {0,0,500,500};
 	HBITMAP hb = GAssist::CopyDC2Bitmap(hProWnd, &rc);