#navi(../)
* タスクスケジューラで起動するVBScirptのMsgBox代替・WScript.Shell.Popup [#z9820ec5]
タスクスケジューラにVBScriptを設定し起動すると、VBScript内のMsbBox関数が正常に動作しません。~
(メッセージボックが表示されません。)~
当方、バックアップ時に容量不足やバックアップ先媒体が準備されていない場合、エラーメッセージを表示するためMsbBox関数をVBScript内で使用していました。~

この代替となるのが、WScript.ShellのPopupメソッドになります。~
以下にPopupメソッドを使用したサンプルスクリプトを記します。

#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

*関連記事 [#if0a6a73]
-[[メッセージボックスにアイコンを表示する方法>WSH/メッセージボックスにアイコンを表示する方法]]
-[[ノートPCでタスクスケジューラに設定したプログラムが動作しない場合の対処>Windows設定関連/ノートPCでタスクスケジューラに設定したプログラムが動作しない場合]]

* WshShell.Popupメソッドについて [#we4b1fc7]
Popupメソッドは、Popupメソッドの解説を確認すると、以下の記述がりました。~
-Popupメソッドの解説(msdn)~
http://msdn.microsoft.com/ja-jp/library/cc364428.aspx

>Popup メソッドを呼び出すと、実行中のホスト実行可能ファイルの種類 (WScript.exe または CScript.exe) に関係なく、メッセージ ボックスが表示されます

したがって、CScript.exeで起動した場合もポップアップのメッセージボックスを表示することができます。~
また、Popupメソッドの引数を確認するとアイコン表示やYes/Noボタンなども表示することができます。

* Popupメソッドを使用したサンプルスクリプト [#w5a43ff5]
以下のサンプルスクリプトは実際にタスクスケジューラに設定してポップアップメッセージ(MsgBox関数の代替え)として動作しました。
#ref(popup.vbs.zip)
 Option Explicit
 
 Dim objWS
 Set objWS = CreateObject("Wscript.Shell")
 objWS.Popup "WshShell.Popupメソッドでメッセージを表示"
 Set objWS = Nothing

以下は、タスクスケジューラに上記のスクリプトを設定時刻に起動するように設定し起動されたときのスクリーンショットです。~
#ref(01.gif)

MsbBox関数の場合、タスクスケジューラで起動するように指定するとメッセーボックスが表示されません。~
しかし、WshShell.Popupメソッドを使用することによりMsbBoxの代替えとして使用できるし、~
タスクスケジューラからの起動でもメッセージボックス(ポップアップメッセージ)を表示することができます。

以上、WshShell.Popupメソッドについてでした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS