QuitApp++1.3.0
いえっす![:グッド:]
前回書いたQuitApp++で悩んでた問題点を解消。快感。快感。
最近、Xcodeすら開いてなかったし、プログラミングなどとは無縁の生活をおくってたから、久々にコード見た時はパニック寸前だった。何がどうなってんのやら...
でも、時間をおいていたから違う視点から見れてかえって良かったのかも知れない。
やってる最中は必死なのに、出来上がればこんな物かっていうくらい簡単。
問題有りそうな所も発見できたし良しとしておこう。
オープンソースじゃ無いけれども、機嫌が良いので、内部的な事を簡単に説明。
(興味が無い人は飛ばしてください)
さて、何をどうしたかと言うと、簡単にいえば、UNIXコマンドを叩くのである。
ある人の、「killコマンド使ったら?」という言葉がきっかけで、やってみようかなとやる気をだしたのです。
まったく頭になかった。目から鱗だね。たしかに奴は暴走したときに便利なコマンドである。
しかし強力なので(なんせ強制終了だし)今回は今まで通りのモードも残すことにした。セイフティな奴。
まぁ新しいモードはオイラ自身の為に付けたような機能だし、QuickTimeなどで書き出し後は、ファイルはちゃんと保存されてるので強制終了されようが、無問題なのである。
さて、UNIXコマンドを使う場合はNSTaskを使うんだけれども、オイラは初めてなわけで、でも直ぐに理解できた。システムイベントを使うよりも何倍も簡単 & Webの情報が凄く多い事にビックリ。前者は皆無に等しいからね(苦笑)
簡単って言っても、もの凄く悩んだ事が有る。
killコマンドは、アプリ名などじゃ終了出来ない。プロセスのID番号をオプションで使う事。
このプロセスIDは毎回起動する度に違う。
例えば、QuitApp++は目的のアプリ名などを保存させて使うタイプ。
アクティビティモニタなど、起動時にtopコマンドでリアルタイムに目標を定めている物とは違うので、プロセスIDの指定方法でまずつまづいた。
解る人は直ぐ解るだろうけど、オイラは素人なのでご勘弁を。
今回実装した終了の処理方法だけれど、まず、時間が来たら、終了処理をあるクラスに送る。
送られて来た側で今現在起動しているアプリのリストを取得し受け取った引数の情報と照らし合わせ、目的のアプリが起動しているか確認する。起動している事を確認すると同時に、目的のアプリのプロセスIDを取得して、NSTaskに渡し終了処理をする。
この文...超簡単だな・・・(笑)
※エラー処理等はこの文では省いています。実際には実装しているのでご安心を。
まぁこんな感じに今回はなりました。
他にも色々と変更した所はあるけれど、これが今回の目玉かな。
リリースして思ったんだけれど、項目1と項目2でそれぞれ違うモードを設定出来たら便利だね。これは次回と言うことで。
しかし、NSTaskって面白いな。毛嫌いしてたけど・・・
みんな使ってるんだろうな・・・。
Macはシェル、コマンドが使えるから良いね。
色々遊んでみたくなったよ。

for OS X







for iPhone








