メッセージボックスを一定時間表示したあと自動で閉じるには、Shell オブジェクトの Popup メソッドを使う。
スクリプトの実行方法(WScript.exe/CScript.exe)に関係なく、メッセージボックスが表示されます。
使い方
ShellObject.Popup (prompt, [ time, ] [ title, ] [ buttons ])引数
prompt:
表示するメッセージ
メッセージはCR、LF、CR+LFのいずれかを使って改行できる。time:
メッセージボックスを表示する時間(秒)
ここで指定した時間が経過すると、メッセージボックスは自動で閉じられる。
指定しなかった場合は、自動で閉じられなくなる。title:
タイトルバーに表示する文字列buttons:
ボタンの種類、アイコンの種類、既定のボタン、メッセージボックスのモダリティの組み合わせを指定する。
▼ボタンの種類
- vbOKOnly(0): [OK] ボタンのみを表示
- vbOKCancel(1): [OK]、[キャンセル] ボタンを表示
- vbAbortRetryIgnore(2): [中止]、[再試行]、[無視] の各ボタンを表示
- vbYesNoCancel(3): [はい]、[いいえ]、[キャンセル] の各ボタンを表示
- vbYesNo(4): [はい]、[いいえ] ボタンを表示
- vbRetryCancel(5): [再試行]、[キャンセル] ボタンを表示
▼アイコンの種類
- vbCritical(16): [重大なメッセージ] アイコン
- vbQuestion(32): [警告クエリ] アイコン
- vbExclamation(48): [警告メッセージ] アイコン
- vbInformation(64): [情報メッセージ] アイコン
▼既定のボタン
- vbDefaultButton1(0): 1番目のボタンを既定にする
- vbDefaultButton2(256): 2番目のボタンを既定にする
- vbDefaultButton3(512): 3番目のボタンを既定にする
- vbDefaultButton4(768): 4番目のボタンを既定にする
▼メッセージボックスのモダリティ
- vbApplicationModal(0): アプリケーションモーダル。現在のアプリケーションでの作業を続行するには、ユーザーはメッセージボックスに応答する必要がある。
- vbSystemModal(4096): システムモーダル。ユーザーがメッセージボックスに応答するまで、すべてのアプリケーションが中断する。
- vbMsgBoxHelpButton(16384): メッセージボックスに [ヘルプ] ボタンを追加する。
- vbMsgBoxSetForeground(65536): [メッセージ ボックス] ウィンドウを前景ウィンドウとして指定する。
→試してみたところ効かなかった。VBScript では効果がないのかもしれない。 - vbMsgBoxRight(524288): テキストを右揃えにする。
- vbMsgBoxRtlReading(1048576): ヘブライ語とアラビア語のシステムでテキストが右から左に読む形式で表示されるように指定する。
戻り値
押されたボタンを表す整数が返る。
何のボタンも押されず、メッセージボックスが閉じた場合は -1 が返る。
- vbOK(1): OK
- vbCancel(2): Cancel
- vbAbort(3): 中止
- vbRetry(4): 再試行
- vbIgnore(5): 無視
- vbYes(6): はい
- vbNo(7): いいえ
例
5秒経過したら自動で閉じる
Dim shell Set shell = CreateObject("WScript.Shell") Dim ret ret = shell.Popup("処理を続けてよろしいですか?", _ 5, _ "継続確認", _ vbYesNo + vbQuestion) If ret = vbYes Then WScript.Echo "はい" ElseIf ret = vbNo Then WScript.Echo "いいえ" ElseIf ret = -1 Then WScript.Echo "未選択" End If
自動で閉じられないようにする
Popup メソッドの第2引数を空にするだけで OK 。
Dim shell Set shell = CreateObject("WScript.Shell") Dim ret ret = shell.Popup("処理を続けてよろしいですか?", _ , _ "継続確認", _ vbYesNo + vbQuestion) If ret = vbYes Then WScript.Echo "はい" ElseIf ret = vbNo Then WScript.Echo "いいえ" End If