LOTUSSCRIPT 言語
次の例では、Windows のアクセサリプログラムの「メモ帳」と対話するために、これらすべての関数およびステートメントを使用しています。
メモ Windows および OS/2 プラットフォームでは、オペレーティングシステムといくつかのプログラムはユーザーが設定した環境変数を利用します。たとえば、MS-DOS では CONFIG.SYS、AUTOEXEC.BAT、およびその他のバッチファイルを使って、環境変数を設定します。MS-DOS の Set コマンドを使って、環境変数のリストと現在の設定値を参照できます。スクリプトでは、Environ 関数を使って環境変数の現在の値を返せます。
モジュールレベルの変数は String 型の変数です。
Dim startDir As String ' The current directory at startup. Dim fileName As String ' The note file name.
4 つのサブルーチンは Initialize、CreateNote、ReadNote、および Terminate です。Initialize はモジュールがロードされると自動的に実行されます。次に、Initialize は CreateNote と ReadNote を呼び出します。Terminate はモジュールがアンロードされる前に実行されます。
Initialize サブルーチンは Windows の Temp ディレクトリを現在のディレクトリにし、_MYNOTE.EXE という名前のファイルが存在して empty であることを確認し、CreateNote サブルーチンを呼び出して、続いて ReadNote サブルーチンを呼び出します。
Sub Initialize Dim tempDir As String, taskID As Integer ' Store the name of the current directory, then make the ' Windows Temp directory the current directory. startDir$ = CurDir$ tempDir$ = Environ("Temp") ChDir tempDir$ fileName$ = "_MYNOTE.TMP" ' Make sure the file exists and is empty before ' opening Notepad. fileNum% = FreeFile Open fileName$ For Output As fileNum%
Write #fileNum% ' The file now contains only an empty line. Close fileNum% ' Open the file (guaranteed to exist) in Notepad. taskID% = Shell("notepad " & fileName$) CreateNote ' Create the note.See the CreateNote sub below. ReadNote ' Display the note.See the ReadNote sub below. End Sub
CreateNote サブルーチンは、メモのヘッダーを現在の日付と時刻も含めて作成し、メッセージを表示し、(フォーカスの移った) メモ帳をアクティブにして、ヘッダーをメモ帳に送ります。続いて、ユーザーがメモ帳に入力できるように、制御を 10 秒間 Windows に移します。Yield の指定された 10 秒間の While ループを含めなければ、スクリプトの実行は一時停止することなく続行され、ユーザーがメモに入力する時間はありません。
10 秒後に、ActivateApp ステートメントはメモ帳がフォーカスを持っていることを確認し (ユーザーがフォーカスを別のウィンドウに移していた場合)、SendKey ステートメントは [ファイル] - [上書き保存] メニューコマンドとコントロールメニューの [最小化] コマンドにキーストロークを送ります。
[ファイル] - [上書き保存] のキーストロークは [Alt] + [F] + [S] で、[最小化] コマンドのキーストロークは [Alt] + [スペース] + [N] です。[Alt] + [スペース] + [C] はメモ帳のタイトルバーのコントロールメニューを開きます。SendKeys ステートメントでは、% は [Alt] キーを表します。
Sub CreateNote Dim header As String, finish As Single MessageBox "Write your note." header$ = Format(Now, LongDate) &"~~Note:" ActivateApp "notepad - " & fileName$ SendKeys "~" & header$, TRUE ' Send the note header ' to Notepad. finish!= Timer + 10 While Timer < finish! Yield Wend ActivateApp "notepad - " & fileName$ SendKeys "%fs% n",TRUE ' Save the file ' and minimize the window. End Sub
ReadNote サブルーチンはメッセージボックスを表示し、保存されたばかりのファイルを開いて、ファイルの内容を String 型の変数に入れ、内容と共にメッセージを表示します。ファイル名はメッセージボックスのタイトルバーに表示されます。
Sub ReadNote MessageBox "Read your note." fileNum% = FreeFile Open fileName$ For Input As #fileNum% message$ = Input$(LOF(fileNum%), fileNum%) Close fileNum% MessageBox message$,, fileName$ End Sub
Terminate サブルーチンが実行されます。ActivateApp ステートメントは、ユーザーが別のウィンドウにフォーカスを移した場合に、フォーカスをメモ帳に移します。SendKeys ステートメントは [Alt] + [F4] をメモ帳に送り、メモ帳を閉じます。続いて起動時のディレクトリを再び現在のディレクトリにします。
Sub Terminate ActivateApp "notepad - " & fileName$ SendKeys "%{f4}", TRUE ChDir startDir$ End Sub
関連項目