gpt4 book ai didi

python随机鼠标移动

转载 作者:行者123 更新时间:2023-11-30 23:25:54 25 4
gpt4 key购买 nike

我想在指定的矩形区域(坐标x1,y1,x2,y2,x3,y3,x4,y4)进行随机鼠标移动。运动应该是平滑的、随机的,而不仅仅是直线,在指定的时间内随机上/下/左/右/等。

你能给我一个可以学习的例子吗?非常感谢

最佳答案

此代码仅适用于 Windows。您可以尝试 random_movement 函数内的参数以获得更好的结果。祝你好运!

import ctypes
import random
import time
import math

def move_mouse(pos):
x_pos, y_pos = pos
screen_size = ctypes.windll.user32.GetSystemMetrics(0), ctypes.windll.user32.GetSystemMetrics(1)
x = 65536L * x_pos / screen_size[0] + 1
y = 65536L * y_pos / screen_size[1] + 1
return ctypes.windll.user32.mouse_event(32769, x, y, 0, 0)

def random_movement(top_left_corner, bottom_right_corner, min_speed=100, max_speed=200):
'''speed is in pixels per second'''

x_bound = top_left_corner[0], bottom_right_corner[0]
y_bound = top_left_corner[1], bottom_right_corner[1]

pos = (random.randrange(*x_bound),
random.randrange(*y_bound))

speed = min_speed + random.random()*(max_speed-min_speed)
direction = 2*math.pi*random.random()

def get_new_val(min_val, max_val, val, delta=0.01):
new_val = val + random.randrange(-1,2)*(max_val-min_val)*delta
if new_val<min_val or new_val>max_val:
return get_new_val(min_val, max_val, val, delta)
return new_val

steps_per_second = 35.0
while True:
move_mouse(pos)
time.sleep(1.0/steps_per_second)

speed = get_new_val(min_speed, max_speed, speed)
direction+=random.randrange(-1,2)*math.pi/5.0*random.random()

new_pos = (int(round(pos[0]+speed*math.cos(direction)/steps_per_second)),
int(round(pos[1]+speed*math.sin(direction)/steps_per_second)))

while new_pos[0] not in xrange(*x_bound) or new_pos[1] not in xrange(*y_bound):
direction = 2*math.pi*random.random()
new_pos = (int(round(pos[0]+speed*math.cos(direction)/steps_per_second)),
int(round(pos[1]+speed*math.sin(direction)/steps_per_second)))
pos=new_pos

示例:

random_movement((300,300),(600,600))

关于python随机鼠标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22784341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com