例: パスワードを要求する(DCL)

この例では、簡単なダイアログ ボックスを使用して、ユーザにパスワードを要求する方法を示します。

注: AutoLISP での DCL のサポートは Windows のみに制限されています。

次は、passdlg という名前のダイアログ ボックスを定義します。このダイアログ ボックスには 2 つのタイルがあります。ユーザがパスワードを入力する edit_box タイルと ok_cancel タイルです。ユーザが入力したテキストがマスクされるように、DCL の password_char 属性を使用します。

// GETPASS.DCL
//
passdlg : dialog
{
  label = "Password Protected";
  : edit_box
  {
    label = "Password:";
    edit_width = 20;
    key = "password";
    password_char = "?";
  }
  ok_cancel;
}

次は、GETPASS という名前の関数を定義します。この関数は、getpass.dcl ファイルをロードし、passdlg ダイアログ ボックスを表示します。ユーザが編集ボックスに文字を入力すると、その文字は DCL ファイルで定義されている password_char 文字によってマスクされます。編集ボックスに割り当てたアクションによって、ユーザが入力した文字が変数 pass に格納されます。

;; GETPASS.LSP
;;
(defun GETPASS ( / dcl_id pass )
  (setq dcl_id (load_dialog "getpass.dcl"))
  (if (new_dialog "passdlg" dcl_id)
    (progn
      (action_tile "password" "(setq pass $value)")
      (start_dialog)
      (unload_dialog dcl_id)
    )
    (princ "Error: Unable to load GETPASS.DCL. ")
  )
  pass
)

この GETPASS 関数は、ユーザが入力した文字列を返します。