在C#中,是否可以通过连接到DevTools (我知道这是可能的,因为我做到了),然后再连接到WebSocket,从而侦听返回到WebView2浏览器的所有响应,从而连接到WinForms中的WebView2控件?如果是,我可以使用什么接口来连接到WebSocket?我用CefSharp浏览器控件做了类似的事情,但在WebView2中找不到套接字接口.
发布于 2022-12-02 02:16:47
是的,通过连接到WinForms应用程序中的DevTools和WebSocket,可以连接到嵌入在WinForms应用程序中的DevTools控件。这将允许您侦听返回到WebView2浏览器的所有响应,并根据需要处理它们。
要连接到WebView2控件的DevTools,可以在Microsoft.Web.WebView2.Core命名空间中使用WebView2DevToolsProtocolEventReceiver类。该类提供可用于侦听来自DevTools的消息的事件,如ConsoleMessageAdded、NetworkMessageReceived和PageNavigationCompleted。下面是一个如何使用这个类连接到DevTools的示例:
// Import the WebView2DevToolsProtocolEventReceiver class
using Microsoft.Web.WebView2.Core;
// Create a WebView2DevToolsProtocolEventReceiver object
WebView2DevToolsProtocolEventReceiver devToolsReceiver = new WebView2DevToolsProtocolEventReceiver();
// Listen for messages from the DevTools
devToolsReceiver.ConsoleMessageAdded += (sender, args) =>
{
Console.WriteLine($"Console message: {args.Message}");
};此代码创建一个WebView2DevToolsProtocolEventReceiver对象并侦听ConsoleMessageAdded事件,每当消息添加到DevTools控制台时就会触发这些事件。当接收到消息时,它将被打印到控制台。
一旦连接到DevTools,就可以使用System.Net.WebSockets命名空间中的WebSocket类连接到WebView2控件的WebSocket。WebSocket类提供了通过WebSocket连接(如ConnectAsync、SendAsync和ReceiveAsync )发送和接收消息的方法。下面是如何使用这个类连接到WebView2控件的WebSocket的示例:
// Import the WebSocket class
using System.Net.WebSockets;
// Create a WebSocket object
WebSocket webSocket = new WebSocket();
// Connect to the WebView2 control's WebSocket
await webSocket.ConnectAsync(new Uri("ws://localhost:9222/devtools/page/1234"));此代码创建一个WebSocket对象,并使用ConnectAsync()方法连接到WebView2控件的WebSocket。它指定了WebSocket连接的URL,在本例中它是ws://localhost:9222/devtools/page/1234。您需要将这个URL替换为WebView2控件的WebSocket的实际URL,您可以从DevTools获得该URL。
一旦连接到WebSocket,就可以使用SendAsync()和ReceiveAsync()方法通过WebSocket连接发送和接收消息。
https://stackoverflow.com/questions/74650058
复制相似问题