如何在 Windows 10 中制作执行鼠标单击的 python 脚本?
How to make python script that performs a Mouse Click in Windows 10?
我正在尝试一个简单的 python 脚本,它点击屏幕坐标。
我尝试过使用 Pyautogui、pynput、pydirectinput、pywinauto...但是在其中 none 中实际进行了点击,唯一有效的方法是将鼠标移动到坐标。
脚本很简单,还是不行,推断是win10相关的问题
有谁知道我该如何解决这个问题?
我是否需要安装其他任何东西,也许是驱动程序?
是否缺少给予某种许可?
有没有办法让我命令鼠标硬件进行点击,而不是虚拟化点击?
下面是我的一些尝试
OBS: 在所有尝试中鼠标移动,但没有点击。
Pyautogui:
import pyautogui
pyautogui.moveTo(35, 240)
pyautogui.click()
Pydirectinput:
import pyautogui
import pydirectinput
pydirectinput.moveTo(35, 240)
pydirectinput.click()
pywinauto:
import pywinauto
from pywinauto import Desktop, Application, mouse, findwindows
pywinauto.mouse.move(coords=(160, 400))
pywinauto.mouse.double_click(button='left', coords=(160, 400))
Direct windows click:
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,200)
Autoclicker using pynput:
import time
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
delay = 0.001
button = Button.left
start_stop_key = KeyCode(char='s')
exit_key = KeyCode(char='e')
class ClickMouse(threading.Thread):
def __init__(self, delay, button):
super(ClickMouse, self).__init__()
self.delay = delay
self.button = button
self.running = False
self.program_running = True
def start_clicking(self):
self.running = True
def stop_clicking(self):
self.running = False
def exit(self):
self.stop_clicking()
self.program_running = False
def run(self):
while self.program_running:
while self.running:
mouse.click(self.button)
time.sleep(self.delay)
time.sleep(0.1)
mouse = Controller()
click_thread = ClickMouse(delay, button)
click_thread.start()
def on_press(key):
if key == start_stop_key:
if click_thread.running:
click_thread.stop_clicking()
else:
click_thread.start_clicking()
elif key == exit_key:
click_thread.exit()
listener.stop()
with Listener(on_press=on_press) as listener:
listener.join()
试试这个方法:
import pywinauto
app = pywinauto.Application().connect(path='your_process_name.exe')
app.MainDialog.click_input(coords=(x, y))
要使点击方法起作用,您需要指定坐标所在的 process/dialog。
使用 connect() 方法连接到现有方法,否则使用 start() 打开新实例。
我正在尝试一个简单的 python 脚本,它点击屏幕坐标。
我尝试过使用 Pyautogui、pynput、pydirectinput、pywinauto...但是在其中 none 中实际进行了点击,唯一有效的方法是将鼠标移动到坐标。
脚本很简单,还是不行,推断是win10相关的问题
有谁知道我该如何解决这个问题?
我是否需要安装其他任何东西,也许是驱动程序?
是否缺少给予某种许可?
有没有办法让我命令鼠标硬件进行点击,而不是虚拟化点击?
下面是我的一些尝试
OBS: 在所有尝试中鼠标移动,但没有点击。
Pyautogui:
import pyautogui
pyautogui.moveTo(35, 240)
pyautogui.click()
Pydirectinput:
import pyautogui
import pydirectinput
pydirectinput.moveTo(35, 240)
pydirectinput.click()
pywinauto:
import pywinauto
from pywinauto import Desktop, Application, mouse, findwindows
pywinauto.mouse.move(coords=(160, 400))
pywinauto.mouse.double_click(button='left', coords=(160, 400))
Direct windows click:
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
click(10,200)
Autoclicker using pynput:
import time
import threading
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
delay = 0.001
button = Button.left
start_stop_key = KeyCode(char='s')
exit_key = KeyCode(char='e')
class ClickMouse(threading.Thread):
def __init__(self, delay, button):
super(ClickMouse, self).__init__()
self.delay = delay
self.button = button
self.running = False
self.program_running = True
def start_clicking(self):
self.running = True
def stop_clicking(self):
self.running = False
def exit(self):
self.stop_clicking()
self.program_running = False
def run(self):
while self.program_running:
while self.running:
mouse.click(self.button)
time.sleep(self.delay)
time.sleep(0.1)
mouse = Controller()
click_thread = ClickMouse(delay, button)
click_thread.start()
def on_press(key):
if key == start_stop_key:
if click_thread.running:
click_thread.stop_clicking()
else:
click_thread.start_clicking()
elif key == exit_key:
click_thread.exit()
listener.stop()
with Listener(on_press=on_press) as listener:
listener.join()
试试这个方法:
import pywinauto
app = pywinauto.Application().connect(path='your_process_name.exe')
app.MainDialog.click_input(coords=(x, y))
要使点击方法起作用,您需要指定坐标所在的 process/dialog。 使用 connect() 方法连接到现有方法,否则使用 start() 打开新实例。