Assist.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef __ASSIST__
  2. #define __ASSIST__
  3. #pragma once
  4. #include <map>
  5. #include <string>
  6. namespace GameGlobal {
  7. enum {
  8. GW_SMALL,
  9. GW_LARGE,
  10. GW_FULL,
  11. }GAME_WND;
  12. extern int titleBarHeight;
  13. extern int frameWidth;
  14. extern TCHAR g_szCurModuleFileName[MAX_PATH];
  15. extern TCHAR g_szCurModuleDir[MAX_PATH];
  16. extern TCHAR g_szCurModulePath[MAX_PATH];
  17. extern TCHAR g_szFna[_MAX_FNAME];
  18. extern TCHAR g_szExt[_MAX_EXT];
  19. extern TCHAR g_szAssistConfig[MAX_PATH];
  20. extern std::string g_strAppdir;
  21. extern std::string g_strGameDir;
  22. extern TCHAR g_szGameApp[MAX_PATH];
  23. extern TCHAR g_szTempDir[MAX_PATH];
  24. extern int nGameWndType;
  25. extern int nAttackCount;
  26. void Init();
  27. std::string BuildImgPath(HWND hWnd, LPCTSTR lpName = NULL);
  28. VOID DebugLog(CHAR* pszStr, ...);
  29. };
  30. namespace ImgAssist {
  31. std::string CaptureGameWnd(HWND hWnd);
  32. void CaptureGameWnd(HWND hWnd, std::string strSavePath);
  33. BOOL OpenImage(std::string strImag, cv::Mat& img);
  34. BOOL SetImgThreshold(cv::Mat& srcImg, cv::Mat& thresholdImg, long nThresholdVal, long nMaxThresholdVal, int type = 0);
  35. BOOL GetImgMatchtemplate(HWND hWnd, std::string strTempImg, RECT& rc, double lowestMatchValue = 0.900);
  36. BOOL GetImgMatchtemplate(std::string strSrcImg, std::string strTempImg, RECT& rc, double lowestMatchValue = 0.900);
  37. BOOL IsMatchIcon(HWND hWnd, std::string strTempImg, RECT srcRect, RECT& matchRect, double lowestMatchValue = 0.900);
  38. BOOL CropPicture(HWND hWnd, CRect rc, const char* szSaveName); // 剪裁图片;
  39. BOOL IsSimilarPicture(const char* szp1, const char* szp2, double lowestMatchValue = 0.99);
  40. // 获取指定颜色占用矩形长度比例;
  41. int GetColorOccupiedLength(std::string strImg, int r, int g, int b);
  42. };
  43. // 所有坐标,都是基于游戏窗口的相对坐标值;
  44. // 游戏窗口:802*627
  45. namespace GameAssist{
  46. // 控件信息;
  47. typedef struct __CTRL_INFO__ {
  48. DWORD dwId; // 控件id;
  49. std::string strWinText; // 控件文本;
  50. std::string strClassName; // 控件类名;
  51. HWND hwnd; // 控件句柄;
  52. }CtrlInfo, * pCtrlInfo;
  53. extern std::vector<CtrlInfo> g_vtCtrlInfo;
  54. typedef struct __GAMEWNDINFO__
  55. {
  56. unsigned long lProcId; // 进程ID;
  57. HWND hWnd; // 进程窗口句柄;
  58. std::string strGameRoleName; // 角色名称;
  59. std::string strGameZoon; // 区域;
  60. std::string strGameServer; // 服务站
  61. LPVOID pAction; // CAction类对象;
  62. }GameWndInfo, * pGameWndInfo;
  63. extern std::vector<GameWndInfo> g_vtGameWndInfo;
  64. void ClearGameInfo(std::vector<GameWndInfo> &vtGWnd);
  65. extern RECT g_rcRoleIdleHP ;
  66. extern RECT g_rcRoleIdleSP ;
  67. extern RECT g_rcSummonerIdleHP;
  68. extern RECT g_rcSummonerIdleSP;
  69. extern RECT g_rcRoleFightingHP;
  70. extern RECT g_rcRoleFightingSP;
  71. extern RECT g_rcSummonerFightingHP;
  72. extern RECT g_rcSummonerFightingSP;
  73. // 设置游戏窗口前置;
  74. void SetGameForeground(HWND hWnd);
  75. // 判断游戏窗口是否前置;
  76. bool IsGameForeground(HWND hWnd);
  77. // 将窗口坐标转化为屏幕坐标;
  78. BOOL GamePos2Screen(HWND hWnd, POINT &pt, bool bOffset = false);
  79. // 将屏幕坐标转化为游戏坐标;
  80. BOOL ScreenPos2Game(HWND hWnd, POINT& pt);
  81. // 鼠标移动;
  82. void MouseMove(POINT pt, bool bSetCurPos = true);
  83. // 鼠标单击;
  84. void MouseClick();
  85. void MouseClick(POINT pt);
  86. // 鼠标双击;
  87. void MouseDbClick();
  88. void MouseDbClick(POINT pt);
  89. // 鼠标右击;
  90. void MouseRClick();
  91. void MouseRClick(POINT pt);
  92. // 鼠标拖动;
  93. void MouseDrag(POINT pt);
  94. // 发送按键;
  95. void SendKey(DWORD key, BOOL bCtrl = FALSE, BOOL bAtl = FALSE, BOOL bShift = FALSE);
  96. // 获取剪切板字符串;
  97. CString GetClipboradString();
  98. // 设置剪切板字符串;
  99. BOOL SetClipboardString(LPCTSTR lpString);
  100. // 根据进程名获取进程pid;
  101. DWORD GetProcessId(LPCTSTR lpProcessName = _T("Game.exe"));
  102. // 获取所有指定进程名的进程pid;
  103. void GetAllProcessId(std::vector<DWORD>& vtPid, LPCTSTR lpProcessName = _T("Game.exe"));
  104. // 根据进程pid获取进程对应程序的窗口句柄;
  105. HWND GetProcessMainWnd(const DWORD& dwTagetProcessId, LPCTSTR lpTagetWndName = _T("大话水浒"));
  106. // 获取指定进程名的进程主窗口;
  107. HWND GetProcessMainWnd(LPCTSTR lpProcessName = _T("Game.exe"), LPCTSTR lpTagetWndName = _T("大话水浒"));
  108. // 获取所有指定进程名的进程主窗口;
  109. void GetAllProcessMainWnd(const std::vector<DWORD>& vtPid, std::vector<GameWndInfo>& vtGWnd, LPCTSTR lpTagetWndName = _T("大话水浒"));
  110. // 枚举指定进程的窗口;
  111. extern BOOL CALLBACK EnumChildWindowCallBack(HWND hWnd, LPARAM lParam);
  112. };
  113. #endif // __ASSIST__