制作FNF模组时,如何在不使用OS模块的情况下通过Lua打开程序?
在Psych引擎中无需OS模块打开外部程序的方法
利用Love2D内置的love.system.execute(优先推荐)
Psych引擎基于Love2D框架,若未被开发者禁用love.system模块,可直接使用其execute方法调用系统命令来打开程序:
- Windows系统:使用
start命令,比如打开记事本:
打开带空格路径的程序需注意格式:love.system.execute("start notepad.exe")
(空引号用于规避路径含空格时的命令解析错误)love.system.execute('start "" "C:\\Program Files\\SomeApp\\target.exe"') - macOS系统:使用
open命令:love.system.execute("open /Applications/TextEdit.app") - Linux系统:使用
xdg-open(适配多数桌面环境):love.system.execute("xdg-open /usr/bin/firefox")
借助Psych引擎的内置扩展或自定义绑定
如果love.system.execute也被限制,可尝试:
- 检查Psych引擎官方模组文档或社区开源示例,部分开发者会通过自定义C绑定提供外部程序调用接口,这类接口通常不会依赖禁用的OS模块。
- 若具备源码修改能力,可自行给引擎添加自定义Lua绑定,直接调用系统底层API打开程序,但需注意重编译引擎的操作复杂度,以及遵守Psych引擎的开源协议。
注意事项
- 不同系统的路径格式差异较大,建议做跨系统兼容处理,避免模组在特定平台失效。
- 部分系统会弹出权限提示,需在模组说明中告知用户相关风险。
- 禁止调用恶意程序,遵守模组开发的合规性要求。
内容的提问来源于stack exchange,提问作者Coolboy
相关产品推荐
相关产品推荐

