在Windows中使用lua os.execute启动一个没有CMD闪存的程序

Jan*_*e T 8 windows lua command-prompt

我很乐意在Lua的windows系统中启动一个程序

strProgram = '"C:\\Program Files\\Ps Pad\\PSPad.exe"'
strCmd = 'start "" '..strProgram
os.execute(strCmd)
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,启动程序和脚本完成.然而,如果它在几分之一秒内闪现命令窗口,那么任何人都可以从Lua启动程序.

Nic*_*las 7

Lua的os.execute命令基于C标准库"shell"函数.在Windows中,此函数将始终创建一个命令窗口,它将始终暂停当前进程,直到窗口完成.后者也发生在Linux中.

最终没有办法解决这个问题.不是通过Lua标准API.由于Lua需要轻量级且与平台无关,因此不允许API使用依赖于操作系统的本机API.

您最好的选择是使用Lua Ex-Api模块.它实际上是放弃软件,你可能需要修补一些编译器问题(我猜测Windows端口不是他们的首要任务).但它是产生进程的一种相当好的方法.您可以选择等到自己完成,或让它们并行运行.并且它不会抛出命令提示符窗口,除非应用程序本身使用它.