Firefox 扩展中的无窗口嵌入式 exe

Window less embeded exe within Firefox extension

本文关键字:窗口 嵌入式 exe 扩展 Firefox      更新时间:2023-09-26

我开发了一个Firefox扩展(附加组件),并在其中嵌入了一个c ++控制台应用程序(.exe)。我将命令行参数传递给该exe,它会执行与这些参数关联的一些操作。问题是每当调用该 exe 时,控制台窗口就会出现并消失。我希望保持沉默。有什么想法吗?

我假设您现在实际上通过nsIProcess执行可执行文件。遗憾的是,nsIProcess 无法为您提供对进程创建的足够控制,无法避免控制台窗口。

您必须修改控制台应用程序本身,使其成为"Windows"应用程序

而不是"控制台"应用程序(WinMain() vs. main() ),或者如果这是不可能的,你必须以某种方式用包括CREATE_NO_WINDOW标志在内的dwCreationFlags打电话给CreateProcess自己。

后者可以通过以下方式完成:

  • 如果加载项代码已C++,则直接使用适当的标志调用CreateProcess
  • 使用 js-ctypes 导入CreateProcess ,定义必要的结构并调用它,替换你对nsIProcess的使用。
  • 使用另一个帮助程序应用程序,即"Windows"应用程序,它将调用CreateProcess以使用 CREATE_NO_WINDOW 启动您的实际应用程序。