我致力于为EDGE浏览器开发一个扩展。扩展(UWP 应用(由 3 个部分组成:
- 扩展本身。(JavaScript 代码(
- 用于本机消息传递的 UWP 应用程序。(UWP(
- 允许与 C++ 桌面应用交互的桌面桥应用。(C#(
另外,我有一个用C++编写的桌面应用程序。基本上,扩展需要与我的桌面应用程序建立通信,并使我的桌面应用程序能够获取有关网页的一些信息。 我的桌面应用程序具有跟踪功能,它使用 ETW 机制进行跟踪。 它有一个负责管理跟踪会话的控制器对象;它具有提供程序,提供跟踪某些特定事件的能力,并且它具有Consumer- 一个能够显示跟踪的所有内容的对象。
会话具有自己唯一的名称和 GUID。
提供程序具有自己的 GUID。
提供程序在会话中注册自身,以便会话接受特定提供程序生成的事件。
现在的问题是: 是否可以使用我已经拥有的跟踪基础结构(编写在C++上(,C#应用程序(使用事件源(和UWP应用程序(使用LoggingChannel,LoggingSession等(
我已经做了一些尝试,但没有成功。
对于 UWP 应用程序,我尝试通过指定跟踪会话的名称来创建日志记录会话,但它不起作用。我的 c++ 使用者未收到有关发生新事件的通知。 我还尝试创建日志记录通道并指定我的跟踪会话 GUID:
channel = new LoggingChannel(DEFAULT_CHANNEL_NAME, null, new Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
但它崩溃并出现异常:
其他信息:访问被拒绝。(HRESULT的例外:0x80070005(E_ACCESSDENIED((
请阅读此处的文档:(https://learn.microsoft.com/en-us/microsoft-edge/extensions/guides/native-messaging#adding-a-desktop-bridge-component(用于创建使用本机消息传递+桌面桥的边缘扩展。扩展和运行时组件 (UWP( 必须打包在同一包中才能启用本机消息传送功能。
您可以在 https://github.com/MicrosoftEdge/MicrosoftEdge-Extensions-Demos/tree/master/SecureInput 尝试 GitHub 示例来掌握此体系结构。