如何在另一个应用程序处于焦点时模拟鼠标单击(最好是Python)

问题描述 投票:0回答:1

我正在寻找一种方法,当我的第一个显示器处于焦点状态时,在辅助显示器上模拟鼠标单击。我尝试了多种不同的策略和库,但没有任何效果。

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)

control_click(100,100,"Edit1")

这是我从另一个堆栈溢出答案中获得的代码,但它也不起作用。任何帮助将不胜感激,谢谢。

python automation
1个回答
0
投票

检查显示器的分辨率,假设为 1366 x 768,Python 始终将第一个显示器的左上角的 x 和 y 视为 (0,0),因此只需将坐标添加到您的 def 即可更改代码。

import win32gui
import win32api
import win32con

def control_click(x, y, handle, button):

l_param = win32api.MAKELONG(x+1366, y+768)

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)

control_click(100,100,"Edit1","Left")

请告诉我们此解决方案是否有帮助

© www.soinside.com 2019 - 2024. All rights reserved.