Reputation: 43
I want to run Chrome with parameters using VBS code, this is my program:
check if chrome process in NOT running:
if so... start Chrome with URL with kiosk mode parameters.
Set objShell = CreateObject("WScript.Shell") i = 1
strPC = "." strProfile = objShell.ExpandEnvironmentStrings("%LOCALAPPDATA%")
strPath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
--kiosk www.stackoverflow.com"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strPC & "\root\cimv2")
Do While i = 1
booChrome = False
Set colProcesses = objWMIService.ExecQuery _
("Select * From Win32_Process")
For Each objItem in colProcesses
strProcessName = objItem.Caption
If strProcessName = "chrome.exe" Then booChrome = True
Next
If booChrome = False Then objShell.Run(Chr(34) & strPath & Chr(34))
WScript.Sleep 300000 Loop
This code is faild, but if i remove the parameters from URL its start Chrome well
Upvotes: 2
Views: 1427
Reputation: 18827
I created and tested this vbscript on windows 10 (32 bits).
So, you should modifie it for your purpose.
Option Explicit
Dim ProcessPath,KioskMode,URL
ProcessPath = "%ProgramFiles%\Google\Chrome\Application\chrome.exe"
KioskMode = "--kiosk"
URL = "https://stackoverflow.com/questions/56458100/start-chrome-with-url-and-kiosk-mode-using-vbs"
'Exit if the script is already running.
If AppPrevInstance() Then
MsgBox "There is an existing proceeding",VbExclamation,"There is an existing proceeding"
WScript.Quit
Else
Do
Call Main(Array(ProcessPath))
Call Pause(1) 'Sleep for 1 seconde
Loop
End If
'**************************************************************************
Sub Main(colProcessPaths)
Dim ProcessPath
For Each ProcessPath In colProcessPaths
CheckProcess(ProcessPath)
Next
End Sub
'**************************************************************************
Sub CheckProcess(ProcessPath)
Dim ProcessName : ProcessName = StripProcPath(ProcessPath)
With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
With .ExecQuery("SELECT * FROM Win32_Process WHERE Commandline LIKE " & CommandLineLike(ProcessName))
If .Count = 0 Then
With CreateObject("WScript.Shell")
.Run DblQuote(ProcessPath) & " " & KioskMode & " " & URL
End With
Else
Exit Sub
End if
End With
End With
End Sub
'**************************************************************************
'Checks whether a script with the same name as this script is already running
Function AppPrevInstance()
With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _
" AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'")
AppPrevInstance = (.Count > 1)
End With
End With
End Function
'**************************************************************************
Sub Pause(Secs)
Wscript.Sleep(Secs * 1000)
End Sub
'**************************************************************************
Function StripProcPath(ProcessPath)
Dim arrStr : arrStr = Split(ProcessPath, "\")
StripProcPath = arrStr(UBound(arrStr))
End Function
'**************************************************************************
Function CommandLineLike(ProcessPath)
ProcessPath = Replace(ProcessPath, "\", "\\")
CommandLineLike = "'%" & ProcessPath & "%'"
End Function
'**************************************************************************
'Function to add the double quotes into a variable
Function DblQuote(Str)
DblQuote = Chr(34) & Str & Chr(34)
End Function
'**************************************************************************
Upvotes: 1