« iColors (Xcodeな人にちょっと便利なカラーピッカー) | トップページ | SimpleFTP »

[AppleScript]ドロップレットの作法を考える その6 (ドロップレットを途中終了させる)

ドロップレットでちょっと困るのが
途中で処理をキャンセルさせる事
Xcodeでアプリケーションを作る場合には
「プログレスバー」を出せば途中キャンセルも可能ですが
AppleSxript単体だとチョイ難しかったりします。

そこで
こんな風に考えてみました

Website_image20130114_145601
 
 
上記の図で言う
stop2dropletについては
内包して配布する事で解決出来ます
 
 
Website_image20130114_145625

 
 
元のアプリケーションからは
シェルを使ってオープンします
 
 

Website_image20130114_150132
 
 
 


------------------------------------------------■■■■ ダブルクリックの始まり
on run
------------------------------------------------ダイアログを出して選択されたファイルは「open」に渡す
open (choose file)
end run

----------------------------------------------■■■■ openドロップの始まり
on open DropObj

-----------------------------------------------キャンセル用の別アプリを起動する
----実行したアプリケーションのパスを求めて
set theMyPath to path to current application as string
----キャンセル用swf2img.appのパスを加えて
set theStopAppPath to theMyPath & "Contents:Assistants:stop2droplet.app" as Unicode text
-----UNIXパスに整形
set theStopAppPosPath to POSIX path of theStopAppPath
--------コマンドラインを整形
set theKillPsComLine to "open " & theStopAppPosPath as text
-----キャンセル用のアプリを開く
do shell script theKillPsComLine


repeat

------ここに本処理
delay 20
end repeat
end open

 
 
 

 

処理を中断させるために
呼び出す別アプリ

 
  
Website_image20130114_150518
 
 
 



-------対象になるアプリケーション
set theNameOfApp to "OpenStopDroplet.app"


display alert ¬
"実行中のドロップレットをキャンセルします" message ¬
"ドロップレットが終了したら閉じてください" buttons {"ドロップレットを中止する", "このウィンドを閉じる"} ¬
default button 1 as informational

--------ダイアログの実行結果で処理を分岐
if button returned of the result is "このウィンドを閉じる" then
--------ウィンドを閉じるを選択した場合は何もしない
else if button returned of the result is "ドロップレットを中止する" then
-------------プロセスIDを取得するコマンドラインの整形
set theComLine to "ps -A | grep -v grep | grep " & quoted form of theNameOfApp & " | grep '/droplet' | awk '{print($1)}'" as text
-------------コマンドの実行
set thePsId to do shell script theComLine as text
-------------プロセスIDを取得できたか?で処理を分岐
if thePsId is "" then
-----プロセスIDを取得出来なかったら何もしない
else
--------取得したプロセスIDでコマンドラインを整形
set theKillPsComLine to "kill " & quoted form of thePsId as text
--------プロセスの終了を実行
do shell script theKillPsComLine
end if
end if


 

 

「OpenStopDroplet.app.zip」をダウンロード
「OpenStopDroplet.rtf」をダウンロード

 
 

 
「stop2droplet.app.zip」をダウンロード
「stop2droplet.rtf」をダウンロード


 


|

« iColors (Xcodeな人にちょっと便利なカラーピッカー) | トップページ | SimpleFTP »

AppleScriptDroplet」カテゴリの記事