我试图使用辅助功能API来获取活动窗口,问题是当我尝试获取焦点应用程序时,我得到了一个无法完成的错误。下面是我的一小段代码:
AXUIElementRef systemElement =
AXUIElementCreateSystemWide();
AXUIElementRef focused = nullptr;
AXError error = AXUIElementCopyAttributeValue (systemElement,
kAXFocusedApplicationAttribute, (CFTypeRef*) &focused);
// error value results in kAXErrorCannotComplete
我启用了辅助功能,并将我的代码与我在GitHub上找到的代码进行了比较,但似乎没有任何效果,而且我的想法很新鲜。也许我忽略了什么?
答案 0 :(得分:0)
我尝试通过首先设置消息传递超时来解决此问题:
AXError error_code = AXUIElementSetMessagingTimeout( system_element, 0.1f );
可能没有允许元素正确复制属性值,但它也没有导致事情挂起(这是我获取kAXErrorCannotComplete时发生的事情)。尝试收集属性值后,我将消息传递超时重置为系统默认值:
error_code = AXUIElementSetMessagingTimeout( system_element, 0.0f );
正如我最初想的那样,这似乎对我的情况没有任何帮助。留下答案虽然似乎没有解决问题,但它可能会为某些人提供一些信息。