• 締切済み

VBでメッセージを表示し、VBで閉じる方法

VBScriptで、以下のような記述でOS上でメッセージを出すとします。 WScript.Echo "こんにちは" これを例えば、message.vbsというファイルにしてPC内に置いておき、これを起動させてメッセージを表示させた後、好きなタイミングでまたVBScriptでこれを自動で閉じたいのですが。 何秒後に自動で閉じるとかではなく、あくまで違うVBScriptファイルでmessage.vbsを閉じるという事は可能なのでしょうか? 使い方としては、message.vbsを起動させてメッセージを表示。 VBScriptでこれを閉じるためのスクリプトを作成しておき(close.vbsとします)、close.vbsを起動。 close.vbsで、message.vbsが起動させてたメッセージを閉じる。 という流れをOS上でさせたいのですが。

みんなの回答

回答No.2

VBScript で可能です。 ' ----- close.vbs ----- set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "Windows Script Host" WshShell.SendKeys("{ENTER}") ' --------------------- ネット検索も有効ですが、Wshのヘルプファイル(Script56.CHM)を参照するのが基本です。 [参考] http://oshiete1.goo.ne.jp/qa602686.html?ans_count_asc=2

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

VBScriptが気に入っているのか、それに拘るから難しくなるのでは。普通はテキストボックス、ラベルなどを表示して、Visible=False などで見えないようにするのではないですか。 >OS上でさせたいのですが どういう意味ですか。普通OSの下(上?)でみなソフトは動くと思うが。告別な意味あるの。

mist0219
質問者

お礼

お返事、ありがとうございます。 >VBScriptが気に入っているのか、それに拘るから難しくなるのでは。普通はテキストボックス、ラベルなどを表示して、Visible=False などで見えないようにするのではないですか。 ごめんなさい。VBの知識に乏しいのでよくわからないです。 ちょっと特殊な事をやりたいと思っていたので、VBとかjavascriptを使ってメッセージを出して消すという動作をそれぞれ特別なタイミングでやりたいと思っていました。 >どういう意味ですか。普通OSの下(上?)でみなソフトは動くと思うが。 おっしゃる通りです。特に意味はないです。 この案件、とても難しい事のようですね。 検索して調べまくった結果、Word.exeを利用すれば可能という事がわかりました。 逆に言えばWSHやVB、javascriptなどだけでは無理という事みたいです。 こちらに紹介されているやり方で、見事できるようになりました。 http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/nov05/hey1130.mspx Process Explorerでバックグラウンドで動いているソフトを監視してみたところ、このスクリプトを実行するとWord.exeが裏で一瞬立ち上がって動作していました。

