私はすべての可視ウィンドウのフレームを取得する方法を理解しようとしています。 Iは、次のコードを試みたが、それは唯一のアプリケーション自体、他のウィンドウレポート{0,0,0,0}アクティブなスペース上のすべての可視ウィンドウのフレーム(原点、サイズ)を取得する方法は?
NSArray *windowArray = [NSWindow windowNumbersWithOptions:NSWindowNumberListAllApplications | NSWindowNumberListAllSpaces];
for(NSNumber *number in windowArray){
NSLog(@"Window number: %@", number);
NSWindow *window = [[NSApplication sharedApplication] windowWithWindowNumber:[number intValue]];
NSLog(@"Window: %@", NSStringFromRect([[window contentView] frame]));
}
サンプルコードは、理解されるために働きます。
をあなたは 'CGWindowListCopyWindowInfo'はNSMutableArrayのを返し、それがコピー機能であるため、あなたは、配列を解放するか、' __bridge_transfer'を使用するいずれかの必要があると仮定するべきではありません。 –
私もこれに取り組んできました。私は、特定のアプリケーションpidのすべてのアクティブウィンドウの囲み矩形を見つける必要がありました。 – StefanS
まず、このセッション(CGWindowListCopyWindowInfo)のすべてのウィンドウのウィンドウリストを取得します。あなたは、任意のウィンドウの所有者(kCGWindowOwnwerPID)のPIDを取得し、それをあなたのPIDと一致させることができます。一致すると、必要なNSRectを正確に返す関数があります。 (kCGWindowBoundsのCGRectMakeWithDictionaryRepresentation) – StefanS