Select sjis if the characters are not shown properly. Internet Expolorer is the targetted browser.

@(#) KhMsgBox.exe.txt

$Filename: KhMsgBox.exe.txt $
$Lastupdate: 2019-02-03 23:43:53 $

このファイルは、KhMsgBox.exe の機能を説明するものです。

[TopHdngList] [BodyStart] [Top] [End]

CONTENTS   CONTENTS が閉じられているときでも [Contents] ボタンは有効です。
CONTENTS が閉じられているときに、アウトライン見出しのところに表示 されている [Contents] ボタンをクリックすると、 CONTENTS を表示して、 そのアウトライン見出しに対応している CONTENTS の中の見出しにジャンプします。
この後、CONTENTS は表示されたままになります。
CONTENTS 内の各行の最後に示されている数字は、 そのアウトライン見出し行が文書ファイルの何行目にあるかを表しています。

[ContentsTop]
TOP HDNG LIST ALL HEADING LIST NOTE LIST

[Close TOP HEADING LIST]

ALL HEADING LIST ■はアウトライン見出しのタイトル □はそれ以外
16*1 ■memo
118*2 ■KhMsgBox.exe の使用例

[Close ALL HEADING LIST]

NOTE LIST
Note の一覧: Note はありません。

[Close NOTE LIST]

[Top] [End] [ContentsTop]

[CTop] [Contents][TopHdngList][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

1 memo

KhMsgBox.exe は、MsgBox.exe と同等の機能を持った単体の実行プログラムです。

MsgBox.exe はどんなプログラムか
MsgBox.exe は、メッセージを表示する単体のプログラムです。

http://debrock.org/msgbox/

から取得できていましたが、[2019-01-25] 現在では、もうこの URL から MsgBox.exe を取得することはできません。

上記の URL から取得して持っている MsgBox.exe で、引数をつけずに、MsgBox.exe を実行すると、その利用方法が表示されます。それによれば、表示するメッセージの中で改行したい場合は、¥n を文字列に挿入します。

ただし、この機能が良くないこともあります。表示しようとする文字列の中に、c:¥home¥foo¥north などがあるとその中の ¥n を改行と判定してしまいます。

KhMsgBox.exe は MsgBox.exe を代替するプログラム
MsgBox.exe はもう入手できないし、変更もできないので、C# を使って同じようなプログラム KhMsgBox.exe を作成することにしました。

KhMsgBox.exe は、中で、C# で提供されている MessageBox クラスの Show メソッドを呼び出しています。

KhMsgBox.exe は、

  > KhMsgBox.exe オプション指定する引数 メッセージを指定する引数

の形で呼び出します。

オプションを指定する引数
「オプションを指定する引数」のところでは、

  オプション -Title
  オプション -ButtonType 
  オプション -UseNlcode

が指定できます。

オプション -Title とオプション -ButtonType は、引数をとるオプションで、オプションの後に、その引数を指定する必要があります。

●オプション -Title

オプション -Title の後には、メッセージ・ボックスのタイトル部分に表示する文字列を指定します。

  -Tilte foo

のように指定すると、メッセージ・ボックスのタイトル部分に、"foo" と表示されます。

-Title オプションを指定しないと、プログラム名の基本部分が表示されます。実行プログラムの名前を KhMsgBox.exe のままにしておくと、KhMsgBox が、foobar.exe という名前に変更すれば、foobar がメッセージボックスのタイトル部分に表示されます。

●オプション -ButtonType

オプション -ButtonType の後には、表示されるボタンの種類 (AbortRetryIgnore, OK, OKCancel, YesNo, YesNoCancel, RetryCancel) を指定します。

例えば、

  -ButtonType YesNo

と指定すると、Yes ボタンと No ボタンが表示されます。

-ButtonType オプションを指定しないと、ボタンの種類は OK を指定したものと見做されます。

ボタンが何も表示されないようにすることはできません。

KhMsgBox.exe はユーザがクリックしたボタンがどれかを示す整数値を返します。

値とボタンの対応は、0->Abort, 1->Cancel, 2->Ignore, 3->No, 4->OK, 5->Retry, 6->Yes です。

引数を指定せずに KhMsgBox.exe を起動するとこの使用説明文が表示されます。

●オプション -UseNlcode

オプション -UseNlcode は引数を取りません。オプション -UseNlcode を指定すると、文字列の中に ¥n があるとそこで改行されます。

オプション -UseNlcode を指定しなければ、文字列の中に ¥n があってもそこで改行されることはありません。従って、文字列の中に C:¥home¥foo¥north とかあっても、誤ってその中の ¥n が改行と解釈されたりしません。

メッセージを指定する引数
「メッセージを指定する引数」のところでは、半角空白を間に置いた複数の文字列を指定します。これらの複数の文字列がメッセージボックスに表示されます。半角空白をメッセージの中に入れたい場合は、その引数を引用符号で囲んで、引用符号で囲んだ中に半角空白を含めてください。

「メッセージを指定する引数」を何も指定しないと、利用方法を説明するメッセージが表示されます。したがって、

  > KhMsgBox.exe

のように、何も引数を指定しないと、利用方法を説明するメッセージが表示されます。

メッセージを指定する文字列は、プログラムの中で、間に空白を置かずに連結されます。

メッセージを指定する引数の一つとして、文字列 NewLine または Cr があるとそこで改行されます。NewLine や Cr を、他の文字列の一部に含めるのではなく、独立した引数として指定する場合に改行されるのであることに注意してください。

オプション -UseNlcode が指定されていれば、「メッセージを指定する引数」の中のどの位置に ¥n が含まれていても、その位置で改行されます。

  > KhMsgBox -UseNlcode "一行目¥n二行目"
  > KhMsgBox 一行目 NewLine 二行目

では、表示される文字列は2行ですが、

  > KhMsgBox "一行目¥n二行目"

では、表示される文字列は1行です。

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

2 KhMsgBox.exe の使用例

KhMsgBox.exe を VB スクリプトの中で呼び出す例を示します。

ディレクトリをバックアップ中であることを報せるメッセージボックスを KhMsgBox.exe を使って表示します。WshShell の Exec メソッドを使って、メッセージボックスを表示させるプロセスを起動して、すぐ戻っています(18行から27行)。

バックアップ作業は、WshShell の Run メソッドで実行します。これにより、バックアップ作業が終了するまで待ち、バックアップ作業が終了した時点で、メッセージボックスを表示させたプロセスが未だ動作している、すなわち、ユーザがそのメッセージボックスをそのままにしている場合は、そのプロセスを終了させています(44行から46行)。

msgboxstudy.vbs
001: '| == startdoc "'|"
002: '| = msgboxstudy.vbs
003: '| 
004: '| 〓このスクリプトの概要
005: '| -- KsMsgBox.exe の使用例を示す
006: 
007: Option Explicit
008: Dim WshShell
009: 
010: Set WshShell = WScript.CreateObject("WScript.Shell")
011: 
012: Dim strScriptName   ' スクリプト名
013: strScriptName = WScript.ScriptName
014: 
015: Dim objExecMsgBox
016: Dim dtmStart, dtmEnd
017: 
018: Set objExecMsgBox = _
019:     WshShell.Exec(_
020:       "C:¥home¥foobar¥bin¥KhMsgBox.exe -title " _
021:       & strScriptName & " " _
022:       & "-usenlcode" & " " _
023:       & "Dropbox をバックアップしています。¥n¥n" _
024:       & "作業が終わるまで OKボタンは押さずにお待ち" _
025:       & "ください。¥n" _
026:       & "作業が終わればこの窓は自動的に閉じられます。" _
027:       & "前回の作業時間は数秒でした。")
028: 
029: dtmStart = Now 
030: 
031: Dim targetDir
032: targetDir = "C:¥DropboxBackup¥Dropbox"
033: 
034: WshShell.Run _
035:       "robocopy.exe " _
036:       & "C:¥Users¥foobar¥Dropbox " _
037:       & targetDir & " "  _
038:       & "/mir /xd .dropbox.cache /nfl /ndl " _
039:       & "/log:C:¥DropboxBackup¥DropboxBackupLog.txt " _
040:       & ">NUL 2>&1", 0, True
041: 
042: dtmEnd = Now
043: 
044: If objExecMsgBox.Status = 0 Then
045:   objExecMsgBox.Terminate
046: End If
047: 
048: MsgBox _
049:     "Dropbox を C:/DropboxBackup ディレクトリに" _
050:     & "バックアップしました。" _
051:     & vbcr & vbcr _
052:     & DateDiff("s", dtmStart, dtmEnd) & " 秒かかりました。" _
053:     & vbcr & vbcr _
054:     & "OK ボタンを押してください。" _
055:     , vbOkOnly, _
056:     strScriptName & " 実行後確認"
057: 
058: Set WshShell = Nothing

 

Produced by the use of o2h version 13.05.
[CTop] [Top] [Prev] [Body] [BodyStart] .