#include "Win32Util.h" #include void clickRunner(int delay) // º¯ÊýÃû×Ö¿ÉËæÒâ { Sleep(delay); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); Sleep(10); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Sleep(10); } void moveRunner(int x, int y,int delay) // º¯ÊýÃû×Ö¿ÉËæÒâ { Sleep(delay); SetCursorPos(x, y); Sleep(20); } void kbNumRunner(string nums, int delay) // º¯ÊýÃû×Ö¿ÉËæÒâ { Sleep(delay); for (int i = 0;i < nums.length();i++) { keybd_event(nums.c_str()[i], 0, 0, 0); keybd_event(nums.c_str()[i], 0, KEYEVENTF_KEYUP, 0); } } void kbKeyRunner(int code, int delay) // º¯ÊýÃû×Ö¿ÉËæÒâ { Sleep(delay); keybd_event(code, 0, 0, 0); keybd_event(code, 0, KEYEVENTF_KEYUP, 0); } list Win32Util::searchWindow(string name) { auto hwnd = GetDesktopWindow(); HWND mainPage = HWND(); //»ñÈ¡×ÀÃæ×Ó´°¿Ú¾ä±ú hwnd = GetWindow(hwnd, GW_CHILD); list list; while (hwnd != NULL) { std::string str= getWindowName(hwnd); if (str.find(name) != string::npos) { list.push_back(hwnd); } hwnd = GetNextWindow(hwnd, GW_HWNDNEXT); } return list; } string Win32Util::getWindowName(HWND hwnd) { int length = GetWindowTextLength(hwnd); TCHAR getbuf[100]; GetWindowText(hwnd, getbuf, length + 1); int iLen = WideCharToMultiByte(CP_ACP, 0, getbuf, -1, NULL, 0, NULL, NULL); //Ê×ÏȼÆËãTCHAR ³¤¶È¡£ char* chRtn = new char[iLen * sizeof(char)]; //¶¨ÒåÒ»¸ö TCHAR ³¤¶È´óСµÄ CHAR ÀàÐÍ¡£ WideCharToMultiByte(CP_ACP, 0, getbuf, -1, chRtn, iLen, NULL, NULL); //½«TCHAR ÀàÐ͵ÄÊý¾Ýת»»Îª CHAR ÀàÐÍ¡£ std::string str(chRtn); return str; } void Win32Util::click(int delay) { thread clickRunner(clickRunner,delay); clickRunner.join(); } void Win32Util::click(int x, int y, int delay) { thread clickRunner(moveRunner, x, y,delay); clickRunner.join(); click(); } void Win32Util::mouseMove(int x, int y, int delay) { thread clickRunner(moveRunner, x, y, delay); clickRunner.join(); } void Win32Util::focus(HWND hwnd) { SetForegroundWindow(hwnd); SetFocus(hwnd); } //¼üÅÌÊäÈëÊý×Ö void Win32Util::keyboardNum(string num, int delay) { thread runner(kbNumRunner, num, delay); runner.join(); } //¼üÅÌÊäÈëÆäËû¼ü void Win32Util::keyboard(int code, int delay) { thread runner(kbKeyRunner, code, delay); runner.join(); }