CALENDAR
S M T W T F S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
<   July 2010
CATEGORIES
SELECTED ENTRIES
RECENT COMMENT
RECENT TRACKBACK
BLOG VIEW
SEARCH THIS BLOG
macTips SOFTWARE'S
for OS X
QuickCopy
aLunch
mCounterDataCreator
SpeedCopy
QuitApp++
Vol'sAccess
SpotlightColorChange
for iPhone
PhotoMemoriesPhotoMemories
SoundShutterSoundShutter
PhotoZipSendPhotoZipSend
mCountermCounter
MoneyCalcMoneyCalc
MoneyCalc LiteMoneyCalc Lite
ARCHIVES
LINKS
PROFILE
  • Author name
    Hys.

  • Author HP
    macTips
  • Contact

  • Twitter : Hys.LOG
  • Twitter : macTips
COUNTER
LAST UPDATE
  • 10/07/14

QuitApp++1.3.0

いえっす![:グッド:]

前回書いたQuitApp++で悩んでた問題点を解消。快感。快感。

最近、Xcodeすら開いてなかったし、プログラミングなどとは無縁の生活をおくってたから、久々にコード見た時はパニック寸前だった。何がどうなってんのやら...

でも、時間をおいていたから違う視点から見れてかえって良かったのかも知れない。

やってる最中は必死なのに、出来上がればこんな物かっていうくらい簡単。

問題有りそうな所も発見できたし良しとしておこう。

オープンソースじゃ無いけれども、機嫌が良いので、内部的な事を簡単に説明。

(興味が無い人は飛ばしてください)

さて、何をどうしたかと言うと、簡単にいえば、UNIXコマンドを叩くのである。

ある人の、「killコマンド使ったら?」という言葉がきっかけで、やってみようかなとやる気をだしたのです。

まったく頭になかった。目から鱗だね。たしかに奴は暴走したときに便利なコマンドである。

しかし強力なので(なんせ強制終了だし)今回は今まで通りのモードも残すことにした。セイフティな奴。

まぁ新しいモードはオイラ自身の為に付けたような機能だし、QuickTimeなどで書き出し後は、ファイルはちゃんと保存されてるので強制終了されようが、無問題なのである。

さて、UNIXコマンドを使う場合はNSTaskを使うんだけれども、オイラは初めてなわけで、でも直ぐに理解できた。システムイベントを使うよりも何倍も簡単 & Webの情報が凄く多い事にビックリ。前者は皆無に等しいからね(苦笑)

簡単って言っても、もの凄く悩んだ事が有る。

killコマンドは、アプリ名などじゃ終了出来ない。プロセスのID番号をオプションで使う事。

このプロセスIDは毎回起動する度に違う。

例えば、QuitApp++は目的のアプリ名などを保存させて使うタイプ。

アクティビティモニタなど、起動時にtopコマンドでリアルタイムに目標を定めている物とは違うので、プロセスIDの指定方法でまずつまづいた。

解る人は直ぐ解るだろうけど、オイラは素人なのでご勘弁を。

今回実装した終了の処理方法だけれど、まず、時間が来たら、終了処理をあるクラスに送る。

送られて来た側で今現在起動しているアプリのリストを取得し受け取った引数の情報と照らし合わせ、目的のアプリが起動しているか確認する。起動している事を確認すると同時に、目的のアプリのプロセスIDを取得して、NSTaskに渡し終了処理をする。

この文...超簡単だな・・・(笑)

※エラー処理等はこの文では省いています。実際には実装しているのでご安心を。

まぁこんな感じに今回はなりました。

他にも色々と変更した所はあるけれど、これが今回の目玉かな。

リリースして思ったんだけれど、項目1と項目2でそれぞれ違うモードを設定出来たら便利だね。これは次回と言うことで。

しかし、NSTaskって面白いな。毛嫌いしてたけど・・・

みんな使ってるんだろうな・・・。

Macはシェル、コマンドが使えるから良いね。

色々遊んでみたくなったよ。

| QuitApp++ | | コメント (0) | トラックバック (0) |

QuitApp++前回の追記

FreeBSDコマンドポケットリファレンスと言う本が有るんだけれど、

結構前に古本屋で¥100-だったので、とりあえず買って置いておいた奴を思い出し、寝る前に読んでいたら、どうやら、"killall"というコマンドが有るらしい。

これは、プロセスIDでは無く、プロセスネームで終了出来るとのこと。

実際出来た。

オ、イ、ラ、ノ、ジカンヲ、カエセ オウトウセヲ(笑)

Macのコマンドリファレンス本には載ってなかったぞ?激古だからか?(ショボン

ま、いいか。何事も経験、経験。

調べてみると、このコマンドは同じプロセス名が有った場合全てkillするみたい。

どっちが良いんだろうね?

killallを使うと処理が1処理無くせるし、軽くなるって言えば軽くなるけど、今のままの方が安定しそうな気もする。

悩むなぁ。プロトタイプでも作って様子見てみようかな。

| QuitApp++ | | コメント (0) | トラックバック (0) |