2015-01-15 13 views
5

'dan çalışır duruma getirin Çalışan tüm Uygulama Paketlerinin bir listesini almaya çalışıyorum. Kullanıcının başlattığı GUI uygulamaları, Dock'un gösterdiği gibi veya Activity Monitor (belirli işlemlerin yanında bir simge gösterir). Tüm çalışan işlemlerin bir listesini almak için sysctl()'u KERN_PROC_ALL ile birlikte kullanabileceğimi buldum, ancak bu bana hangi uygulama paketlerinden geldiğini söylemiyor. Minecraft gibi uygulamalar sadece java olarak görünür ve bu pek kullanışlı değildir. Activity Monitor Showing Minecraft Launcher Running http://gdries.nl/activmon.pngProgram aracılığıyla çalışan uygulama paketlerini OS X

uygulama dil önemli değildir:

Ben aktivite monitörü proses grubu bilmek istiyorum kabaca ne olduğunu gösterir buldunuz. Şu anda C'de çalışıyor ve devam ediyor, ancak başka bir ortamın gerekmesi durumunda bu sorun değil. Tek yapmak istediğim, kullanıcının hangi uygulamaları kullandığını tespit etmektir, böylece her birinin kullanıldığı zamanı kaydedebilirim. (Ebeveyn Denetimleri benzer bir şey yapar ancak ayrışamayacağım plist dosyaları içinde günlüğe kaydeder)

+0

'ps' yardımcı programının kodunu indirin ve bunun için ihtiyacınız olanı kullanın. – user3629249

+0

'ps' yalnızca süreçleri bilir ve bir uygulama paketinin hangi uygulama paketinden olduğunu ve hatta uygulama paketi gibi bir şey olduğunu bilmez. Bana sysctl', 'KERN_PROC_ALL' ve' KERN_PROCARGS' ile alabildiğim aynı bilgiyi veriyor (ikincisinin dönüş formatı arkı ve belgesiz olsa da). –

cevap

7

Swift ve Cocoa API'lerini kullanarak bunu yapmanın bir yolunu buldum. Muhtemelen bu da düz c kullanarak mümkün olmalıdır, ancak bu benim uygulama için yeterince iyi.

import Foundation 
import Appkit 

// Get all running applications 
var workspace = NSWorkspace.sharedWorkspace() 
var applications = workspace.runningApplications 

for app in applications { 
    println(app) 
} 

app bir NSApplication nesnedir ve bilmem istediğini bir paket tanımlayıcı vardır.

+1

Swift 4 'NSWorkspace.shared' yerine' NSWorkspace.sharedWorkspace() 'benim için çalıştı. – Roman