用python模拟魔兽世界中的鼠标点击,但在特定坐标的背景下



我试图模拟鼠标右键点击魔兽世界,我成功地将键盘按压和鼠标点击发送到最小化的窗口,而没有激活它,但对于鼠标点击,它只是没有点击我想要的地方。如果我在激活的窗口中进行,光标的位置是959519,但如果我用进行尝试

win32api.PostMessage(hwndMain, win32con.WM_RBUTTONDOWN, 0, 34014143) 

win32api.PostMessage(hwndMain, win32con.WM_RBUTTONDOWN, 959, 519)

它只是不起作用,它只在魔兽世界中点击,但它仍然使用光标的真实位置。

我是Python的新手,你知道解决方案吗?

下面的整个代码我使用

from pynput.keyboard import Key, Controller
import time
import random
from tkinter import *
import win32api
import win32con
from window_list import window_list
keyboard = Controller()
looping = 0
hwndMain = window_list["World of Warcraft"]
time.sleep(1)
def inter_attack():
for key in range(6):    
time.sleep(random.uniform(0.5, 0.7))

win32api.PostMessage(hwndMain, win32con.WM_KEYDOWN, 0x46, 0) 
win32api.PostMessage(hwndMain, win32con.WM_KEYUP, 0x46, 0)
time.sleep(random.uniform(2.5, 3.5))

win32api.PostMessage(hwndMain, win32con.WM_KEYDOWN, 0x32, 0) 
win32api.PostMessage(hwndMain, win32con.WM_KEYUP, 0x32, 0)

#infinite loop
while looping == 0:     
#time.sleep(1) 
#win32api.SetCursorPos((959, 519)) # just to find if coordinates work and where to put the mouse click
time.sleep(0.1)

win32api.PostMessage(hwndMain, win32con.WM_RBUTTONDOWN, 0, 34014143)  
win32api.PostMessage(hwndMain, win32con.WM_RBUTTONUP, 0, 34014143)
time.sleep(1.5)   

win32api.PostMessage(hwndMain, win32con.WM_KEYDOWN, 0x35, 0) 
win32api.PostMessage(hwndMain, win32con.WM_KEYUP, 0x35, 0)
inter_attack()

我建议使用键盘和鼠标模块-我相信win32api更强大,但keyboardmouse更简单。

pip install keyboard
pip install mouse

您可以查看文档以获取更多信息,但也可以执行keyboard.send('w')

对于mouse,它是mouse.click('right')

你不能让鼠标点击正确坐标的原因是,出于某种原因,模拟鼠标移动会在屏幕上找到位置。因此,这不是一个拖动,因为游戏以鼠标为中心。(它没有移动输入,只是传送鼠标。(

相关内容

  • 没有找到相关文章

最新更新