Dav*_*ave 6 c++ macos accessibility macos-carbon osx-yosemite
我正在尝试使用辅助功能 API 来获取活动窗口,问题是当我尝试获取焦点应用程序时,出现无法完成错误。下面是我的一小段代码:
AXUIElementRef systemElement =
AXUIElementCreateSystemWide();
AXUIElementRef focused = nullptr;
AXError error = AXUIElementCopyAttributeValue (systemElement,
kAXFocusedApplicationAttribute, (CFTypeRef*) &focused);
// error value results in kAXErrorCannotComplete
Run Code Online (Sandbox Code Playgroud)
我启用了可访问性,并将我的代码与我在 GitHub 上找到的代码进行了比较,但似乎没有任何效果,而且我没有任何想法。也许我忽略了一些东西?
Tim*_*det -2
我尝试通过首先设置消息超时来解决此问题:
AXError error_code = AXUIElementSetMessagingTimeout( system_element, 0.1f );
Run Code Online (Sandbox Code Playgroud)
这可能不允许元素正确复制属性值,但它也没有导致挂起(这就是我收到 kAXErrorCannotComplete 时发生的情况)。尝试收集属性值后,我将消息超时重置回系统默认值:
error_code = AXUIElementSetMessagingTimeout( system_element, 0.0f );
Run Code Online (Sandbox Code Playgroud)
正如我最初所想的那样,这似乎对我的情况实际上没有帮助。留下答案虽然看起来并不能解决问题,但可能会为某人提供一些信息。