痔になりやすい生活習慣とは?

VBスクリプトを用いて、フォルダ名の一括変更などの簡易的なソフトをつくっています。

時間がかかる処理をしている最中に、「処理中です お待ち下さい」というようなメッセージを表示させ、処理終了後に「完了しました」という終了メッセージへ切り替えて表示させることは可能なのでしょうか?

MsgBox関数でできるかなと思って調べて見ましたが、できないようなので、質問させていただきました。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

VBScript のみではできないと思いますが、


IEを使ってそのようなことができると思います。
----------------------------------------------------------------
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application")

IE.Navigate "about:blank"
While IE.busy: Wend
While IE.Document.readyState <> "complete": DoEvents : Wend
IE.Document.body.innerHTML = "<b id=""msg"">処理中です お待ち下さい</b>"
IE.AddressBar = False
IE.ToolBar = False
IE.StatusBar = False
IE.Height = 100
IE.Width = 300
IE.Visible = True
WScript.Sleep(3000) '実際は時間の掛かる処理
IE.Document.getElementById("msg").innerHTML="完了しました"
'IE.Quit
    • good
    • 1
この回答へのお礼

ご回答、ありがとうございます。

へえ~~、IEを使うことでできるのですか!なるほど。やってみたいと思います。
この方法というのは、他のソフトを利用するということでしょうか??ということは、メッセージだけを表示するスクリプトがあれば、似たようなことができてしまうのでしょうか?

お礼日時:2006/05/26 16:41

#1>この方法というのは、他のソフトを利用するということでしょうか?


IEの場合表示されている内容をDOMでアクセスして変更できます。
(また、スタイルを変更することで見栄えも変更することができます。)
全てのソフトでこのようなことが簡単にできるわけではありません。
Win32APIを駆使すれば他(ソフト)のウィンドウに表示されているものを変更できるかもしれませんが、このように簡単にはできません。

>メッセージだけを表示するスクリプトがあれば、似たようなことができてしまうのでしょうか?
質問の意味がよくわかりません

この回答への補足

> 質問の意味がよくわかりません

すいません。。ちょっと意味不明でしたね。
IEでできるのならば、メッセージだけ表示するスクリプトをつくって、処理スクリプトから表示スクリプトを読み出すことで、メッセージ表示を自由に扱えたりできるのかな~と思ったのでした。

でも、全てのソフトでできるわけではないということは、スクリプトではとてもできないと理解しました。

補足日時:2006/05/30 10:49
    • good
    • 0
この回答へのお礼

重ねてのアドバイス、ありがとうございます。
お礼が遅くなり、大変失礼致しました。

なるほど、IEは特別なわけですね。わかりました。
いろいろ試して見たいと思います。

お礼日時:2006/05/30 10:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBScriptで外部プログラム実行中に「処理中」のダイアログボックスを表示したい

IPPプリンタを自動的にインストールするスクリプトを作成しています。プリンタドライバのインストールに時間がかかるので、その間に「処理中です。しばらくお待ちください」というダイアログボックスを表示したいのですがどのように実装したら宜しいでしょうか。

具体的には11行目の「WshShell.Run install, 1, True」が実行されてから終了するまでダイアログを表示したいと思っています。

以下作成したスクリプトです
------------------------------------
Option Explicit

Dim WshShell
Dim install
Dim open_window

install = "rundll32 printui.dll,PrintUIEntry /b ""プリンタ"" /x /n ""プリンタ"" /if /f ""RCBED12K.INF"" /u /r ""https://192.168.1.1"""
open_window = "control printers"

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Popup "プリンタドライバをインストールします。この処理には10秒以上かかる場合があります。しばらくお待ち下さい",10,"インストール"
WshShell.Run install, 1, True

WshShell.Popup "プリンタドライバのインストールが完了しました。この後自動的に開くウィンドウの中に「プリンタ」のアイコンが表示されていればインストール完了です。",10,"インストール"
WshShell.Run open_window

WScript.Quit
------------------------------------

IPPプリンタを自動的にインストールするスクリプトを作成しています。プリンタドライバのインストールに時間がかかるので、その間に「処理中です。しばらくお待ちください」というダイアログボックスを表示したいのですがどのように実装したら宜しいでしょうか。

具体的には11行目の「WshShell.Run install, 1, True」が実行されてから終了するまでダイアログを表示したいと思っています。

以下作成したスクリプトです
------------------------------------
Option Explicit

Dim WshShell
Dim instal...続きを読む

Aベストアンサー

過去に同様の質問が出てますね。
http://okwave.jp/qa/q2176278.html

VBScriptでマルチスレッド・マルチプロセスはできないので、この回答のように、
1.外部アプリを起動してそこに文章を出す
2.時間のかかる処理をする
3.外部アプリを終了させる
ということしか出来ないでしょう。

QVBSで応答不要のメッセージボックスを表示したい

