鼠标位置 为什么不是我设置的位置!????而是跟随物理鼠标跑
python3吧
全部回复
仅看楼主
level 1
sorrya0 楼主
import win32gui
import win32con
import win32api
import time
import os
#需要用到pywin32的库
times = 6
wdname = u'Albion Online Client' # 窗口名
handle = win32gui.FindWindow(0, wdname) # 窗口句柄
print('窗口名和窗口句柄', wdname, handle)
if handle == 0:
for i in range(10):
print("没有获取到《Albion Online Clinet》窗口")
else:
left, top, right, bot = win32gui.GetWindowRect(handle) # 窗口所在位置的坐标
for t in range(5):
times -= 1
print('将在倒数%d秒后点击现在鼠标所在Albion的位置' % times)
tempt = win32api.GetCursorPos() # 记录鼠标所处位置的坐标
windowRec = win32gui.GetWindowRect(handle) # 目标子句柄窗口的坐标
x = tempt[0] - windowRec[0] # 计算相对x坐标
y = tempt[1] - windowRec[1] # 计算相对y坐标
print('坐标为', x, y)
time.sleep(1) # 每1s输出一次
def doClick(cx, cy):#点击坐标
print('点击',cx,cy,'坐标')
long_position = win32api.MAKELONG(cx, cy) # 模拟鼠标指针 传送到指定坐标
win32api.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position) # 模拟鼠标按下
win32api.SendMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position) # 模拟鼠标弹起
'测---------------------试'
for i in range(5):
if x>=left and y>=top and x < right and y < bot:
print('5秒后点击坐标',x,y)
time.sleep(5) # 每5s输出一次
doClick(x, y) # 可以后台点击但是程序不能最小化
elif x > 9999 and y > 9999:
for i in range(10):
print('程序不能最小化')
break
else:
for i in range(10):
print('鼠标不在Albion界面')
break
print('程序----------------------结束')
2022年02月07日 10点02分 1
level 1
sorrya0 楼主
目前 修改的方法来自 国外的问答网站 属于锁定全屏幕鼠标位置的方法
import win32gui
import win32con
import win32api
import time
import os
#需要用到pywin32的库
times = 6
wdname = u'Albion Online Client' # 窗口名
handle = win32gui.FindWindow(0, wdname) # 窗口句柄
print('窗口名', wdname,'窗口句柄', handle)
if handle == 0:
for i in range(10):
print("没有获取到《Albion Online Clinet》窗口")
else:
left, top, right, bot = win32gui.GetWindowRect(handle) # 窗口所在位置的坐标
for t in range(5):
times -= 1
print('将在倒数%d秒后点击现在鼠标所在Albion的位置' % times)
tempt = win32api.GetCursorPos() # 记录鼠标所处位置的坐标
windowRec = win32gui.GetWindowRect(handle) # 目标子句柄窗口的坐标
print("目标子句柄窗口",windowRec)
x = tempt[0] - windowRec[0] # 计算相对x坐标
y = tempt[1] - windowRec[1] # 计算相对y坐标
print('坐标为', x, y)
time.sleep(1) # 每1s输出一次
def doClick(cx, cy):#点击坐标
#print('点击',cx,cy,'坐标')
long_position = win32api.MAKELONG(cx, cy) # 模拟鼠标指针 传送到指定坐标
print('点击',cx,cy,'坐标',long_position)
win32api.SendMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position) # 模拟鼠标按下
#time.sleep(1e-2)
win32api.SendMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position) # 模拟鼠标弹起
'测---------------------试'
for i in range(500):
if x>=left and y>=top and x < right and y < bot:
print('10秒后点击坐标',x,y)
time.sleep(10) # 每5s输出一次
zx, zy = win32gui.ClientToScreen(handle, (x, y))# 窗口坐标转化为屏幕坐标
win32api.ClipCursor((zx-8,zy-32,zx-6,zy-30)) # 锁定窗口鼠标 win32api.ClipCursor((x-1,y-1,x+1,y+1))
#win32api.SetCursorPos((zx,zy))
doClick(zx, zy) # 可以后台点击但是程序不能最小化
win32api.ClipCursor((0,0,0,0)) # 解锁鼠标窗口
elif x > 9999 and y > 9999:
for i in range(10):
print('程序不能最小化')
break
else:
for i in range(10):
print('鼠标不在Albion界面')
break
print('程序----------------------结束')
2022年02月09日 12点02分 2
1