user2522981
user2522981

Reputation: 163

Launching application using VBScript

I am trying to launch an application from the Windows shell using VBScript. The application runs without errors when run from QtCreator. However, it crashes when run from VBScript and exits with error code 255. Here's the script:

Set objShell = WScript.CreateObject("WScript.Shell")

rv = objShell.Run("path\to\application.exe", 1 , True)
If rv <> 0 Then
    MsgBox "Failed : " & rv
End If
WScript.Sleep 120000
objShell.Run "taskkill /im path\to\application.exe"

Set objShell = Nothing

Could someone please point out what I am missing?

Upvotes: 2

Views: 5907

Answers (3)

hollopost
hollopost

Reputation: 587

Try This way :

 Set objShell = WScript.CreateObject("WScript.Shell")

    rv = objShell.Run(chr(34)&"c:\windows\system32\Mspaint.exe"&chr(34), 1 , False)
    If rv <> 0 Then
        MsgBox "Failed : " & rv
    End If
    WScript.Sleep 2000
    objShell.Run  "taskkill /f /im ""Mspaint.exe"" ",0,False

    Set objShell = Nothing

Upvotes: 1

user2522981
user2522981

Reputation: 163

I was able to find the error. I set the current directory to the folder that contains the .exe file.This is the modified script:

Option Explicit
Dim Title,objShell,rv,ProcessPath,ProcessName
Title = "Launching and killing application using Vbcript"
Set objShell = CreateObject("WScript.Shell")
objShell.CurrentDirectory = "path\to\folder\containing\.exe"
ProcessPath = "path\to\application.exe"
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

Upvotes: 0

Hackoo
Hackoo

Reputation: 18827

Give a try for this vbscript and tell me the result :

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
'****************************************************

Upvotes: 1

Related Questions