I am using os.execute() to call other program in Lua, when program run,the cmd windows will popup for a blink, and I call the execute more than hundred times, and it become annoying.
So is there any way to set the window invisible?
I personally wasn't happy with the "No, you can't" answer and being the Engineer type of guy that just has to "SOLVE THAT PROBLEM", I was able to get things to work using WScript.Shell:
Shell = luacom.CreateObject("WScript.Shell")
Shell:Run (command, 0)
The "0" is used to suppress the popup from occurring. http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx
The short answer was given by hjpotter in a comment: no, you can't.
A longer explanation follows.
On Windows executable files come in "two flavors": GUI applications and command line applications. This has nothing to do with the inner workings of the program, but it depends on how the program was built (there is a flag for it in the PE executable header which can be set using a linker option). It is the OS that automatically pops up a console window (the "ugly black box") when a command line application is executed.
The problem with os.execute is that it uses C system function under the hood, which in turn is probably implemented by executing the Windows command shell executable cmd.exe, which is a command line application. Thus every time you use os.execute you are indeed executing cmd.exe. That black box is the console window associated with cmd.exe being executed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With