# Raindrops.UI.WebView **Repository Path**: duwenjie15/Raindrops.UI.WebView ## Basic Information - **Project Name**: Raindrops.UI.WebView - **Description**: No description available - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-03-21 - **Last Updated**: 2025-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Welcome to Raindrops.UI.WebView ## miniblink vip版本封装 使用它你可以很轻松将miniblink引入你的任何C#项目 所有的P/Invoke代码位于NativeMethods内部 所有的事件位于 Miniblink/Event目录下 已封装好常用功能以及WebSocket接口,详细使用方法请看Raindrops.UI.WebView.TestWinForm ## 使用前需要 #### 1、来自miniblink的 mb.dll node.dll #### 2、引入 using Raindrops.UI.WebView.Miniblink; using Raindrops.UI.WebView.Miniblink.Event; using Raindrops.UI.WebView.Miniblink.PInvoke; using Raindrops.UI.WebView.Miniblink.PInvoke.Handle; #### 3、继承IMiniblinkProxy接口 ## 使用EventAdapter 它将自动寻找TCallback回调和TEventArgs属性、字段之间的对应关系,自动转换类型,并自动封装成事件。 ## EventAdapter 内部使用ILEmit构造代码,无需担心性能问题。 ## 例子: public class LoadUrlBeginEventArgs : EventArgs { [Map(Name = "url")] public string Url { get; set; } [Map(Name = "job")] public mbNetJob Job { get; set; } [Map(IsRet = true)] public bool Result { get; set; } } public partial class Browser : UserControl, IMiniblinkProxy { public EventAdapter LoadUrlBegin; public Browser() { LoadUrlBegin = new EventAdapter(this, NativeMethods.mbOnLoadUrlBegin); LoadUrlBegin.EventHandler += LoadUrlBegin_EventHandler; } private void LoadUrlBegin_EventHandler(object sender, Miniblink.Event.LoadUrlBeginEventArgs eventArgs) { if (eventArgs.Url.Contains("aaaaaa")) eventArgs.Job.ChangeRequestUrl("www.baidu.com"); var postBody = eventArgs.Job.GetPostBody(); if (postBody.elementSize.ToUInt32() > 0) { foreach (var body in postBody.GetElements()) { var buffer = body.GetData().ToArray(); string value = Encoding.UTF8.GetString(buffer); AppendLog($"Post {eventArgs.Url} -> StringLength:{value.Length}"); } } } } QQ:744257911 So Easy