import os from pymxs import runtime as rt def carregar_menu_mnx(): print("\n" + "="*50) print("AGENDANDO CARREGAMENTO - VR4LIFE (MODO SEGURO)") print("="*50) try: # 1. Definir caminhos pasta_macros = rt.getDir(rt.name("userMacros")) pasta_enu = os.path.dirname(pasta_macros) caminho_mnx = os.path.join(pasta_enu, "en-US", "UI", "vr4life.mnx").replace("\\", "/") plugin_dir = os.path.dirname(os.path.realpath(__file__)).replace("\\", "/") run_script = f"{plugin_dir}/run_vr4life.py" # 2. Registrar MacroScript macro_cmd = ( 'macroScript VR4Life_Launcher\n' 'category:"Immerse Games"\n' 'tooltip:"Abrir VR4Life"\n' '(\n' f' on execute do python.executeFile "{run_script}"\n' ')' ) rt.execute(macro_cmd) # 3. TIMER COM EXECUÇÃO TARDIA (Late Bound) # Usamos execute dentro do timer para o compilador não travar no 'menuMan' agora timer_cmd = f""" ( global _vr4life_timer = dotNetObject "System.Windows.Forms.Timer" _vr4life_timer.interval = 3000 -- 3 segundos para garantir dotNet.addEventHandler _vr4life_timer "Tick" (fn onTick s e = ( -- Só tentamos acessar o menuMan aqui dentro, após o tempo passar if (execute "menuMan") != undefined then ( execute "menuMan.loadMenuFile \\"{caminho_mnx}\\"" execute "menuMan.updateMenuBar()" format ">> VR4Life: Menu carregado com sucesso apos espera.\\n" s.stop() s.dispose() ) else ( format ">> VR4Life: Interface ainda carregando...\\n" ) )) _vr4life_timer.start() format "[*] Aguardando 3 segundos para injetar o menu...\\n" ) """ rt.execute(timer_cmd) except Exception as e: print(f"\n[EXCEPTION] Falha no agendamento:\n{str(e)}") if __name__ == "__main__": carregar_menu_mnx()