リストボックスを使うと、複数の選択肢からひとつをユーザーに選ばせて処理を進める事ができるようになります。
リストボックスの使い方
listboxというTTLコマンドによりリストボックスを使う事が出来ます。
listbox ‘リストボックスに表示する文字列’ ‘タイトル’ リストの文字配列
戻り値はシステム変数resultに格納されます。resultの値はユーザーが選択した文字配列の添字になり、もしもキャンセルされた場合はresultに-1が格納されます。
たとえば3つのホストから1つを選択して接続するならば、次のように書くことができます。
strdim hostarray 3 hostarray[0] = 'host1' hostarray[1] = 'host2' hostarray[2] = 'host3' listbox '接続先を選んでください' '接続先選択' hostarray if result != -1 then connect hostarray[result] endif
もう少しだけ応用してみよう
接続先によってユーザー名やパスワードが変わったり、接続用のパラメータを変えたい場合がありますよね?ぼくはあります。
if文で分岐させてもいいのですが冗長になってしまいます。ぼくだったらincludeを使います。たとえば、こんなのはどうでしょうか。
設定ファイル
接続先のユーザー名、パスワード、認証方法を設定します。ファイル名は「ホスト名.conf」で保存します。たとえば次の項のマクロファイルを例にすると「host1.conf」「host2.conf」「host3.conf」となります。
; host1.conf user='taro' passwd='taropass' auth='/auth=password'
; host2.conf user='hanako' passwd='hanakopass' auth='/auth=challenge'
; host3.conf user='jiro' passwd='jiropass' auth='/auth=password'
マクロファイル
このTeraTermマクロを実行すると、設定ファイルで「認証方法」「ユーザー名」「パスワード」を設定してsshログインを行います。
strdim hostarray 3 hostarray[0] = 'host1' hostarray[1] = 'host2' hostarray[2] = 'host3' listbox '接続先を選んでください' '接続先選択' hostarray ; resultを待避 n = result if n == -1 then messagebox 'キャンセルしました' 'キャンセルしました' end endif ; ホスト名.confというファイル名を設定 sprintf2 hostconf '%s.conf' hostarray[n] ; 設定ファイルを読み込む include hostconf ; connectで使う文字列を設定 sprintf2 constr '%s /ssh %s /user=%s /passwd=%s' auth hostarray[n] user passwd connect constr
これは一例ですが、応用次第でいろいろな処理ができそうです。