我正在尝试获取应用程序的窗口(让我们以Firefox为例)并将其带到最前面并将其集中。当程序没有最大化时,它工作正常,允许我将任何Firefox的窗口带到前面。
然而,当最大化时,它只是将整组窗口放在前面,无论它是否是我特别选择的窗口。这是我正在使用的:
AXUIElementPerformAction (element, kAXRaiseAction);
ProcessSerialNumber psn = [self serialNumberOfPid: [appPid unsignedIntValue]];
SetFrontProcessWithOptions (&psn, kSetFrontProcessFrontWindowOnly);
阅读其他一些帖子,我试过这个:
AXUIElementSetAttributeValue(element, kAXMainAttribute, kCFBooleanTrue);
AXUIElementSetAttributeValue(element, kAXFocusedAttribute, kCFBooleanTrue);
AXUIElementPerformAction (element, kAXRaiseAction);
ProcessSerialNumber psn = [self serialNumberOfPid: [appPid unsignedIntValue]];
SetFrontProcessWithOptions (&psn, kSetFrontProcessFrontWindowOnly);
我做错了什么?为什么它只在窗户最大化时才会发生?有没有更好的方法呢?
答案 0 :(得分:0)
尝试使用kAXFrontmostAttribute
属性:
AXUIElementSetAttributeValue(element, kAXFrontmostAttribute, kCFBooleanTrue);