def clean(self): win32gui.SendMessage(self.hwnd_s, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) win32gui.SendMessage(self.hwnd_t, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(13, 330)) time.sleep(self.speed) win32gui.SendMessage(self.hwnd_t, win32con.WM_LBUTTONUP, 0000, win32api.MAKELONG(13, 330)) time.sleep(self.speed)
def stop(self): print('stop simulator hwnd:%s'%self.hwnd) stopBtn = win32gui.FindWindowEx(self.hwnd, 0, "Button", u"停止") win32gui.SendMessage(self.hwnd, win32con.WM_COMMAND, win32api.MAKELONG(1003, win32con.BN_CLICKED), stopBtn) time.sleep(5) quitBtn = win32gui.FindWindowEx(self.hwnd, 0, "Button", u"退出") win32gui.SendMessage(self.hwnd, win32con.WM_COMMAND, win32api.MAKELONG(1001, win32con.BN_CLICKED), quitBtn)
def MouseDrag(self, posx, posy): clientx = win32gui.ScreenToClient(self._handle, posx) lparamx = win32api.MAKELONG(clientx[0], clientx[1]) clienty = win32gui.ScreenToClient(self._handle, posy) lparamy = win32api.MAKELONG(clienty[0], clienty[1]) win32api.SendMessage(self._handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lparamx) win32api.SendMessage(self._handle, win32con.WM_MOUSEMOVE, 0, lparamy) win32api.SendMessage(self._handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, lparamy)
def DragTo(self, From, To): ClientFrom = win32gui.ScreenToClient(self.hwnd, From) FromPosition = win32api.MAKELONG(ClientFrom[0], ClientFrom[1]) ClientTo = win32gui.ScreenToClient(self.hwnd, To) ToPosition = win32api.MAKELONG(ClientTo[0], ClientTo[1]) win32api.SendMessage(self.hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, FromPosition) win32api.SendMessage(self.hwnd, win32con.WM_MOUSEMOVE, 0, ToPosition) win32api.SendMessage(self.hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, ToPosition)
def click(handle, xy, noisy_offset=8): x, y = int(xy[0]), int(xy[1]) if isinstance(noisy_offset, int): x += random.randint(-noisy_offset, noisy_offset) y += random.randint(-noisy_offset, noisy_offset) win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(0.1) win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, 0, win32api.MAKELONG(x, y))
def mouse_left_click(x, y): hwnd = win32gui.FindWindow('WeChatMainWndForPC', '微信') print(hwnd) y += 36 time.sleep(0.05) win32api.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(0.05) win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(0.05) raise Exception('line xxx')
def post_left_click(self, x=0, y=0, hwnd=None): """ Uses PostMessage to send a click to a coordinate""" HWND = hwnd if HWND is None: HWND = self.hwnd[0] win32gui.PostMessage(HWND, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) win32gui.PostMessage(HWND, win32con.WM_LBUTTONUP, 0, win32api.MAKELONG(x, y))
def mouse_left_click(self, x, y): hwnd = self.hwnd print(hwnd) y += 36 time.sleep(0.05) win32api.PostMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(0.05) win32api.PostMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(0.05)
def click_random(pos, timestamp=0.5, action="left", offset=5): hWnd = win32gui.FindWindow(None, windowName) if offset > 0: lParam = win32api.MAKELONG(pos[0] + hMargin + r(-offset, offset), pos[1] + vMargin + r(-offset, offset)) else: lParam = win32api.MAKELONG(pos[0] + hMargin, pos[1] + vMargin) win32gui.PostMessage(hWnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam) win32gui.PostMessage(hWnd, win32con.WM_LBUTTONUP, 0, lParam) time.sleep(timestamp)
def moveMouseDown(hwnd, pos1, dist): time.sleep(1.25) tmp1 = win32api.MAKELONG(pos1[0], pos1[1]) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmp1) for i in range(int(dist / 5)): pos1 = pos1[0], pos1[1] + 5 tmp1 = win32api.MAKELONG(pos1[0], pos1[1]) win32gui.SendMessage(hwnd, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, tmp1) time.sleep(0.01) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, tmp1)
def UseOn(self, posx,posy): client_pos = win32gui.ScreenToClient(self._handle, posx) tmp = win32api.MAKELONG(client_pos[0], client_pos[1]) win32api.PostMessage(self._handle, win32con.WM_MOUSEMOVE, 0, tmp) win32api.SendMessage(self._handle, win32con.WM_RBUTTONDOWN, win32con.MK_RBUTTON, tmp) win32api.SendMessage(self._handle, win32con.WM_RBUTTONUP, win32con.MK_RBUTTON, tmp) client_posy = win32gui.ScreenToClient(self._handle, posy) tmpy = win32api.MAKELONG(client_posy[0], client_posy[1]) win32api.PostMessage(self._handle, win32con.WM_MOUSEMOVE, 0, tmpy) win32api.SendMessage(self._handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmpy) win32api.SendMessage(self._handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, tmpy) self.MoveToDefault()
def mouse_left_click_move(self, x_position, y_position, x_end_position, y_end_position, sleep_time=1): # 将两个16位的值连接成一个32位的地址坐标 start_position = win32api.MAKELONG(x_position, y_position) end_position = win32api.MAKELONG(x_end_position, y_end_position) self.set_mouse_position(x_position, y_position) time.sleep(sleep_time) # 点击左键 win32api.SendMessage(self.handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, start_position) self.set_mouse_position(x_end_position, y_end_position) time.sleep(sleep_time) win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, x_position, y_position, 1) win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, 0, 0, -1) time.sleep(sleep_time) win32api.SendMessage(self.handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, end_position) time.sleep(sleep_time)
def walk_it(handle, str): position_in_window = [480, 10] if str == "left": tmp2 = win32api.MAKELONG(position_in_window[0] - 50, position_in_window[1]) print(str) elif str == "right": tmp2 = win32api.MAKELONG(position_in_window[0] + 50, position_in_window[1] + 90) print(str) win32gui.SendMessage(handle, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) time.sleep(random.randrange(1)) win32gui.SendMessage(handle, win32con.WM_MOUSEMOVE, 0, tmp2) time.sleep(random.randrange(1)) win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmp2) time.sleep(random.randrange(1)) win32gui.SendMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, tmp2)
def click_it(pos): #第三种 handle= win32gui.WindowFromPoint(pos) client_pos =win32gui.ScreenToClient(handle,pos) tmp=win32api.MAKELONG(client_pos[0],client_pos[1]) win32gui.SendMessage(handle, win32con.WM_ACTIVATE,win32con.WA_ACTIVE,0) win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,tmp) win32gui.SendMessage(handle, win32con.WM_LBUTTONUP,win32con.MK_LBUTTON,tmp)
def mouse_click(self, x: int, y: int) -> None: # (x, y) to one windows parameter long_window_coordinates = win32api.MAKELONG(x, y) win32api.PostMessage(self.window_handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_window_coordinates) win32api.PostMessage(self.window_handle, win32con.WM_LBUTTONUP, 0, long_window_coordinates)
def Click(x, y): # 向窗口发送点击指令,x、y是相对于窗口的位置 lParam = win32api.MAKELONG(x, y) # win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL) # 将窗口调到前台 win32gui.SendMessage(hwnd, win32con.WM_ACTIVATE,win32con.WA_ACTIVE,0) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, lParam)
def click_position(hwd, x_position, y_position, sleep): long_position = win32api.MAKELONG(x_position, y_position) win32api.SendMessage(hwd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position) win32api.SendMessage(hwd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position) time.sleep(int(sleep))
def mouse_click(w, x, y): lParam = win32api.MAKELONG(x, y) win32api.PostMessage(w, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam) time.sleep(0.2) win32api.PostMessage(w, win32con.WM_LBUTTONUP, 0, lParam)
def screenshot(self): # Save the screenshot self.saveDC.BitBlt((0, 0), (self.width, self.height), self.mfcDC, (0, 0), win32con.SRCCOPY) bmpinfo = self.saveBitMap.GetInfo() bmpstr = self.saveBitMap.GetBitmapBits(True) # Save to image im = Image.frombuffer('RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']), bmpstr, 'raw', 'BGRX', 0, 1) screen = np.array(im) # Generate random point and sleep_time from the screenshot x, y, sleep_time, battle_count = self.rand_point(screen) if x != None: l_param = win32api.MAKELONG(x, y) win32api.SendMessage(self.hwnd, win32con.WM_MOUSEMOVE, 0, l_param) #win32api.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, # win32con.MK_LBUTTON, l_param) win32api.SendMessage(self.hwnd, win32con.WM_LBUTTONDOWN, 0, l_param) time.sleep(0.01 + random.random() * 0.02) win32api.SendMessage(self.hwnd, win32con.WM_LBUTTONUP, 0, l_param) sys.stdout.flush() # Sleep for random time time.sleep(sleep_time) # tqdm update cannot take negative input in windows # Every two update cannot be within 10s (to detect end of battle) if battle_count > 0 and time.time() - self.pbar_time > 10: self.pbar.update(battle_count) self.pbar_time = time.time()
def mouse_move(self, pos): self._mouse_pos = pos self._lparam = win32api.MAKELONG(int(pos[0]), int(pos[1])) # Send the event to the window. win32api.SendMessage(self._hwnd, win32con.WM_MOUSEMOVE, self._wparam, self._lparam)
def clickClient(handle, pos): coordinate = win32api.MAKELONG(pos[0], pos[1]) win32gui.SendMessage(handle, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) win32api.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, coordinate) win32api.SendMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, coordinate)
def click(x, y): point = win32api.MAKELONG(int(x), int(y)) win32gui.SendMessage(hwnd, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, point) win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, point)
def click(self, x, y, button="left"): """Click at pixel xy.""" x += Window.x y += Window.y lParam = win32api.MAKELONG(x, y) # MOUSEMOVE event is required for game to register clicks correctly win32gui.PostMessage(Window.id, wcon.WM_MOUSEMOVE, 0, lParam) while (win32api.GetKeyState(wcon.VK_CONTROL) < 0 or win32api.GetKeyState(wcon.VK_SHIFT) < 0 or win32api.GetKeyState(wcon.VK_MENU) < 0): time.sleep(0.005) if (button == "left"): win32gui.PostMessage(Window.id, wcon.WM_LBUTTONDOWN, wcon.MK_LBUTTON, lParam) win32gui.PostMessage(Window.id, wcon.WM_LBUTTONUP, wcon.MK_LBUTTON, lParam) else: win32gui.PostMessage(Window.id, wcon.WM_RBUTTONDOWN, wcon.MK_RBUTTON, lParam) win32gui.PostMessage(Window.id, wcon.WM_RBUTTONUP, wcon.MK_RBUTTON, lParam) # Sleep lower than 0.1 might cause issues when clicking in succession time.sleep(0.2)
def sendMouseRightClickEx(self, x=300, y=300, count=1, shift=False, sleep=300): lparam = win32api.MAKELONG(x, y) if not shift: win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, win32con.VK_RBUTTON, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, win32con.VK_RBUTTON, lparam) return win32api.PostMessage(self.hwnd, win32con.WM_KEYDOWN, win32con.VK_SHIFT, 0) for a in range(count): win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, win32con.VK_RBUTTON, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, win32con.VK_RBUTTON, lparam) libs.rSleep(300) win32api.PostMessage(self.hwnd, win32con.WM_KEYUP, win32con.VK_SHIFT, 0) if shift: wparam = win32con.MK_SHIFT | win32con.MK_RBUTTON else: wparam = win32con.MK_RBUTTON for a in range(count): win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, wparam, lparam) win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, wparam, lparam) libs.sleep(sleep)
def click(self, x, y, button="left", fast=False, ctrl=False): """Click at pixel xy.""" x += window.x y += window.y lParam = win32api.MAKELONG(x, y) # MOUSEMOVE event is required for game to register clicks correctly win32gui.PostMessage(window.id, wcon.WM_MOUSEMOVE, 0, lParam) while (win32api.GetKeyState(wcon.VK_CONTROL) < 0 or win32api.GetKeyState(wcon.VK_SHIFT) < 0 or win32api.GetKeyState(wcon.VK_MENU) < 0): time.sleep(0.005) if ctrl: win32gui.PostMessage(window.id, wcon.WM_KEYDOWN, wcon.VK_CONTROL, 0) if (button == "left"): win32gui.PostMessage(window.id, wcon.WM_LBUTTONDOWN, wcon.MK_LBUTTON, lParam) win32gui.PostMessage(window.id, wcon.WM_LBUTTONUP, wcon.MK_LBUTTON, lParam) else: win32gui.PostMessage(window.id, wcon.WM_RBUTTONDOWN, wcon.MK_RBUTTON, lParam) win32gui.PostMessage(window.id, wcon.WM_RBUTTONUP, wcon.MK_RBUTTON, lParam) if ctrl: win32gui.PostMessage(window.id, wcon.WM_KEYUP, wcon.VK_CONTROL, 0) # Sleep lower than 0.1 might cause issues when clicking in succession if type(fast) == float: time.sleep(fast) elif fast: time.sleep(0.11) else: time.sleep(userset.MEDIUM_SLEEP)
def found_lParam(self, cell, x_to_add=0): rect = win32gui.GetWindowRect(self.hwnd) x = (cell["x"]) * 2 - 2 y = cell["y"] - 2 if x % 2 == 0: scallX = (self.base_size_X + 1) / cell["max_x"] else: scallX = self.base_size_X / cell["max_x"] scallY = self.base_size_Y / cell["max_y"] x += x_to_add * 2 if y % 2 != 0: x = 24 + 26.7 * x y = 28 + 13.5 * y else: x = 51 + 24.55 * x y = 28 + 13.5 * y x = round(x * scallX) y = round(y * scallY) lParam = win32api.MAKELONG(x, y) return lParam
def rclick(self, percX, percY): if (self.handler != 0): param = win32api.MAKELONG(int(self.width * percX - 4), int(self.height * percY - 30)) win32gui.PostMessage(self.handler, win32con.WM_RBUTTONDOWN, 0, param) win32gui.PostMessage(self.handler, win32con.WM_RBUTTONUP, 0, param)
def click(self, point, clicks=1, interval=0.0, button="left", pause=0.0): """ Perform a click on the given window in the background. Sending a message to the specified window so the click takes place whether the window is visible or not. """ globals.failsafe() evt_d = self.SUPPORTED_CLICK_EVENTS[button][0] evt_u = self.SUPPORTED_CLICK_EVENTS[button][1] param = win32api.MAKELONG(point[0], point[1] + self.y_padding) # Loop through all clicks that should take place. for x in range(clicks): globals.failsafe() win32api.SendMessage(self.hwnd, evt_d, 1, param) win32api.SendMessage(self.hwnd, evt_u, 0, param) # Interval sleeping? if interval: time.sleep(interval) # Pausing after clicks are finished? if pause: time.sleep(pause)
def click_it_a(pos, hd): handle = hd client_pos = win32gui.ScreenToClient(handle, pos) tmp = win32api.MAKELONG(client_pos[0], client_pos[1]) win32gui.PostMessage(handle, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) win32gui.PostMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, tmp) win32gui.PostMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, tmp)
def home(self): self.update_l_w() if self.w < self.h: x = 35 y = 955 else: x = 27 y = 528 win32gui.SendMessage(self.hwnd_s, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0) win32gui.SendMessage(self.hwnd_t, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) time.sleep(self.speed) win32gui.SendMessage(self.hwnd_t, win32con.WM_LBUTTONUP, 0000, win32api.MAKELONG(x, y)) time.sleep(self.speed)