[AppleScript]ドロップレットの作法を考える その6 (ドロップレットを途中終了させる)
ドロップレットでちょっと困るのが
途中で処理をキャンセルさせる事
Xcodeでアプリケーションを作る場合には
「プログレスバー」を出せば途中キャンセルも可能ですが
AppleSxript単体だとチョイ難しかったりします。
そこで
こんな風に考えてみました
上記の図で言う
stop2dropletについては
内包して配布する事で解決出来ます
元のアプリケーションからは
シェルを使ってオープンします
------------------------------------------------■■■■ ダブルクリックの始まり
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
処理を中断させるために
呼び出す別アプリ
-------対象になるアプリケーション
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」をダウンロード
| 固定リンク
「AppleScriptDroplet」カテゴリの記事
- [AppleScript]ドロップレットの作法を考える その6 (ドロップレットを途中終了させる)(2013.01.14)
- [AppleScript]ドロップレットの作法を考える その5 (エイリアスの処理に悩む)(2013.01.08)
- [AppleScript]ドロップレットの作法を考える その4 (ドロップされたファイルはエイリアスか?)(2013.01.06)
- [AppleScripts]ドロップレットの作法を考える その3 エラーログを作成する(2013.01.06)
- [AppleScripts]ドロップレットの作法を考える その2 on error(2013.01.06)