在C#中创建单个进程以接收多个Chrome本机邮件

时间:2014-07-14 09:38:52

标签: c# google-chrome-extension chrome-native-messaging single-instance

基本上我想要做的是拥有一个应用程序(一个进程),它将一直保持打开状态,并有一个线程正在收听Chrome的原生消息。

我目前的理解是,Chrome会针对每封原生邮件启动单独的流程。如果我使用Mutex创建单个进程,那么我将无法将标准输入传递给主进程,因为我必须首先使用适当的参数再次启动进程。 Chrome可能会以类似方式执行此操作,因此需要多个流程。

在我看来,必须有一个通过套接字或类似方式进行通信的中间过程,以通知Chrome消息的主要过程。是这样的吗?有没有办法使用单个流程实现这个?

很感激输入!

另外,作为旁注,Chrome似乎默默地启动其原生消息传递应用程序(无显示)。这是我做错了还是这是正常的?

1 个答案:

答案 0 :(得分:2)

使用chrome.runtime.connectNative,您可以创建一个长时间运行的本机实例。然后,您需要在后台脚本中保留该javascript引用,以便重用它。

的manifest.json;

"background": {"scripts": ["background.js"]},

background.js;

var nativePort = null;
function getNativePort(){
  if (nativePort == null)
    nativePort = chrome.runtime.connectNative("...");
}

如果您要从内容脚本发送消息,则必须先将其转发到后台脚本。