VBS для быстрого запуска OBS [Решено]
Цитата: Валерий от 28.08.2022, 06:47Здравствуйте!
Помогите, пожалуйста, написать VBS для быстрого запуска OBS в режиме записи. Логика работы:
1. Проверить не запущен ли уже OBS и если запущен, то убить процесс и завершить работу скрипта вообще.
2. Если процесса с OBS нет, то: Перейти в заданную папку и запустить OBS в свернутом окне с параметрами:--startrecording --disable-updaterСкрипт должен запускать/работать без создания и активации лишних окон. Хочу его на хоткей экранной клавы повесить.
Здравствуйте!
Помогите, пожалуйста, написать VBS для быстрого запуска OBS в режиме записи. Логика работы:
1. Проверить не запущен ли уже OBS и если запущен, то убить процесс и завершить работу скрипта вообще.
2. Если процесса с OBS нет, то: Перейти в заданную папку и запустить OBS в свернутом окне с параметрами: Скопировано--startrecording --disable-updater
Скрипт должен запускать/работать без создания и активации лишних окон. Хочу его на хоткей экранной клавы повесить.
Цитата: Mikhail от 28.08.2022, 10:26Добрый🖐.
Думал сейчас быстро сделаю, а не тут то было).
Это только у меня ошибка при запуске 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
Добрый🖐.
Думал сейчас быстро сделаю, а не тут то было).
Это только у меня ошибка при запуске 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
Цитата: ЯR от 28.08.2022, 11:51Добрый день.
Mikhail, пишут, что обязательно следует указывать рабочую папку, при использовании параметров.Это необходимо, так как OBS загружает свои файлы и плагины по относительным путям, начиная с рабочего каталога.
Ссылка на github
Добрый день.
Mikhail, пишут, что обязательно следует указывать рабочую папку, при использовании параметров.
Это необходимо, так как OBS загружает свои файлы и плагины по относительным путям, начиная с рабочего каталога.
Ссылка на github
Цитата: Mikhail от 28.08.2022, 12:29Вроде все работает.
Яр, Спасибо.
[spoiler title="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[/spoiler]
Пути(Директорию без exe) и т.д. заменить на свои.
Вроде все работает.
Яр, Спасибо.
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) и т.д. заменить на свои.