関連するQ&A

  • HTML + VBScript で Sleep できない

    お世話になります。ご教授ください。 類似の質問が既にあるのかもしれませんが、質問させていただきます。。。 HTML上に記述するVBScriptでは、WScriptは使用できないという記事を見かけます。 実際、HTML+VBScriptで使用すると、 変数は宣言されていません:'WScript' とエラーが出ました。 WSH は WScript のインスタンスを読み込むことができないうんぬん、と書かれていました。 書きたいことは、 WScript.Sleep 1000 です。 もしくは、これに変わる何かがしたいです。 外部ファイル化(.vbs)を試してみましたが、ダメでした。 ==== サンプル(Sample.vbs) ==== Option Explicit MsgBox "start" Dim Idx = 0 Do While Idx <> 3 WScript.Sleep 1000 MsgBox Idx Idx = Idx + 1 Loop WScript.Sleep 1000 MsgBox "end" ================ <html> <head> <meta http-equiv="Content-Script-Type" content="text/vbscript"> <script language="VBScript" type="text/vbscript" src="sample.vbs"></script> </head> … という感じです。 上記はあくまでサンプルですが、最終的には「ループの中で」待ち状態、になるようにしたいです。 Do While ある条件 1秒待ち ある条件に、なるかならないか Loop (setTimeout を使用する例が書かれていましたが、それではループ制御は走り続け、CPUが痛い目に合いました。。。) もしかして、WScript は使用できるのに、記述ミスかもしれませんし。。。 できない場合は、それに変わる案などいただけるとありがたいです。 よろしくお願いします。

  • WScript.Echo と msgbox

    vbsにおいて WScript.Echo msgbox の違いはなんでしょう? WScript.Echo "aaa" msgbox "bbb" とするとどちらもメッセージが表示されます。 vbsでコードを作る際どちらを浸かった方がよいのでしょうか?

  • vb スクリプトで IEを起動するには

    1. .vbs ファイル に記述するスクリプトで、IEを起動するにはどうしたらいいのでしょうか。 2. .vbs ファイルから、他の .vbs ファイルを実行させるにはどうしたら良いでしょうか。 どちらか1つでもけっこうですのでおわかりになる方よろしくお願いします。

  • VBSについて教えてください。

    VBSを勉強したくて http://www.whitire.com/vbs/tips0001.html のサンプルコードを見たのですが Option Explicit WScript.Echo "Hello VBScript World" はどこに張り付ければいいのでしょうか? エクセルVBAの標準モジュールに Sub test() WScript.Echo "Hello VBScript World" End Sub として実行してみましたが WScriptの部分がコンパイルエラーになってしまいました。

  • VBSで起動したアプリが前面表示しない

    Powerpointをコンテキストメニューに「読み取り専用」を追加するために以下のVBscriptを起動すると前面表示されません。 どうしたら前面表示されますでしょうか? 起動コマンド wscript.exe "C:\Program Files\Microsoft Office\Office14\OpenPptAsReadOnly.vbs" "%1" 以下がVBscript(OpenPptAsReadOnly.vbs)です。 Dim strPPTFileName Dim objPPTApp '引数のチェック If WScript.Arguments.Count <> 1 Then WScript.Quit 'ファイル名取得 strPPTFileName = WScript.Arguments(0) '起動 Set objPPTApp = WScript.CreateObject("Powerpoint.Application") objPPTApp.Visible = True '読み取り専用で開く Call objPPTApp.Presentations.Open(strPPTFileName,True) '終了処理 Set objPPTApp = Nothing WScript.Quit

  • HTML内に組み込んだVBScriptでExcelの値を取得したい

    ローカルドライブに C:\Book1.xls があります。 VBScriptで下記の記述をして、拡張子.vbsで保存し、そのファイルをダブルクリックすると、メッセージボックスにC:\Book1.xls のシート「管理」のセルA1の値を表示することができます。 Set objExcel = WScript.GetObject("C:\Book1.xls") WScript.Echo objExcel.Sheets("管理").Cells(1,1) これと同じようなことをHTML内に埋め込んだVBScriptでやりたいと考えています。 C:\Book1.xls のシート「管理」のセルA1に入力されている値を取得して、document.write を使って書き出したいと考えています。 出来れば、ネットワーク上のパスに置かれたExcelファイルに対しても同様のことをしたいと考えています。 サンプルコードなどをご教授願えないでしょうか?

  • win起動時のScriptHostからのエラーメッセージ対処法

    今朝からWin98起動時、デスクトップが表示される前に、以下のエラーメッセージが表示され、[OK]を要求してくるようになりました。OKをクリック後、メッセージは消え、パソコンは正常に動作しているようです。 Windows Script Host スクリプト:C:\WINDOWS\FONTS\Arial.vbs  行:3  文字:1  エラー:・ク0ケ0ネ0・  コード:8007002  ソース:WshShell.RegDelete ちなみに、Arial.vbs のプロパティを参照したところ 以下のとおりです。  ファイルの種類:VBScript Script File  サイズ 1KB  作成 02/09/17  更新 02/11/02 参照 02/11/03 質問 ・Arial.vbs は削除してはいけないシステムファイルなのでしょうか。 ・起動するごとに毎回表示されるので、表示されないようにする方法をご教示願います。 以上、よろしくお願い致します。

  • VB Scriptで隠しファイル、フォルダの表示/非表示の切り替え

    エクスプローラからツール>フォルダオプション>「表示」タブといくと 「すべてのファイルとフォルダを表示する」と「隠しファイルおよび隠しフォルダを表示しない」の二択から好きな方を選べるようになっていますが、これをVB Scriptで自動化することはできないでしょうか? 例えばhide.vbsを実行すれば隠しファイルが見えなくなるように。unhide.vbsで見えるようになるようにしたいです。

  • ファイル内の文字列を置換するcscriptについて

    お世話になります。 早速ですが、 以前、以下のような、「UNIXファイルの文字列を置換する」プログラムを Cscript で記述する方法を教えていただいたものですが、 cscript //nologo foo.vbs < t22.org > t22.txt ====foo.vbs==================================================== Do While Not WScript.StdIn.AtEndOfStream str = WScript.StdIn.ReadLine WScript.StdOut.Write replace(str,"abc","xxx") & vbLF Loop 今回、これをさらに、 Cscript で「置換するファイル」と「置換する文字列」も指定するプログラム にしたいと思い記述してみたのですが、下記のような問題が発生します。 「置換後のファイルの最後に改行文字が入ってしまいます。」原因がわかりません。 cscript //nologo f00.vbs t22.txt aaa xxx ====foo.vbs==================================================== Dim myFile Dim myRec Dim fso Dim txt, wd1, wd2 txt = WScript.Arguments(0) wd1 = WScript.Arguments(1) wd2 = WScript.Arguments(2) WScript.Echo txt WScript.Echo wd1 WScript.Echo wd2 Set fso = CreateObject("Scripting.FileSystemObject") Set myFile = fso.OpenTextFile(txt) myRec = myFile.ReadAll myRec = replace(myRec,wd1,wd2) myFile.Close Set myFile = fso.CreateTextFile(txt) myFile.WriteLine (myRec) myFile.Close =============================== このコードのどこに問題があるのでしょうか? 読み込んでいるファイルは、Shift-JIS LF改行のファイルです。 あるいは、 もっと簡単な記述方法等ありましたら、ご意見、ご指導ください。

  • スタートアップフォルダにエクセルファイルを入れてPC起動時の自動が実行可能ですか?

    現在 [メモ帳.vbs]ファイルとして、次のような記述のファイルをスタートアップフォルダに入れてあります。 Option Explicit 'オブジェクト変数の宣言とWshShellオブジェクトの作成。 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 10000 '10秒待機 '例としてメモ帳起動 objWshShell.Run "C:\Windows\System32\notepad.exe" これですと、notepad.exeファイルは自動実行されます。  しかし[エクセル.xlsm]というエクセルファイルを同様に単純にパスを通して[エクセル.vbs]ファイルを作成し、 スタートアップフォルダに入れてもエラーが出て実行されません。記述がわかる方いらっしゃったら、ぜひ教えててください。 お願いします