AppleScriptObC で書いた Automator の自作アクションでエラーを返すには、次のようにやればよいようです。
script ErrorTest property parent : class "AMBundleAction" property NSDictionary : class "NSDictionary" on runWithInput_fromAction_error_(input, anAction, errorRef) my fatalError(-1750, "your own error message", errorRef) return missing value end runWithInput_fromAction_error_ on fatalError(errorNum, msg, errorRef) set objsArray to {errorNum, msg} set keysArray to {current application's OSAScriptErrorNumberKey, current application's OSAScriptErrorMessageKey} set contents of errorRef to NSDictionary's dictionaryWithObjects_forKeys_(objsArray, keysArray) end fatalError end script
errorRef は NSDictionary のポインタのポインタなので、contents of を使って、作ったオブジェクトを渡すところがキモです。
エラー番号 -1750 は MacError.h に errOSASystemError と宣言されていて、それを使うのがベストです。AppleScriptObjC の定数参照の要領で、current application's errOSASystemError とか書いてみたのですが、だめでした。MacError.h は CarbonCore のヘッダファイルなので、Carbon Framework をリンクしてみたのですが、やはりだめでした。
情報をお持ちの方がいらっしゃいましたら、コメントをください。
0 件のコメント:
コメントを投稿