Çalışan bir uygulama için pencere listesini almak istiyorum. Çalışan uygulama listesini [[NSWorkspace sharedWorkspace] runningApplications]
'dan alabilirim, ancak pencere listesi yalnızca NSApplication
'da kullanılabilir. NSRunningApplication
'dan NSApplication
'a dönüştürmenin bir yolu veya pencere listesini daha doğrudan almak için bir yol var mı? CGWindowListCopyWindowInfo
CGWindowListCopyWindowInfo
numaralı CoreGraphics ürününe göz atmanız gerekir.NSRunningApplication pencereleri nasıl edinilir
cevap
Bu
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
gibi diyoruz ve daha sonra, pencere bilgilerinin diziyi sürekli tekrarlanması ilgilendiğiniz uygulamadan olanlar bulmak ve onunla istediğinizi yapın.
Hey Ken! Bu iyi bir cevap/ipucu, ama hala 'CG/NSWindow' ;-)' NSRunningApplication' pencere/pencere numarası sağlamaz ve ben (muhtemelen yanlış bir şey yapıyor) çökmesini nasıl çalıştığını anlatmıyor. CGWindowListCopyWindowInfo ' –
ile elde edilen' CGWindowID 'ile NS/CGWindow' almak için başka bir uygulama için bir NSWindow oluşturamazsınız. Belirli bir uygulama için pencereleri aldığınız sürece, 'kCGWindowOwnerPID' anahtarının değerini 'NSRunningApplication'ın' processIdentifier' özelliğine göre inceleyebilir ve karşılaştırabilirsiniz. – mattsven
İşte aynı soru, zaten yanıtladı: http://stackoverflow.com/questions/2107657/mac-cocoa-getting-a-list-of-windows-using-accessibility-api –
Burada bile http: // stackoverflow.com/questions/13759688/how-to-find-out-if-an-instance-of-my-app-is-already-running-or-not/13759928#13759928 –
Dul listesi daha doğrudan demektir? –