このVBScriptのために試してみて、私に結果を伝える:
Option Explicit
Dim Title,objShell,rv,ProcessPath,ProcessName
Title = "Launching and killing application using Vbcript"
Set objShell = CreateObject("WScript.Shell")
ProcessPath = "C:\Windows\system32\Calc.exe"
rv = objShell.Run(DblQuote(ProcessPath),1,False)
If rv <> 0 Then
MsgBox "Failed : " & rv
End If
Set objShell = Nothing
WScript.Sleep 12000
ProcessPath = Split(ProcessPath,"\")
ProcessName = ProcessPath(UBound(ProcessPath))
Msgbox "The Process named "& DblQuote(ProcessName) &" is being to be killed now !",_
vbExclamation,Title
Call Kill(ProcessName)
'****************************************************
Sub Kill(ProcessName)
Dim Ws,Command,Execution
Set Ws = CreateObject("Wscript.Shell")
Command = "cmd /c Taskkill /F /IM "& DblQuote(ProcessName) &""
Execution = Ws.Run(Command,0,True)
Set Ws = Nothing
End Sub
'****************************************************
Function DblQuote(Str)
DblQuote = Chr(34) & Str & Chr(34)
End Function
'****************************************************
クラッシュするのはどのラインですか?デバッガでステップ実行できない場合は、キーコマンドの前後にmsgboxステートメントを追加して、クラッシュする場所を見つけてください。その情報はそれを追跡するのに大きな助けになるでしょう。 –
ちなみに、私は、アプリケーション用のC:\ Windows \ System32 \ calc.exe(テスト用のスリープ時間が短い)を使用していましたが、64ビットのWindows 7ではうまくいきました。 run()への最初の呼び出しでの引数は、アプリケーションが終了するのを待つことを意味します。別のプロセスが起動しない限り、後でkillすることはありません。名前による殺害は危険です。プロセスを開始してプロセスID(PID)を保存する方法があると思います。睡眠の後、あなたが開始したプロセスを殺していることを保証するために、PIDによって殺す。そのようにずっと安全です。 –
この投稿を参照してくださいhttps://stackoverflow.com/questions/35298200/taskkill-exit-code-255,255は、パスに問題があることを意味する可能性があります。オンになっている場合は、「On Error Resume Next'」をオフにします。 – langstrom