くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

【swift】起動中のアプリケーション一覧を取得する【NSRunningApplication】

f:id:mask0702:20150921223621p:plain

起動中のアプリケーションの中で、かつactiveなもの(最前面のもの)のアプリケーション名を取得した時のメモ。

起動中のアプリケーションを取得する方法がわからず、四苦八苦しました。
最初は「なんかmainWindowってそれっぽいな...」と思い以下のようなコードを試していました。

 let anApplication = MyApplication.sharedApplication()
 NSLog(anApplication.mainWindow!.title!)

確かにこれでwindowの名前は取れたのですが、別のアプリケーションが最前面に居た際に
fatal error: unexpectedly found nil while unwrapping an Optional value
のエラーが出て、うまく取得できませんでした。

仕方がないのでいろいろ調べていたら
NSRunningApplicationクラスがあることを知り、それっぽいなと思って調べたところ
NSWorkspace.sharedWorkspace().runningApplicationsで現在起動中のアプリケーションが取得できることがわかりました。
なので以下のようなコードで起動中のアプリケーション一覧を取得することができました。

 // 起動中のアプリケーション一覧を取得
 let runningApps = NSWorkspace.sharedWorkspace().runningApplications
        
 for app in runningApps {
       // アクティブなものを出力
       if app.active {
           print(app.localizedName!)
       }
  }

参考にさせていただいた記事qiita.com
developer.apple.com


詳解 Swift

詳解 Swift