VBScript の InputBox 関数の変換

Windows PowerShell

定義: ダイアログボックス内にメッセージを表示してテキストの入力またはボタンのクリックを求め、テキスト ボックスの内容を返します。

InputBox

これは少し厄介です。まず、入力ボックスを作成する最も簡単な方法として、.NET Framework と Visual Basic .NET を利用する方法を考えました。試みは成功しましたが、まだ大きな問題があります。入力ボックスが常に、デスクトップ上のすべてのウィンドウの背後に表示されるという問題です。つまり、入力ボックスが表示されていても見ることができません。予想していた結果とはまったく異なります。

困り果てた末、このような状況に陥ったときに誰もがそうするように、インターネットを検索して拝借できそうなサンプル コードを探しました。案の定、見つかりました。Windows PowerShell の MVP ともいうべき /\/\o\/\/ (MoW) さんに感謝します (サイトとブログについては、こちら (英語) を参照してください。ここに書かれていることで Windows PowerShell に関するものは、ご本人の理解に基づくものです)。/\/\o\/\/ さんの解決策は次のとおりです。

$a = new-object -comobject MSScriptControl.ScriptControl
$a.language = "vbscript"
$a.addcode("function getInput() getInput = inputbox(`"Message box prompt`",`"Message Box Title`") end function" )
$b = $a.eval("getInput")

このコードが、どのように機能するかは説明しません。機能するという事実だけをお知らせします。また、このコードのとおりに記述する必要があります。特に、メッセージ ボックス用のプロンプトとタイトルを指定する際に必要なバッククォート (`) に注意してください。

/\/\o\/\/ さん、ありがとうございました。

「VBScript から Windows PowerShell へ」ホーム ページに戻る