我开发了一个 firefox 扩展(附加组件),并在其中嵌入了一个 c++ 控制台应用程序 (.exe)。我将命令行参数传递给该 exe,它执行与这些参数相关的一些操作。问题是每当调用该 exe 时,控制台窗口都会出现并消失。我希望它保持沉默。有什么想法吗?
最佳答案
我假设您现在实际上通过 nsIProcess
执行您的可执行文件。不幸的是,nsIProcess
无法让您对进程创建进行足够的控制,从而避免出现控制台窗口。
您要么必须修改控制台应用程序本身,使其成为“Windows”应用程序而不是“控制台”应用程序(WinMain()
与 main()
), 或者如果那是不可能的,你将不得不以某种方式调用 CreateProcess
自己使用 dwCreationFlags
,包括 CREATE_NO_WINDOW
标志。
后者可以通过以下方式完成:
- 如果您的附加代码已经是 C++,则直接使用适当的标志调用
CreateProcess
。 - 使用js-ctypes导入
CreateProcess
,定义必要的结构并调用它,替换您对nsIProcess
的使用。 - 使用另一个辅助应用程序,它是一个“Windows”应用程序,它将调用
CreateProcess
以使用CREATE_NO_WINDOW
启动您的实际应用程序。
关于javascript - Firefox 扩展中的 Window less embedded exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19995394/