Ans*_*rma 5 macos cocoa core-graphics objective-c swift
是否可以根据返回的值激活(置于前台)窗口CGWindowListCopyWindowInfo?(即使用窗口 ID ( kCGWindowNumber) 或其他内容。)
编辑:
我应该指定我的应用程序(将使用辅助功能运行)需要能够为其他应用程序的窗口执行此操作。
自从发布问题以来我发现了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);
Run Code Online (Sandbox Code Playgroud)
无需释放array或windows. 数组中的子元素会被自动处理,并且数组会桥接到 ARC 释放的 NSArray。
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |