将进程'窗口设置为前面。为什么最大化时这不起作用?

问题描述 投票:1回答:1

我试图获得一个应用程序的窗口(让我们以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);

我究竟做错了什么?为什么它只在窗户最大化时才会发生?有没有更好的方法呢?

objective-c macos nswindow
1个回答
0
投票

尝试使用kAXFrontmostAttribute属性:

AXUIElementSetAttributeValue(element, kAXFrontmostAttribute, kCFBooleanTrue);
© www.soinside.com 2019 - 2024. All rights reserved.