鼠标单击而不移动光标[Python]

时间:2015-12-01 04:20:30

标签: python mouseevent

我似乎无法找到这个问题的具体答案。如何在不移动光标的情况下单击屏幕上的坐标?我正在开发一个项目,它将自动安装程序,但仍然希望控制鼠标在处理安装时执行其他任务。有任何想法吗?一些例子也很棒。感谢

4 个答案:

答案 0 :(得分:2)

感谢那些试图帮助我的人。经过进一步研究,我找到了解决方案。我找到了一种使用PyAutoIt将AutoIt导入Python的方法。我一直在寻找一个ControlClick函数,它可以在不移动鼠标光标的情况下单击控件。这是一个例子:

import autoit
import time

autoit.run("notepad.exe")
autoit.win_wait_active("[CLASS:Notepad]", 3)
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
time.sleep(5)
autoit.win_close("[CLASS:Notepad]")
autoit.control_click("[Class:#32770]", "Button2")

再次感谢。该线程可以标记为已接听并已关闭:)

答案 1 :(得分:0)

# hwdn = window Id (Nox, or BlueStack), pos=(x, y) relative pos  in window 
def leftClick(hwnd, pos):
    lParam = win32api.MAKELONG(pos[0], pos[1])

    win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam) 
    win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, lParam)
    time.sleep(0.1)

答案 2 :(得分:0)

我需要类似的东西,而我发现的解决方案是:

import win32gui
import win32api
import win32con


def control_click(x, y, handle, button='left'):

    l_param = win32api.MAKELONG(x, y)

    if button == 'left':
        win32gui.PostMessage(handle, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, l_param)
        win32gui.PostMessage(handle, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, l_param)

    elif button == 'right':
        win32gui.PostMessage(handle, win32con.WM_RBUTTONDOWN, 0, l_param)
        win32gui.PostMessage(handle, win32con.WM_RBUTTONUP, 0, l_param)

该窗口不必位于前景中,但不能将其最小化,句柄和坐标必须来自控件,例如:在记事本中,句柄和坐标用于'Edit1'控件,而不用于在窗口中,如果应用程序没有通过spytool可见的控件,则可以使用句柄和窗口坐标,例如pycharm本身。

答案 3 :(得分:-1)

如果您知道要点击的屏幕坐标,可以尝试:

import pyautogui
x, y = 500, 250 # or whatever
pyautogui.click(x, y)

这将移动到鼠标指针(x,y)并单击鼠标左键。