Вы должны войти, чтобы создавать сообщения и темы.

VBS для быстрого запуска OBS [Решено]

Здравствуйте!
Помогите, пожалуйста, написать VBS для быстрого запуска OBS в режиме записи. Логика работы:
1. Проверить не запущен ли уже OBS и если запущен, то убить процесс и завершить работу скрипта вообще.
2. Если процесса с OBS нет, то: Перейти в заданную папку и запустить OBS в свернутом окне с параметрами: Скопировано--startrecording --disable-updater

Скрипт должен запускать/работать без создания и активации лишних окон. Хочу его на хоткей экранной клавы повесить.

Добрый🖐.
Думал сейчас быстро сделаю, а не тут то было).
Это только у меня ошибка при запуске OBS именно из под чего-то(vbs, cmd и т.д. неважно)ошибка, просто с ярлыка с аргументами, запускает и работает¯\_(ツ)_/¯, из-за этого не могу закончить код, первый раз на такое натыкаюсь.
Может кто лучше шарит vbs, знает как обойти.
Код запуска используюется такой.

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run ("""C:\Program Files\obs-studio\bin\64bit\obs64.exe""" & " --startrecording --disable-updater")
Set objShell = Nothing

 

Лайкнули XpucT и Латук
XpucTЛатук
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Добрый день.
Mikhail, пишут, что обязательно следует указывать рабочую папку, при использовании параметров.

Это необходимо, так как OBS загружает свои файлы и плагины по относительным путям, начиная с рабочего каталога.

Ссылка на github

Лайкнули XpucT, Mikhail и Латук
XpucTMikhailЛатук
Лучший способ помочь себе — помогать другим.

Вроде все работает.
Яр, Спасибо.

VBS

set objWMIService = GetObject ("winmgmts:")
Dim oShell : Set oShell = CreateObject("WScript.Shell")
foundProc = False
procName = "obs64.exe"

for each Process in objWMIService.InstancesOf ("Win32_Process")
    If StrComp(Process.Name,procName,vbTextCompare) = 0 then
        foundProc = True
        procID = Process.ProcessId
    End If
Next
If foundProc = True Then
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" &  procID)
    For Each objProcess in colProcessList    
        objProcess.Terminate()
        oShell.Run "taskkill /f /im obs64.exe", 0
    Next
    WScript.Sleep(1000) 'wait for a second
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where ProcessId =" &  procID)
    If colProcessList.count = 0 Then
    End If
Else
Set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "Portable OBS Studio\bin\64bit"
RunOBS = WshShell.Run("obs64" & " --startrecording --disable-updater", 0)
End If


Пути(Директорию без exe) и т.д. заменить на свои.

Лайкнули XpucT, ЯR и ещё 3
XpucTЯRВалерийЛатукAlas Nameless
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн