ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

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

A 回答 (2件)

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



for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='abc.exe'")
Process.terminate
Next
    • good
    • 2
この回答へのお礼

notnotさん、こんにちは。
うまくいきました!
お礼が遅くなってすみませんでした。
どうもありがとうございました。

お礼日時:2005/04/18 16:32

おそらく、Runメソッドで実行したコマンドの終了を待つという指定をされているのだと思いますが、その場合、終了しないと次のスクリプトが実行されないので、プロセスを終了させる処理も実行されません。


終了を待たない設定に変えた場合は、プロセスを終了させる前に、コマンドが本当に終了したかどうか調べる必要があります、
それぐらいだったら、abc.exeがお仕事が終わったらちゃんと(自動的に)終了するようにするべきじゃないのかなと思います。
    • good
    • 0
この回答へのお礼

BLUEPIXYさん、こんにちは。
お礼が遅くなってすみませんでした。
abc.exeはよそ様から提供されたアプリケーション
で設定などの変更はできませんでした。
どうもありがとうございました。

お礼日時:2005/04/18 16:34

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

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

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

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

QVBスクリプト---アプリの終了について

VBスクリプト---アプリの終了について

お世話になります。

VBスクリプトを使い始めたのですが、アプリの終了の仕方が分かりません。

起動は、
WSHShell.Run とか、
objShell.Run で分かるのですが、終了のメソッドが分からないのです。

どなたかご教示ください

Aベストアンサー

なるほど・・・
for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='プログラム名'")
Process.terminate
Next
この方がスッキリですね;

他に回答が無いので引き続き書かせてもらいますが、特に詳しいわけではないので;

数が少ないのであれば上記を複数書けばOKです。
時間を空けるには
WScript.Sleep 10000 (1が1/1000秒なので、ここでは10秒)
と書けばOK(時間は正確ではなく約10秒だったはず)

強制終了なのでデータの保存待ちの必要は無いはずなので時間待ちは必要ないと思います。
ここではProcess.terminate
先に上げたものでは
For Each oProc In oProcs
oProc.Terminate
Next
ここが終了待ちになっているはずで、終了反応があったら次へと動いているんだと理解してます。
間違ってたらごめん;

なるほど・・・
for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='プログラム名'")
Process.terminate
Next
この方がスッキリですね;

他に回答が無いので引き続き書かせてもらいますが、特に詳しいわけではないので;

数が少ないのであれば上記を複数書けばOKです。
時間を空けるには
WScript.Sleep 10000 (1が1/1000秒なので、ここでは10秒)
と書けばOK(時間は正確ではなく約10秒だったはず)

強制終了なのでデー...続きを読む

Qアプリケーションを WSH から殺す方法

 駄目元での質問です。
 ネットゲームをやっていると、ときどき妙に重くなるんでなんでだろうと思って調べてみたら、実はグラフィック関係のユーティリティがハングアップしやがっていることが判明しました。
 そこで、現在はそのユーティリティを予め殺してからゲームを起動しているのですが、面倒なのでWSHで自動化したいと思っています。

 WSHから特定のユーティリティに DESTORY を投げるのにいい手はないでしょうか。
 または、そういう挙動をサポートするフリーソフトでも構いません。
 何かご存知の方がいらっしゃいましたら、よろしくお願いします。

