Traceback (most recent call last):
File “C

ssv = get_slideshow_view()
File “C

ssw = powerpoint.SlideShowWindows
File “C:\python36\lib\site-packages\win32com\client\dynamic.py”, line 516, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2147023174, ‘Сервер RPC недоступен.’, None, None)
пока не перезагрузиш OBS или не обновиш скрипт в программе. Установщик который сделал этот скрипт ничего не может исправить или не хочет. Возможно ли сделать так чтобы при каждом нажатии на кнопу обновлялся скрипт или еще какое нибудь решение?
сам скрипт такой:
import obspython as obs
# pip install pywin32
import win32com.client
powerpoint = None
hotkey_id_frst = None
hotkey_id_prev = None
hotkey_id_next = None
hotkey_id_last = None
HOTKEY_NAME_FRST = ‘powerpoint_slides.first’
HOTKEY_NAME_PREV = ‘powerpoint_slides.previous’
HOTKEY_NAME_NEXT = ‘powerpoint_slides.next’
HOTKEY_NAME_LAST = ‘powerpoint_slides.last’
HOTKEY_DESC_FRST = ‘Go to the first slide of active Powerpoint Presentation.’
HOTKEY_DESC_PREV = ‘Go to the previous slide of active Powerpoint Presentation.’
HOTKEY_DESC_NEXT = ‘Go to the next slide of active Powerpoint Presentation.’
HOTKEY_DESC_LAST = ‘Go to the last slide of active Powerpoint Presentation.’
# ————————————————————
# global functions for script plugins
def script_load(settings):
global hotkey_id_frst
global hotkey_id_prev
global hotkey_id_next
global hotkey_id_last
hotkey_id_frst = register_and_load_hotkey(settings, HOTKEY_NAME_FRST, HOTKEY_DESC_FRST, slideshow_view_first)
hotkey_id_prev = register_and_load_hotkey(settings, HOTKEY_NAME_PREV, HOTKEY_DESC_PREV, slideshow_view_previous)
hotkey_id_next = register_and_load_hotkey(settings, HOTKEY_NAME_NEXT, HOTKEY_DESC_NEXT, slideshow_view_next)
hotkey_id_last = register_and_load_hotkey(settings, HOTKEY_NAME_LAST, HOTKEY_DESC_LAST, slideshow_view_last)
def script_unload():
obs.obs_hotkey_unregister(slideshow_view_first)
obs.obs_hotkey_unregister(slideshow_view_previous)
obs.obs_hotkey_unregister(slideshow_view_next)
obs.obs_hotkey_unregister(slideshow_view_last)
def script_save(settings):
save_hotkey(settings, HOTKEY_NAME_FRST, hotkey_id_frst)
save_hotkey(settings, HOTKEY_NAME_PREV, hotkey_id_prev)
save_hotkey(settings, HOTKEY_NAME_NEXT, hotkey_id_next)
save_hotkey(settings, HOTKEY_NAME_LAST, hotkey_id_last)
def script_description():
return ‘Navigate Powerpoint Slides.’
def script_defaults(settings):
obs.obs_data_set_default_int(settings, ‘interval’, 10)
obs.obs_data_set_default_string(settings, ‘source’, ‘')
def register_and_load_hotkey(settings, name, description, callback):
hotkey_id = obs.obs_hotkey_register_frontend(name, description, callback)
hotkey_save_array = obs.obs_data_get_array(settings, name)
obs.obs_hotkey_load(hotkey_id, hotkey_save_array)
obs.obs_data_array_release(hotkey_save_array)
return hotkey_id
def save_hotkey(settings, name, hotkey_id):
hotkey_save_array = obs.obs_hotkey_save(hotkey_id)
obs.obs_data_set_array(settings, name, hotkey_save_array)
obs.obs_data_array_release(hotkey_save_array)
def get_slideshow_view():
global powerpoint
if powerpoint is None:
powerpoint = win32com.client.Dispatch(’Powerpoint.Application')
if powerpoint is None:
return
ssw = powerpoint.SlideShowWindows
if ssw.Count == 0:
return
# https://docs.microsoft.com/en-us/office/vba/api/powerpoint.slideshowwindow.view
ssv = ssw.View
return ssv
def slideshow_view_first(pressed):
if pressed:
ssv = get_slideshow_view()
if ssv:
ssv.First()
def slideshow_view_previous(pressed):
if pressed:
ssv = get_slideshow_view()
if ssv:
ssv.Previous()
def slideshow_view_next(pressed):
if pressed:
ssv = get_slideshow_view()
if ssv:
ssv.Next()
def slideshow_view_last(pressed):
if pressed:
ssv = get_slideshow_view()
if ssv:
ssv.Last()