如何在lua中使用os.execute时避免弹出窗口

use*_*334 6 windows lua

os.execute()用来调用Lua中的其他程序,当程序运行时,cmd窗口会弹出一个闪烁,我调用执行超过一百次,它变得很烦人.那么有没有办法让窗口看不见?

小智 7

我个人对"不,你不能"的答案感到不满意,并且作为工程师类型的人只需要"解决这个问题",我能够使用WScript.Shell开始工作:

Shell = luacom.CreateObject("WScript.Shell")
Shell:Run (command, 0)
Run Code Online (Sandbox Code Playgroud)

"0"用于抑制弹出窗口的发生. http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx


Lor*_*ica 3

hjpotter 在评论中给出了简短的回答:不,你不能

下面是更长的解释。

在 Windows 上,可执行文件有“两种风格”:GUI 应用程序命令行应用程序。这与程序的内部工作无关,但取决于程序的构建方式(PE 可执行文件头中有一个标志,可以使用链接器选项进行设置)。当执行命令行应用程序时,操作系统会自动弹出控制台窗口(“丑陋的黑匣子”)。

问题os.execute在于它在底层使用了 Csystem函数,而这又可能是通过执行 Windows 命令 shell 可执行文件(cmd.exe一个命令行应用程序)来实现的。因此,每次使用时os.execute,您确实是在执行cmd.exe。该黑框是与cmd.exe正在执行相关的控制台窗口。