我开发了一个 firefox 扩展(附加组件),并在其中嵌入了一个 c++ 控制台应用程序(.exe)。我将命令行参数传递给该 exe,它会执行一些与这些参数相关的操作。问题是每当调用该 exe 时,控制台窗口就会出现和消失。我希望它保持沉默。有什么想法吗?
问问题
113 次
1 回答
1
我假设您现在实际上正在执行您的可执行文件nsIProcess
。不幸的是nsIProcess
,您无法对进程创建进行足够的控制来避免使用控制台窗口。
您必须修改控制台应用程序本身,使其成为“Windows”应用程序而不是“控制台”应用程序(WinMain()
vs. main()
),或者如果这不可能,您将不得不以某种方式调用CreateProcess
自己并dwCreationFlags
包含CREATE_NO_WINDOW
标志。
后者可以通过以下方式完成:
CreateProcess
如果您的附加代码已经是 C++,则直接使用适当的标志调用。- 使用js-ctypes导入
CreateProcess
,定义必要的结构并调用它,代替你使用的nsIProcess
. - 使用另一个帮助应用程序,它是一个“Windows”应用程序,它将调用
CreateProcess
以启动您的实际应用程序CREATE_NO_WINDOW
。
于 2013-11-15T10:00:35.687 回答