当其他应用 window 移动/调整大小时收到通知
Getting a notification when other app's window move / resize
我正在创建一个屏幕抓取应用程序。我现在正在尝试的是在给定应用程序的活动 windows 的角周围放置一个矩形(按 PID)。
我通过获取对工作区中所有活动 windows 的引用并使用 CGWindowListCopyWindowInfo
来匹配所有者 PID 来做到这一点。现在我有一个活动 windows 的数组,但是在显示包含上述所有 windows 的矩形之后,我没有找到一种方法来注册以在这些 windows 时获得通知] 被移动和/或调整大小以调整大小并适合我绘制的矩形。
以下是我用来获取所选应用程序的 NSWindow
帧的代码示例。
pid_t pid = [selectedApplication processIdentifier];
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionAll,kCGNullWindowID);
for (NSMutableDictionary* entry in (NSArray*)windowList) {
pid_t ownerPID = [[entry objectForKey:(id)kCGWindowOwnerPID] integerValue];
if (pid == ownerPID) {
// setting the bounds for each window of the application on match
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[entry objectForKey:(id)kCGWindowBounds], &bounds);
.....
有没有什么方法可以让我注册那些 NSwindow
给定我不拥有的应用程序的特定 PID 的更新?
目前这是 Apple API 的限制。没有找到任何其他方法来从其他应用程序 NSWindow
s 注册更新 NSNotification
s。也许这是一种安全措施。
我正在创建一个屏幕抓取应用程序。我现在正在尝试的是在给定应用程序的活动 windows 的角周围放置一个矩形(按 PID)。
我通过获取对工作区中所有活动 windows 的引用并使用 CGWindowListCopyWindowInfo
来匹配所有者 PID 来做到这一点。现在我有一个活动 windows 的数组,但是在显示包含上述所有 windows 的矩形之后,我没有找到一种方法来注册以在这些 windows 时获得通知] 被移动和/或调整大小以调整大小并适合我绘制的矩形。
以下是我用来获取所选应用程序的 NSWindow
帧的代码示例。
pid_t pid = [selectedApplication processIdentifier];
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionAll,kCGNullWindowID);
for (NSMutableDictionary* entry in (NSArray*)windowList) {
pid_t ownerPID = [[entry objectForKey:(id)kCGWindowOwnerPID] integerValue];
if (pid == ownerPID) {
// setting the bounds for each window of the application on match
CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)[entry objectForKey:(id)kCGWindowBounds], &bounds);
.....
有没有什么方法可以让我注册那些 NSwindow
给定我不拥有的应用程序的特定 PID 的更新?
目前这是 Apple API 的限制。没有找到任何其他方法来从其他应用程序 NSWindow
s 注册更新 NSNotification
s。也许这是一种安全措施。