CGEventPost并不总是移动鼠标m

2024-04-28 22:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在macossierra中使用Python环境中的Quartz Event Services以编程方式移动鼠标时,我遇到了一些问题。在

例如:

运行此脚本时:

from Quartz.CoreGraphics import CGEventCreateMouseEvent
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGMouseButtonLeft
from Quartz.CoreGraphics import kCGEventMouseMoved
from Quartz.CoreGraphics import kCGHIDEventTap


def MouseMove(x, y):
        event = CGEventCreateMouseEvent(None, kCGEventMouseMoved, (x, y), kCGMouseButtonLeft)
        CGEventPost(kCGHIDEventTap, event)

MouseMove(100, 100)

一切正常,鼠标移动到(x: 100, y: 100)。在

但是由于某些原因,此过程在某些应用程序中无法移动鼠标。特别是在我的例子中,我的MacBook在Steam上运行Call of Duty: Modern Warfare 2,以这种方式移动鼠标不会在这个应用程序中注册,但有趣的是,我仍然能够在应用程序中使用CGEventPost生成鼠标点击,而不是鼠标移动。在

所以我做了一些研究,试图弄清楚为什么会发生这种情况,而我能在网上找到的与我的问题相关的最接近的事情是this question,我提到这一点的原因是因为我想知道,在链接问题中,我是否需要调用类似于CGEventSetIntegerValueField的方法,而不是更新kCGMouseEventClickState更新鼠标事件与鼠标的移动有关,以便应用程序知道鼠标确实已移动。然而,我在CGEventField documentation中没有找到这样的方法,我只是觉得我遗漏了一些东西,或者这甚至与问题无关,但这是我能找到的唯一线索。在

请帮忙。如果有人能给我一些建议,我将不胜感激。在


Tags: fromimportevent应用程序方式原因鼠标coregraphics
1条回答
网友
1楼 · 发布于 2024-04-28 22:34:31

我找到了答案。在

我改了这句话:

event = CGEventCreateMouseEvent(None, type, (x, y), kCGMouseButtonLeft)
CGEventPost(kCGHIDEventTap, event)

为此:

^{pr2}$

当然导入了:CGPostMouseEvent

因此,移动鼠标在任何地方和所有应用程序中都可以工作。它工作的原因是发现CGPostMouseEvent发生在本地机器的更深层次上,而不是{}。在

相关问题 更多 >