Kotori_Dと申します。

今回質問したいのは、VBScriptを使い、ある処理を行っている最中にメッセージボックスを表示させ、
操作をしないように呼びかけ、なおかつメッセージ表示中も処理が実行され続けるようにしたいのですが、その方法で困っています。

MsgBox("処理中です。操作しないでください。")
この場合、メッセージが出て、OKを押すまで保存は実行されません。

CreateObject("WScript.Shell").Popup "処理中です。操作しないでください。", 0, " 警告"
こちらでも、OKを押すまで処理は中断されます。
また、表示時間を指定すると、途中で消えてしまうので、役不足です。

私としては、メッセージは出たままで、処理を継続してほしいのですが、
何かよい方法はないでしょうか?

よろしくお願いします。

Aベストアンサー

http://blog.s21g.com/articles/1202

非同期でコマンドを発行すればいいと思います。
コマンド内容は、メッセージを表示するだけの実行ファイルを
用意。

Qvbsでファイルやフォルダのコピー中にプログレスバーを表示させるにはど

vbsでファイルやフォルダのコピー中にプログレスバーを表示させるにはどうすればいいでしょうか。
無言でコピーするコードはいろいろと紹介されているのですが、何も表示されないので進行状況がわかるようにしたいのです。
残り時間表示やパーセント表示などどのような表示方法でもいいのでおおよその進行状況がわかる方法をご存知でしたら教えて頂けないでしょうか。
宜しくお願い致します。
<例>
コピー元ファイル:"C:\test\*.*"
コピー先フォルダ:"C:\backup\"

Aベストアンサー

●ファイルのコピー中に視覚的なインジケータを表示する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct06/hey1010.mspx
にそのままの例が載っております。

Const FOF_CREATEPROGRESSDLG = &H0&
strTargetFolder = "C:\backup\"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(strTargetFolder)
objFolder.CopyHere "C:\test\*.*", FOF_CREATEPROGRESSDLG

QVBS(WSH)で開いたIEのウィンドウがアクティブにならない

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーのみのIEを起動する
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate("http://www.google.co.jp/")
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.AddressBar = False
objIE.Visible = True

'表示待ちループ
Do While objIE.Busy
WScript.Sleep 100
Loop

'[test]で検索
WshShell.SendKeys("test")
WScript.Sleep(100)
WshShell.SendKeys("{TAB}")
WScript.Sleep(100)
WshShell.SendKeys("{ENTER}")

--------------------------------------------------

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーの...続きを読む

Aベストアンサー

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動した場合、objIEだけでプロセスIDが得られないので、別の検討が必要になります。
メニュー等非表示の指定を除けば、iexplorer.exeをExecコマンドで立ち上げることは可能でしょう。

プロセスIDまで取得してきっちり組みたい場合は、WSHにてWMIという仕組みを使えばプロセス情報は得られます。

http://www.upken.jp/kb/wmi_sample.html

検索ワードとしては、「WMI」「VBScript」「プロセス」「取得」あたりでいろいろ出ると思いますよ。

IE起動前にプロセス一覧を記録し、起動後に増えたIEのプロセスをうまく引ければ実現できそうですね。

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動し...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QWScript.Echo と msgbox

vbsにおいて
WScript.Echo
msgbox
の違いはなんでしょう?

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

Aベストアンサー

通常、VBS ファイルをダブルクリックした場合は
Wscript.exe で実行されますので、違いが分からないと思います。
コマンドプロンプトを立ち上げて
cscript.exe ○△.vbs + Enterキー
とやると違いが実感できます。