(なお、「勝手に殺しちゃっていいのか」とか、そのくらいの調査はやってますんで心配は無用です(^_^;)

Aベストアンサー

プログラム名がわかっているなら、
for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='EXCEL.EXE'")
Process.terminate
Next
のようなので可能です。

QVBSの処理中一旦処理を止めて再開させたい。

VBSの処理中一旦処理を止めて再開させたい。

VBS内で順番に実行し処理しているソースで
その途中でダイアログを出して一時的に止めてOK出したら次の処理に移れる方法ってどうすれば出来ますか?

例えば copy1 copy2 copy3 終了

それを copy1 copy2 ダイアログのokを押すまで待機 copy3 終了

見たい感じです。

Aベストアンサー

わたしの場合は良くWScript.Echoを使いますね。

copy1
copy2
WScript.Echo("OKをクリックして継続します。")
copy3

↑のように書けばcopy2を終えたところでOKボタンのみの簡易ダイアログを表示します。

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

Kotori_Dと申します。

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

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

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

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

よろしくお願いします。

Aベストアンサー

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

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

QWSHで他のバッチを呼びその終了を待つ方法

WSHでプログラミングをしています。
WSHを使う理由はWin上から簡単にメールを送信できるのでとりあえず選択しました。

で、WSHのバッチから、普通のDOSコマンドで記述したバッチを呼んで、そのバッチの結果出力されたログファイルをWSHのバッチでメールに添付して送信したいなどと思っています。

今は
var ws = WScript.CreateObject("Wscript.Shell");
ws.run("tmp.bat");
こんな感じで「tmp.bat」という名のDOSコマンドのバッチを呼び出しているのですが、このコマンドは命令発行したらその命令が終了するのを待たず次の命令に進んでしまうようです。

なので、ログ作成とメール送信のタイミングが合わない状態です。

処理待ちする方法を教えてください。よろしくお願いします。

Aベストアンサー

ws.run("tmp.bat",1,1);
としてみて下さい。
3つめの引数が0以外の時終了待ちします。

Qvbsでからプログラムを、オプションを指定して起動したい。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動するだけであれば上の記述でいけますが
(1)と(2)は
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
の後ろにどのように記述すればいいのでしょうか。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動...続きを読む

Aベストアンサー

オプションやURLをすべてRunの第1引数で指定します。

objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab http://www.google.co.jp"

Q起動しているIEをVBSで閉じるときの問題・・・

VBスクリプトで起動しているIEを探し特定のサイトであればウィンドウを閉じたいのですがどのようにすればよいのでしょうか?

Dim ObjIE
Dim ObjShell
Dim ObjWindow
Dim WinExist

WinExist = False
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
If TypeName(ObjWindow.Document) = "HTMLDocument" Then
WinExist = True
Set ObjIE = ObjWindow
End If
Next
Set ObjShell = Nothing

If Not WinExist = True Then
Set ObjIE = CreateObject("InternetExplorer.Application")
End If

If objIE.Document.URL = "http://www.yahoo.co.jp/" Then
objIE.quit
End If
If objIE.Document.URL = "http://www.excite.co.jp/" Then
objIE.quit
End If
If objIE.Document.URL = "http://www.google.co.jp/" Then
??????????
End If




例えばディスプレイ上にYahoo、Excite、Googleのホームページがそれぞれ立ち上がっていたとします。
もしYahooがあれば閉じて次にExciteを探しあれば閉じて、次にGoogleのページがあればそのままにし後の処理を行わず終わらせたいのですが・・・もしGoogleが開いていればこれ以降の処理を全てすっ飛ばして終了にしたいのですが・・・
また、If thenを繰り返してばかりで汚いコードのような気もします。
これをやっていてYahoo、Excite、Google全て開いていた場合何故かエラーが出て終了してしまいます。
どなたかいい方法があれば教えて下さい。

VBスクリプトで起動しているIEを探し特定のサイトであればウィンドウを閉じたいのですがどのようにすればよいのでしょうか?

Dim ObjIE
Dim ObjShell
Dim ObjWindow
Dim WinExist

WinExist = False
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
If TypeName(ObjWindow.Document) = "HTMLDocument" Then
WinExist = True
Set ObjIE = ObjWindow
End If
Next
Set ObjShell = Nothing

If Not WinExist = True Then
Set ObjIE = CreateObject("In...続きを読む

Aベストアンサー

掲題のプログラムでは難しいですね。何がどう違うとか指摘できる
レベルではないようなので、一例を示します。

ReDim Obj(0)
Max = -1
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
   If ObjWindow.Type = "HTML ドキュメント" Then
      Select Case ObjWindow.LocationURL
          Case "http://~", "http://~",・・・ '★
              Max = Max + 1
              ReDim Preserve Obj(Max)
              Set Obj(Max) = ObjWindow
      End Select
   End If
Next
For I = 0 To Max
    Obj(I).Quit
Next

★ ここで、終了させたいURLを並べます。
あるいはLocationName(タイトルバー)の内容で判断する方法も
あります。If Then の繰り返しが嫌ならSelect Case文があります。
http://msdn.microsoft.com/ja-jp/library/cc392472.aspx

※上記はインデントに漢字空白を使っています。コピペ注意

掲題のプログラムでは難しいですね。何がどう違うとか指摘できる
レベルではないようなので、一例を示します。

ReDim Obj(0)
Max = -1
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
   If ObjWindow.Type = "HTML ドキュメント" Then
      Select Case ObjWindow.LocationURL
          Case "http://~", "http://~",・・・ '★
              Max = Max + 1
              ReDim Preserve Obj(Max)
...続きを読む

QVBSで変数の宣言はできないのですか?

VBSで、

Dim a As String
a = InputBox("MsgBoxに表示する値を入れてください。", , "test")
MsgBox a

と文章を作って、test.vbsで保存しました。
するとエラーになります。

Dim a As Stringの部分を消すと、問題なく作動します。

もしくは、

Dim a
a = InputBox("MsgBoxに表示する値を入れてください。", , "test")
MsgBox a

でも正常に動きます。
VBSで変数の宣言はできないのでしょうか?

Aベストアンサー

こっちの方がより面白いか。
自動型変換の便利さと危うさですね。

dim a
msgbox typename(a)
a=1
msgbox "a= " & a & " typename= " & typename(a)

a=a*100000
msgbox "a= " & a & " typename= " & typename(a)

a=a*0.1
msgbox "a= " & a & " typename= " & typename(a)

a= a & "b"
msgbox "a= " & a & " typename= " & typename(a)

a=a*1

QVBScriptから指定URLを開く方法

 ある特定のWebページをVBScriptから開きたいのですが方法が探せませんでした。VBScriptからWebページを開く方法、もしくはhttp putを行う方法を教えてください。よろしくお願いします。

Aベストアンサー

こんなので、どうでしょうか?

Set objIE = Wscript.CreateObject("InternetExplorer.Application")
objIE.Navigate2 "http://www.goo.ne.jp/"
objIE.Visible = TRUE
Set objIE =Nothing

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

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

Aベストアンサー

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

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


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

人気Q&Aランキング