我有两个应用程序:
- 旧版,用 .net 编写
- 具有出色的 html5/js 功能的现代网络应用
我想让它们共存,所以我正在考虑整合一个 WebBrowser ActiveX control在我的 .net 应用程序中。我想了解我能让他们交流的“深度”,更具体地说:
我可以从 webapp 向父 .net app 发送哪种类型的信息?
在 Microsoft 文档中,有几个事件与 WebBrowser
类关联,例如 Navigated
似乎每次 webapp 的 url 更改时都会触发。所以我可以想象一种机制:
- 更改网址
- 不影响 webapp 内容
- 但将一些信息传递给 .net 应用程序。
- 示例:导航到 http://my.web.app/#event=hello&content=you会告诉我事件类型
hello
是由内容you
触发的。
这听起来像是一个乏味的过程,所以:
- 有比这个想法更高层次的东西吗?一开始,我期待类似
window.postMessage
的东西方法? - 如果没有,是否有一个库可以提供更高级别的 api 来更轻松地执行此类操作?
最佳答案
我认为您可以使用此技术在现代应用程序中的 javascript 代码和您的 C# 主机应用程序之间架起一座桥梁 https://learn.microsoft.com/en-us/dotnet/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client
它允许从 JS 执行 C# 代码以及从 C# 调用 JS。您需要将 WebBrowser 控件的 ObjectForScripting
属性设置为 C# 对象,将调用该对象的方法,然后调用它
window.external.YourCSharpObjectMethod('called from JS code');
关于c# - 从 WebBrowser 控件向父应用程序发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52534076/