我想将来自外部应用程序(例如 textedit)的某个窗口设置为最前面。
我可以使用 GetFrontProcess 成功获取对应用程序本身的引用,并检查它是否在最前面。如果不是,我可以使用 setFrontProcess 使其集中。
然后,我可以使用辅助功能 API 检查该应用程序下的所有窗口。我正在检查某个窗口是否存在,如果存在,我将其与应用程序的最前面的窗口进行比较:
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
如果我感兴趣的窗口不在最前面,我需要这样设置。我以为我可以使用 AXUIElement Set AttributeValue 来做到这一点,但我没有取得任何成功。以下是我尝试过的方法。
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
我已检查该窗口是否存在,并且应用程序已成功“切换到”。但是为什么这行代码没有把指定的窗口带到最前面呢?
谢谢。