我正在开发一个macOS应用程序来控制光标。我正在使用一个CGEvent点击,我正在添加一些算法到CGEvents,以抵消最后的鼠标位置。虽然这款应用在原则上是按预期工作的,但在某些情况下--更具体地说:当使用某些流行的插图软件运行应用程序,并使用手写笔--时,该应用程序正在为原来位置的鼠标产生一些闪烁的“幽灵”位置。好的是,在以root用户身份登录时,运行应用程序可以解决这个问题。我读过不少这样的帖子,但这篇文章最能解决这个问题:
https://stackoverflow.com/a/9899901/5066660
如这篇文章所述,问题可能是:
不幸的是,() CGEventTapCreate() doc说:只有作为根用户运行的进程才能在HID事件进入窗口服务器的位置找到事件点击;对于其他用户,此函数返回NULL.。
这个函数肯定不会返回null,因为tap是有效的。另外,我尝试了所有可能的参数组合,但它们的作用都是一样的。在该职位中,建议进一步处理以下问题:
也许您可以将此功能分解为一个具有超级用户权限的单独进程,从而使您的应用程序的其余部分保持正常的用户模式?我相信还有一种方法可以为您的程序所采取的特定操作请求根权限。
现在,如果这是一个可能的解决方案,我想实现它!所以我的问题是:怎么做?我偶然发现运行具有更高权限的脚本,但不仅仅是CoreGraphics代码(例如,CGEventTap )。这个是可能的吗?有人能给我举一个例子,说明如何做到这一点,或者给出其他解决问题的方法吗?
欢迎所有的帮助,非常感谢。
发布于 2018-09-20 09:43:17
来自苹果公司的文档:
如果下列条件之一为真,事件点击将接收上键和下键事件:
-当前进程以根用户的身份运行.
-启用了辅助设备的访问。在OSXv10.4中,您可以使用系统首选项、通用访问面板、键盘视图.启用此功能。
因此,授予应用程序可访问性权限为我解决了这个问题(不需要以管理员身份运行)。这可以实现系统首选项、->安全和隐私、->可访问性,并在那里添加程序。
https://stackoverflow.com/questions/46962533
复制相似问题