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