#author("2020-10-20T09:37:27+09:00","default:nobuoki","nobuoki")
#author("2020-10-20T09:37:40+09:00","default:nobuoki","nobuoki")
* はじめに [#l81d2fb1]

uwscで一定時間経過したら自動的に消えてくれるようなmsgboxを出す方法です

#ref(./wshshell-popup.png)

ユーザーが「OK」を押し忘れたり、何かのウィンドウの影に隠れてしまって「OK」が押せなくなったとしても、
勝手に閉じて後続のスクリプトを処理してくれます

* コード例 [#x65b2067]

Windows Scripting Host の WScript.Shell オブジェクトを生成し、Popup メソッドを使います
下記例では、ユーザーが何もボタンを押さなくても3秒経過したら自動的にダイアログが閉じて後続の処理(EXITEXIT)に進みます

#prism(clike){{{
// リモートデスクトップの接続ウィンドウが存在するか?
id = GETID("epE9106812 - リモート デスクトップ接続","Transparent Windows Client", 1)
IFB !(id = -1) THEN
  // wshオブジェクトを使い、3秒間だけエラーメッセージを表示してスクリプトを強制終了します
  objShell = CREATEOLEOBJ("WScript.Shell")
  objShell.Popup("既に epE9106812へ接続済みです<#CR>3秒後に終了します", 3, "処理中断", 0 + 48)
  objShell.Popup("既に epE9106812 へ接続済みです<#CR>3秒後に終了します", 3, "処理中断", 0 + 48)
  EXITEXIT
ENDIF

// IFB に該当しない場合、以下処理を続ける
EXEC("C:\Program Files\Internet Explorer\iexplore.exe https://www.goo.ne.jp/")
...
}}}

ウィンドウタイトルやアイコン表示など、popup メソッドの使い方はこの辺が分かりやすいかもしれません
- [[第7回 WshShellオブジェクトの詳細(3) (3/3):Windows管理者のためのWindows Script Host入門 - @IT>https://www.atmarkit.co.jp/ait/articles/0410/21/news099_3.html]]


* 与太 [#r7268a06]

タイマー処理のことを「時限爆弾を仕掛ける」なんて言う先輩がいた事をふと思い出しましたw

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