.net - 向 Windows 上的 .NET 应用程序发送 native 消息

标签 .net windows google-chrome-extension chrome-native-messaging

我关注了 native messaging documentation尽我所能,但似乎无法让我的 native .NET 应用程序甚至开始在 Windows 上运行。在查找更多信息时,我注意到有些内容没有记录且不清楚。

首先,文档没有提到添加“nativeMessaging” 权限的要求。改变这个之后,我更进一步了; Chrome 现在实际上在气球弹出窗口中提到“添加了新的后台应用程序”。

但是,无论我尝试了哪些操作,以下代码都会立即断开连接。

var port = chrome.runtime.connectNative( ... );
port.onDisconnect.addListener(
    function()
    {
        console.log( "Disconnected" );
    } );

根据我调试这个东西的尝试,我有几个问题:

  1. 在 Windows 上,Chrome 何时尝试从注册表中的 NativeMessagingHosts 加载 list ?换句话说,我应该在更改值时重新启动 Chrome,还是重新加载扩展程序就足够了“chrome://extensions/”
  2. 注册表中的绝对路径,应该如何格式化?我见过人们只说 "\\\\" 斜线作为路径分隔符。它需要周围的引号吗?
  3. 有什么方法可以获取有关问题所在的更多信息吗?出于测试目的,我重命名了注册表项以查看是否会出现不同的错误(假设它无法加载它会通知我)。相反,“onDisconnect” 似乎仍被调用。
  4. 类似于注册表中的路径,注册表值指向的原生应用 list 文件中指向原生应用的相对路径应该如何格式化? ( there is an example of this in the documentation ,但只是为了确定哪些有效,哪些无效...)

现在似乎有太多变量让我无法调试它,并且不会立即看到我如何验证我的注册表值是否至少设置正确。

最佳答案

我得到它的工作并认为我会尝试以尽可能多的不同方式再次打破我的解决方案来回答我最初提出的问题。但是,我不记得/不知道为什么它以前不起作用。事实上,它只是在我放弃后才开始起作用;由于安装了更新 (34.0.1847.116 m),我不得不重新启动 Chrome,之后我的 native 应用程序突然出现了,因为我正在使用的插件仍然处于启用状态。

除此之外,以下是通过更改某些内容并查看 native 应用程序是否仍在启动来说明什么有效和无效的报告。

<强>1。在 Windows 上,Chrome 何时尝试从注册表中的 NativeMessagingHosts 加载 list ?

每当您在 “chrome://extensions/” 中开发的扩展程序上单击“重新加载”时,都会从注册表中再次加载 native 主机。也就是说,点击reload就可以验证你的manifest文件和registry设置是否正确。

<强>2。注册表中的绝对路径,应该如何格式化?

这是一个有效注册表值的示例:

C:\Users\Bleh\Some\Path Even With Spaces\No\Problem\someManifestFile.json

  • 没有两边的引号。
  • 使用单个反斜杠、正斜杠甚至无限量的斜杠都可以。 :O 例如“C:\Some\\\Very Weird\Path”
  • .json" 需要扩展名。
  • 它必须是绝对的。

<强>3。有什么方法可以获取有关问题所在的更多信息?

好吧,您也许可以查看 Chromium 的源代码来确定到底发生了什么,但除此之外,我看不到您可以从所提供的 API 中获得任何更广泛的反馈。

<强>4。 list 中的路径应如何格式化? 文档中的示例似乎是正确的:

"path": "C:\\Program Files\\My Application\\chrome_native_messaging_host.exe"

  • 需要两个反斜杠作为分隔符。
  • 路径可以是相对的。

关于.net - 向 Windows 上的 .NET 应用程序发送 native 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22963801/

相关文章:

java - 只是另一个网络创业公司 - 平台比较

javascript - Chrome 扩展程序使用 JavaScript 隐藏 webkitNotifications.createHTMLNotification 通知气球

javascript - 使用 javascript 的后台脚本消息传递

windows - 隐藏主窗体,但不从任务栏隐藏

c++ - 在 Windows 中使用 MIDI 流时出现问题

java - JAR 文件在 Windows 启动时由 C++ 应用程序启动时不会运行

javascript - 我怎样才能通过在 react,chrome 扩展中按下按钮来重定向到另一个组件?

c# - LINQ:SubmitChanges 和 Refresh 后关系不会更新

c# - 从 WebAPI 返回 PageResult 未格式化为 OData

.net - WCF Mono - 使用 SSL 的 BasicHttpBinding