gpt4 book ai didi

objective-c - MacOS - 激活给定窗口 ID 的窗口

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:45 24 4
gpt4 key购买 nike

是否可以activate (bring to the fore)基于 CGWindowListCopyWindowInfo 返回值的窗口? (即使用 window ID (kCGWindowNumber) or something else 。)

编辑:

我应该指定我的应用程序(将以辅助功能权限运行)需要能够为其他应用程序的窗口执行此操作。

自发布问题以来,我发现了 AXUIElementPerformAction。我这样做的方向正确吗?

或者在我的代码中运行 AppleScript 桥是最好的方法吗?

最佳答案

您可以通过 pid 附加到进程并获取其窗口。然后使用 kAXRaiseAction 将它们放在前面,如下所示:

AXUIElementRef element = AXUIElementCreateApplication(pid);
if (element) {
CFArrayRef array;
AXUIElementCopyAttributeValues(element, kAXWindowsAttribute, 0, 99999, &array);

if (array == nullptr)
return;

NSArray *windows = (NSArray *)CFBridgingRelease(array);
for (NSUInteger i = 0; i < windows.count; ++i) {
AXUIElementRef ref = (__bridge AXUIElementRef)(windows[i]);
AXError error = AXUIElementPerformAction(ref, kAXRaiseAction);
// handle error
}
}

CFRelease(element);

无需释放arraywindows。自动处理数组中的子项,并将数组桥接到由 ARC 发布的 NSArray。

关于objective-c - MacOS - 激活给定窗口 ID 的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com