在 Mac 上的 Cocoa 中,我想检测属于另一个应用程序的窗口何时关闭。我该怎么做?
我只知道如何使用
检测其他窗口的调整大小或最小化 <块引用>AXObserverAddNotification(observer,application,kAXWindowMiniaturizedNotification, nil);
<块引用>AXObserverAddNotification(observer, application, kAXWindowResizedNotification, nil);
但我没有找到像 kAXWindowClosedNotification
这样的通知。
答案 0 :(得分:0)
通知是 kAXUIElementDestroyedNotification
,但它也发送给其他元素。如果元素是窗口,则观察窗口或检查回调。
if (CFStringCompare(notification, kAXUIElementDestroyedNotification, 0) == kCFCompareEqualTo) {
CFTypeRef role;
AXError error = AXUIElementCopyAttributeValue((AXUIElementRef)element, kAXRoleAttribute, &role);
if (error == kAXErrorSuccess) {
if (CFStringCompare(role, kAXWindowRole, 0) == kCFCompareEqualTo) {
NSLog(@"Window is closed");
}
CFRelease(role);
}
}