获取可可应用程序中使用AXUIElement在Mac OS中运行的应用程序名称

时间:2018-10-12 06:05:59

标签: macos cocoa accessibility axuielement

我正在使用AXUIElement找出Mac OS中所有正在运行的应用程序。使用它,当我将鼠标移到任何应用程序上时,都将获得所有应用程序名称。

但是我想过滤掉用户选择并在其中进行了任何交互的应用程序。我正在获取诸如AXFocused,AXEnabled,AXSelected之类的参数,但是这些参数不会在每次选择应用程序时返回true。

“ \ nAttributes:\ n AXFocused(W):“ 0” \ n AXLayoutCount:“ 24” \ n AXTitle:“” \ n AXPreventKeyboardDOMDOMEventDispatch(W):“ 0” \ n AXElementBusy:“ 0” \ n AXPosition :“ x = 1260 y = 219” \ n AXLinkedUIElements:“” \ n AXSelected:“ 0” \ n AXLanguage:“” \ n AXStartTextMarker:“ {长度= 40,字节= 0x060000000000000048730e6205000000 ... 0100000000000000}” \ n AXEnabled :“ 1” \ n AXLoaded:“ 1” \ n AXVisited:“ 0” \ n AXDOMIdentifier:“” \ n AXHelp:“” \ n AXLinkUIElements:“” \ n AXChildren:“” \ n AXRole:“ AXWebArea” \ n AXParent:“” \ n AXSelectedTextMarkerRange(W):“ {startMarker:{长度= 40,字节= 0x1300000000000000a853046205000000 ... 0100000000000000} endMarker:{长度= 40,字节= 0x1300000000000000a853046205000000 ... 0100000000000000}}” \ n AXTopLevelUIElement: “” \ n AXDOMClassList:“” \ n AXDescription:“ MacRumors Newsletter” \ n AXURL:“ x-webdoc:// 21082B85-5712-4 B41-9669-1BF2A39AA32D” \ n AXCaretBrowsingEnabled(W):“ 0” \ n AXValue:“” \ n AXBlockQuoteLevel:“ 0” \ n AXRoleDescription:“ HTML内容” \ n AXSize:“ w = 785 h = 3416” \ n AXLoadingProgress:“ 1” \ n AXWindow:“” \ n AXEndTextMarker:“ {长度= 40,字节= 0x35010000000000007042fe6505000000 ... 0100000000000000}” \ n AXFrame:“ x = 1260 y = 219 w = 785 h = 3416” \ n \ n操作:\ n AXShowMenu-显示菜单\ n AXScrollToVisible-AXScrollToVisible \ n“

例如上面的例子是我打开“邮件”时的情况。

所以我的问题是: 1)是否可以过滤出用户选择的应用程序而不仅仅是将鼠标悬停在该应用程序上? 2)还有什么其他方法可以在访问我的应用程序之前找出与哪个应用程序用户进行交互?

1 个答案:

答案 0 :(得分:0)

最后找到了解决方案。

使用NSWorkSpace激活Mac之后,我们可以在Mac上运行任何其他应用。

查看此答案,这有助于我找到解决方案。 How to retrieve the OSX application that currently receives key events