Wscript.echo はコマンドプロンプトの画面内に出力されます。
どんな時に便利かというとファイル内に
Wscript.echo 実行結果の内容を表すモノなど
の様になっていれば
出力結果を再利用しやすいですね。
なので用途によりけりです。
単純に確認用なら、Msgbox の方がキーストロークが少ないので楽 (^^ゞ
記録用ログファイルに残したい場合は、Batファイルに
cscript.exe //nologo ○△.vbs >> c:\log\log.txt
とでもしておけば簡易的なログファイルの出来上がりです。

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

Qメッセージボックスを前面に表示させるには?

Sub 教えて()
Dim ExAp As Application
Dim ExBk As Workbook
Dim ExSh As Worksheet

Set ExAp = CreateObject("Excel.Application")
Set ExBk = ExAp.Workbooks.Add
Set ExSh = ExBk.Worksheets(1)
ExAp.Visible = True
ExAp.WindowState = xlMaximized

ThisWorkbook.Worksheets(1).Activate
MsgBox "前面表示させたいお!"

Set ExAp = Nothing
Set ExBk = Nothing
Set ExSh = Nothing

End Sub
これを実行するとメッセージボックスが隠れてしまいます。
どうしたらよいでしょうか?

Aベストアンサー

自身のアプリケーションにフォーカスを持ってくる
という方法ですが、2種類、3通りの方法があります。
(1)自身のVisibleを切り替える
Application.Visible = False
Application.Visible = True
MsgBox "前面表示させたいお!"
(2)APIを使う方法
(A)WindowsAPIを定義する方法
Declare Function SetForegroundWindow Lib "USER32" _
    (ByVal Hwnd As Long) As Long
Sub 教えて()
SetForegroundWindow Application.Hwnd
MsgBox "前面表示させたいお!"
End Sub
(B)ExecuteExcel4Macroを使う方法
ExecuteExcel4Macro "CALL(""USER32""," _
    & """SetForegroundWindow"",""JJ""," _
    & Application.Hwnd & ")"
MsgBox "前面表示させたいお!"

(1)は簡単ですが、タスクバーでの自身のアイコン位置が
最後尾になってしまう弱点があります。
(2)はSetForegroundWindowで自身のアプリケーションに
フォーカスを取り戻しています。
(A)は正規のAPI定義手法を使っています。
(B)は以前のAPI呼び出しです。

自身のアプリケーションにフォーカスを持ってくる
という方法ですが、2種類、3通りの方法があります。
(1)自身のVisibleを切り替える
Application.Visible = False
Application.Visible = True
MsgBox "前面表示させたいお!"
(2)APIを使う方法
(A)WindowsAPIを定義する方法
Declare Function SetForegroundWindow Lib "USER32" _
    (ByVal Hwnd As Long) As Long
Sub 教えて()
SetForegroundWindow Application.Hwnd
MsgBox "前面表示させたいお!"
End Sub
(B)ExecuteExcel4Macroを使う方法
ExecuteExce...続きを読む

Qブラウザの右上にあるボタンを消すには?

IEを使用しています。
ブラウザの右上にある、閉じる、最大、最小ボタンを消したいのですが、どうすれば良いでしょうか?
ご存じの方は、どうぞ教えていただけませんでしょうか。

Aベストアンサー

なるほど、特定の用途に限定した方策を模索中なのですね。

これは、通常のWebSiteでは、禁じ手とも言える、ユーザからの大顰蹙を買う手法ですが、JavaScriptでフルスクリーン表示させることで実装可能ですね。

表示はWin環境のIE4以上限定でのフルスクリーン表示となります。
それ以外の環境では正しく表示されません。

注意点としては、ウインドウのクローズアクションをボタンなどでナビゲーションしなければ、Altキー+F4キー以外ではウインドウをクローズ出来なくなります。
そのため、使いようによっては、ユーザビリティーを無視した劣悪サイトとも成りかねませんので、一般的なサイト構築には100%お勧め致しません。

まずは、以下の2枚のソースをエディタにCopy&Pasteして、動作チェックしてみて下さい。
その後、ご自分でアレンジして下さい。


リンク元、a.htmlの記述例・・

<html>
<head>
<title>a</title>
<script type="text/javascript">
<!--
function full_screen()
{
window.open("b.html","", "fullscreen=yes");
}
//-->
</script>
</head>
<body>
<a href="#" onclick="full_screen()">b.htmlをフルスクリーン表示</a>
</body>
</html>


リンク先、b.htmlの記述例・・

<html>
<head>
<title>b</title>
</head>
<body>
<form>
<input type="button" name="close" value="ウインドウを閉じる" onClick="window.close()">
</form>
</body>
</html>

なるほど、特定の用途に限定した方策を模索中なのですね。

これは、通常のWebSiteでは、禁じ手とも言える、ユーザからの大顰蹙を買う手法ですが、JavaScriptでフルスクリーン表示させることで実装可能ですね。

表示はWin環境のIE4以上限定でのフルスクリーン表示となります。
それ以外の環境では正しく表示されません。

注意点としては、ウインドウのクローズアクションをボタンなどでナビゲーションしなければ、Altキー+F4キー以外ではウインドウをクローズ出来なくなります。
そのため、使いように...続きを読む

QWSH(VBScript)でアプリケーションを停止したい

こんにちは。
OSはWIN2K、WSH5.6を使用しています。
WSH(VBScript)で「c:\abc.exe」という
アプリケーションを起動してます。
このアプリケーションは複数起動できな
いためパラメータを変え連続3回Runメ
ソッドで起動しました。
しかし一番最初に起動したものが落ちて
いないため2本目以降は起動しません(
1本終わったら閉じるボタンでそのアプ
リケーションを終了させると2本目以降
も起動します)。
タスクマネージャーのプロセスにも
abc.exeがでていますので2、3本目の
起動前にこれを停止させるスクリプトを
記述したいのですが、どなたかご教授い
ただけますでしょうか。
よろしくお願いいたします。

Aベストアンサー

abc.exeというプロセスを停止させるサンプルコードということですよね?

for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='abc.exe'")
Process.terminate
Next


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング