7

我想以编程方式启用系统偏好设置中的辅助设备访问。但问题是,我的应用程序没有以root用户身份运行,我不希望我的应用程序以root用户身份运行,也不应该请求任何身份验证。以编程方式启用辅助设备访问

我想点击全局的所有键盘事件。我使用CGEventTapCreate()为same.In CGEventTapCreate的文档()API要提到的是,事件的水龙头接收键向上和按键事件,如果满足下列条件之一为真:

  1. 当前进程以root用户身份运行。
  2. 辅助设备访问已启用。在稍后的Mac OS X v10.4 &中,您可以使用系统偏好设置,通用访问面板,键盘视图启用此功能。

我尝试通过检查从系统偏好设置启用访问辅助设备手动,它给了我预期的输出。

那么有没有什么办法可以通过程序来做同样的事情,而不要求进行身份验证,并且应用程序没有以root用户身份运行?

谢谢,

Dheeraj。

回答

6

您可以运行一个AppleScript(或AppleScript的翻译成ScriptingBridge以上的AppleEvents无论你的Objective-C层)

这里是做类似的东西,你需要什么样一个AppleScript,我在一个特定的项目中使用:

on isUIScriptingOn() 
    tell application "System Events" to set isUIScriptingEnabled to UI elements enabled 
    return isUIScriptingEnabled 
end isUIScriptingOn 

on turnUIScriptingOn(switch) 
    tell application "System Events" 
     activate 
     set UI elements enabled to switch 
    end tell 
end turnUIScriptingOn 

on run 
    if not isUIScriptingOn() then 
     display dialog "Enable Access for assistive devices (found in the Universal Access System Preference) must be on for this software to correctly work. This program will enable this setting for you" 
     turnUIScriptingOn(true) 
     display dialog "Access for assistive devices in now on" 
    end if 
end run 
3

它通常被认为是不礼貌的更改用户的系​​统设置,而无需至少告诉他们,如果没有明确请求许可。大多数需要此设置的应用程序只检查是否启用,如果不启用,则告诉用户打开它。

+0

有一种方法可以基于每个进程启用它。不幸的是,我不知道它是什么,我有这样做的应用程序,我想我回想起在cocoa dev邮件列表上看到的东西 – hooleyhoop 2010-06-01 19:48:44

+0

而你如何检查它是否以编程方式启用? – Chetan 2011-08-03 21:21:19

0

有一种方法可以基于每个进程启用它。不幸的是我不知道它是什么,我有做到这一点寿的应用程序,我想我记得看到一些关于它的可可开发邮件列表

确定,它可能使其能够在每个进程基础,而不需要管理员权限?如果是的话,所有的事件都会被捕获,或者只有属于这个过程的事件?

4

好你们的解决方案/一些背景信息can be found at this address ..

因此,苹果想出了老虎另一个解决方案,解决了这些问题:神奇的功能AXMakeProcessTrusted。这将使API 仅用于您的应用程序,并需要从以root身份运行的进程调用,因此它是安全的。它也是全自动的,所以除了询问用户密码之外,用户无需做任何事情。 问题是,似乎没有人使用它。每个我见过的第三方应用程序,甚至Automator只是要求用户手动选中系统偏好设置中的方框。这是更多的工作来实现,并有一个巨大的无证错误(应用程序必须重新启动之前,它实际上是受信任的更新:报告为#5711990),但我真的认为人们应该使用它。所以,我想我会发布代码,以便在您的应用中实现它。它包含一个助手代理,您应该可以将其放入您的项目中。

+0

这一个应该被设置为正确的答案。 – 2013-04-05 23:30:20

+0

不幸的是,存档博客文章不包括示例代码。 – JWWalker 2014-03-28 16:24:00

+0

这不会在特立独行的工作 – 2014-11-27 12:07:46

相关问题