0

xcode 4 で AppleScript アプリケーションを作成しており、ガイダンスを求めています。私はインターネットを読んだり精査したりしましたが、探している答えが見つかりません。テキストボックスとボタンのあるメインウィンドウがあります。テキストボックスのテキストを hostname123 に置き換えて、コマンドが次のようになるようにしたいと思います: do shell script "sudo scutil --set HostName" & [Value of Textbox]. クリック時にコマンドが実行されるようにボタンイベントを設定しました。コマンドで使用できるように、テキストボックスの値を取得するのを手伝ってくれる人はいますか?

on ButtonHandlerVolumeSetting0_(sender)
    do shell script "sudo scutil --set HostName hostname123" 
end ButtonHandlerVolumeSetting0_
4

1 に答える 1

0

まず第一に、これはAppleScriptObjC古い ではなく にあると想定していAppleScript Studioます。

IBOutletまず、テキスト フィールドを参照し、Objective-C コード (または AppleScript) がテキスト フィールドと通信できるようにするインスタンス変数 (またはプロパティ) である に相当する AppleScript を作成する必要があります。AppleScript スクリプトの先頭に向かって、次のような行を追加します。

script MDAppDelegate
    property parent : class "NSObject"

    property hostNameTextField : missing value -- add this line

次に、nib ファイル内のスクリプトのインスタンスからウィンドウ内のテキスト フィールドに Control キーを押しながらドラッグして、このアウトレットを「接続」します。

[更新]: 表示されているエラー メッセージから、このhostNameTextField接続が nib ファイルで正しく設定されていないようです。

下の画像に示されている nib ファイルのMDAppDelegate青い立方体アイコンは、実行時に nib ファイルがロードされたときに作成される AppleScript スクリプトのインスタンスを表しています。おそらく、ボタンから青色の AppleScript キューブへの「接続」は既に適切に確立されていると思われます。これにより、ボタンをクリックしたときにButtonHandlerVolumeSetting0_()関数 (別名 AppleScript ハンドラー) を呼び出す必要があることが指定されます。下の画像のように青い AppleScript キューブ インスタンスを選択し、右クリック (または Control を押しながらクリック) して、青いキューブから入力テキスト フィールドにドラッグします。

ここに画像の説明を入力

マウス ボタンを離すと、テキスト フィールドに「接続」できるプロパティを示す黒いポップアップ パネルが表示されます。を選択しhostNameTextFieldます。

ここに画像の説明を入力

その後、青色の AppleScript キューブを選択すると、右側のユーティリティ領域の接続インスペクターで、AppleScript スクリプトの接続を確認できます。の下OutletshostNameTextFieldアウトレットが表示され、下Received Actionsに が表示されますButtonHandlerVolumeSetting0_()

AppleScript (Objective-C の に相当する AppleScript) ではプロパティhostNameTextFieldが の初期値に設定されますが、実行時に nib ファイルでこの接続を行うことにより、 の値は指定した に設定されます。これにより、スクリプトと、nib ファイルにアーカイブされたオブジェクト階層との間の通信が可能になります。missing valuenilhostNameTextFieldNSTextField

【更新終了】

Anは、そのスーパークラスから名前がNSTextField付けられたメソッドを継承します。このメソッドは、テキスト フィールドの内容を(AppleScript に相当する) として返します。したがって、ボタン クリック ハンドラー内では、次のように文字列値を取得できます。stringValueNSControlNSStringstring

on ButtonHandlerVolumeSetting0_(sender)
    set hostName to hostNameTextField's stringValue()
    do shell script ("/usr/sbin/scutil --set HostName " & hostName) with administrator privileges
end ButtonHandlerVolumeSetting0_

を使用するときdo shell scriptは、通常、スクリプト自体から を含めsudoずに、代わりにwith administrator privileges修飾子を追加することをお勧めします。これは、昇格された特権でスクリプトを実行する必要があることを AppleScript に示し、標準の認証ダイアログの表示を処理します。

于 2012-11-30T04:25:20.923 に答える