• ベストアンサー

WSHで処理を一時停止させたい

質問です。 バッチファイルからスクリプトを起動させて、 画面のプロパティを開きます。 細かい設定はユーザーにさせたいので、そこで処理を一時停止。 OKを押して、画面のプロパティを終了した時点で、バッチファイルへ戻り、次の処理へ。 という事が出来ないかと考えています。 ・処理を一時停止する方法 ・画面のプロパティを閉じた時点で、バッチファイルの処理を再開させる この2点について、分かる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

自分でも実際に試してみましたが、 "画面のプロパティ"っていわゆるアプリケーション扱いじゃないみたいで、 うまくいかないですね。 それで、次善の策として stat=ws.AppActivate("画面のプロパティ") のようにとすると、 AppActivateは、指定されたタイトルのウィンドウをアクティブにするメソッドなんですが、 返値としてウィンドウが存在しない場合statが0になるので、 statが0になったかどうかを定期的に調べれば、該当ウィンドウが閉じられたかどうかがわかると思います。 単純にループするとなんなので WScript.Sleep(1000) '一秒間のスリープ のようにスリープを入れたループにしてやればいいと思います。 例: dim ws set ws = CreateObject("WScript.Shell") ws.Run "control desk.cpl",1,1 WScript.Sleep(1000) 'ws.SendKeys ~~ do while ws.AppActivate("画面のプロパティ") WScript.Sleep(1000) loop WScript.Echo "閉じられた!"

hayabun
質問者

お礼

うまく出来ました(^^)これで先へ進めそうです。 BLUEPIXYさん、有難うございました!!

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

呼び出すスクリプトはどんな感じで書いているか挙げてもらえますか

hayabun
質問者

補足

bat: echo 画面のプロパティを開き、設定をして下さい。 sample.vbs echo 次の処理へ移ります。 echo ..... ----------------------- sample.vbs: set ws = CreateObject("WScript.Shell") ws.Run "control desk.cpl" ws.SendKeys ~~   ・   ・   ・ ----------------------- SendKeysでいくつか設定を行なった後で、 任意の項目を選択できるようストップする。 プロパティを閉じたら、バッチファイルへ処理を戻す。 という事をしてみたいんですが。 補足: Runメソッドで第三引数にtrueを与える、 という方法も試しましたがダメでした。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

startコマンドで/waitオプションを付けて呼び出せば、呼び出したアプリケーションの終了を待ちます。 勘違いコメントだったらすみません

hayabun
質問者

お礼

start /wait は一番最初に試してみましたが、 画面のプロパティを開いた時点で、スクリプトの処理は終わったとみなされ、 プロパティが開かれたまま、バッチファイルの処理が進んでいきます。 何か工夫しないと出来ないんです。。

関連するQ&A