■Windows版Perlの細道・けもの道

■ナビゲータ

[南北館(最初のメニュー)]

  1. [Windows版Perlの細道・けもの道]
    1. [1.準備編]
    2. [2.基本編]
    3. [3.応用編]
      1. [3-1.固定長データとCSVデータとの変換]
      2. [3-2.重複データの処理]
      3. [3-3.フォルダ内の一括処理]
      4. [3-4.1つのファイルを複数のファイルに分割する]
      5. [3-5.文字コードの変換]
      6. [3-6.半角全角変換]
      7. [3-7.多次元配列の処理]
      8. [3-9.その他]
        1. [3-9-1.文字列のフォーマットを変更する]
        2. [3-9-2.メッセージを表示する]
        3. [3-9-3.ファイルのサイズを取得する]
        4. [3-9-4.当日・前日・前営業日、前月末日・当月末日・翌月末日を取得する]
        5. [3-9-5.複数レコードを1レコードにまとめる]
        6. [3-9-6.電卓プログラム]
        7. [3-9-7.素因数分解]
    4. [スクリプトと入力データのサンプル]
rubyではどう処理する?
同じことをrubyではこうしています。

3.応用編

3-9.その他

3-9-2.メッセージを表示する

完成した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, "メッセージのテスト");  

}   

    


【スクリプトとデータのサンプル】

スクリプトはこちらにあります。




Copyright (c) 2004-2014 Mitsuo Minagawa, All rights reserved.