如何在C#运行调用cmd的Lua脚本时隐藏cmd窗口?

Lua:

function test()
    local t = io.popen("cd")
    for line in t:lines() do
        print(line)
    end
    t:close()
end

C#:

using LuaInterface;

public void Lua_Test()
{
    Lua lua = new Lua();
    lua.DoFile(@"lua\test.lua");

    var Lua_Test = lua.GetFunction("test");

    Lua_Test.Call();
}

当我在SciTE中运行lua时,cmd窗口不会显示。但当lua被C#调用时,cmd窗口会出现(并快速关闭)。有没有办法隐藏cmd窗口或避免它出现?

顺便说一句,我不想使用VBScript的方法重新打开批处理文件。

io.popen和os.execute都会创建cmd窗口,我希望解决这两种情况。

编辑: 好的,我知道lua使用C系统函数,所以正常情况下cmd窗口会出现。但为什么当lua在SciTE中运行时窗口不会显示?(好的,我找到了,这是SciTE已经打开了一个cmd窗口)

点赞
用户5464722
用户5464722

我决定使用上面的解决方案,这对我来说比在批处理脚本中编写vbs更好,因为我的C#程序会多次调用lua。与vbs不同,这种方法只会创建一次shell,并且可以多次调用Run方法。

2018-05-25 08:53:53