完成したPerlスクリプトを実行するには、Perlスクリプト(通常、xxxx.plのように拡張子が「pl」で終わるファイル)をダブルクリックしますが、処理が終了しても何も変化がないため、いつ終了したのか、確認しにくい場合があります。また、処理結果によって、メッセージを変更して表示したい場合があります。
このような場合にWindowsの機能を利用してメッセージを表示する方法について解説します。
一般的には、以下のようなスクリプトになります。「use win32;」を指定した後に「戻り値 = Win32::MsgBox("メッセージ", ボタンおよびアイコン, "キャプション")」のように指定します。ウィンドウに表示するボタンやアイコンには下記の表に示すフラグの合計値をセットします。キャプション(メッセージを表示する画面のタイトル)やメッセージは「""」(ダブルクォーテーション)で囲んだ文字列を指定します。
たとえば、ボタンは[OK]ボタンと[キャンセル]ボタンを表示(数値 = 1)し、注意メッセージのアイコン(数値 = 48)を表示する場合は、1 + 48 = 49 をセットします。具体的には、「$res = Win32::MsgBox("メッセージ", 49, "キャプション"」でもいいのですが、何と何の合計かをわかりやすく表示するため、「$res = Win32::MsgBox("メッセージ", 1 + 48, "キャプション"」とすることが望ましい方法です。
フラグ | 内 容 |
0 | [OK] ボタンのみを表示する。 |
1 | [OK] ボタンと [キャンセル] ボタンを表示する。 |
2 | [中止]、[再試行]、および [無視] の 3つのボタンを表示する。 |
3 | [はい]、[いいえ]、および [キャンセル] の 3つのボタンを表示する。 |
4 | [はい] ボタンと [いいえ] ボタンを表示する。 |
5 | [再試行] ボタンと [キャンセル] ボタンを表示する。 |
16 | 警告メッセージ アイコン(赤い円の中に×印)を表示する。 |
32 | 問い合わせメッセージ アイコン(吹き出しの中に?マーク)を表示する。 |
48 | 注意メッセージ アイコン(黄色い三角の中に!マーク)を表示する。 |
64 | 情報メッセージ アイコン(吹き出しの中に「i」)を表示する。 |
0 | 第 1 ボタンを標準ボタンにする。 |
256 | 第 2 ボタンを標準ボタンにする。 |
512 | 第 3 ボタンを標準ボタンにする。 |
以下に警告メッセージや問い合わせメッセージの表示サンプルを載せます。
メッセージを表示した後、どのボタンをクリックしたかは、戻り値(例では、$res)に整数値がセットされますので、if文を使って判断します。どのような戻り値がセットされるかについては、下記の表を参照してください。
戻り値 | クリックしたボタン |
0 | エラー(クリックした結果が戻り値に反映されなかった) |
1 | [OK] ボタン |
2 | [キャンセル] ボタン |
3 | [中止] ボタン |
4 | [再試行] ボタン |
5 | [無視] ボタン |
6 | [はい] ボタン |
7 | [いいえ] ボタン |
# message.pl # 内容 : Windowsのメッセージを表示する。 # Copyright (c) 2002-2010 Mitsuo Minagawa, All rights reserved. # (minagawa@fb3.so-net.ne.jp) # 使用方法 : c:\>perl message.pl # use win32; #下記のようにして、Windowsのメッセージを表示する。 # #$res = Win32::MsgBox("メッセージ", ボタンおよびアイコン, "キャプション"); #・・・・・・ #if ($res == 1) { #・・・・・・ #} ### 警告メッセージのサンプル $res = Win32::MsgBox("このファイルは実行してはいけません。", 0 + 16, "警告メッセージのサンプル"); if ($res == 1) { # OK ボタン Win32::MsgBox("「OK」をクリックしました。", 0 + 64, "メッセージのテスト"); } ### 問い合わせメッセージのサンプル $res = Win32::MsgBox("これでよろしいですか?", 1 + 32, "問い合わせメッセージのサンプル"); if ($res == 1) { # OK ボタン Win32::MsgBox("「OK」をクリックしました。", 0 + 64, "メッセージのテスト"); } elsif ($res == 2) { # キャンセル ボタン Win32::MsgBox("「キャンセル」をクリックしました。", 0 + 64, "メッセージのテスト"); } ### 注意メッセージのサンプル $res = Win32::MsgBox("このまま処理を続行しますか?", 2 + 48, "注意メッセージメッセージのサンプル"); if ($res == 3) { # 中止 ボタン Win32::MsgBox("「中止」をクリックしました。", 0 + 64, "メッセージのテスト"); } elsif ($res == 4) { # 再試行 ボタン Win32::MsgBox("「再試行」をクリックしました。", 0 + 64, "メッセージのテスト"); } elsif ($res == 5) { # 無視 ボタン Win32::MsgBox("「無視」をクリックしました。", 0 + 64, "メッセージのテスト"); } ### 情報メッセージのサンプル $res = Win32::MsgBox("内容が理解できましたか?", 4 + 64, "情報メッセージメッセージのサンプル"); if ($res == 6) { # はい ボタン Win32::MsgBox("「はい」をクリックしました。", 0 + 64, "メッセージのテスト"); } elsif ($res == 7) { # いいえ ボタン Win32::MsgBox("「いいえ」をクリックしました。", 0 + 64, "メッセージのテスト"); }