ChromiumWebBrowser禁止鼠标右键和拖动

Posted ly570

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ChromiumWebBrowser禁止鼠标右键和拖动相关的知识,希望对你有一定的参考价值。

C#引用CefSharp
在C#的设计界面,添加panel控件用来放置CEFSharp浏览器。
CEFSharp浏览器dll添加引用

using CefSharp;
using CefSharp.WinForms;
1
2
CEFSharp浏览器初始化代码:

public Form1()

InitializeComponent();
InitBrowser();

public ChromiumWebBrowser browser;
public void InitBrowser()

Cef.Initialize(new CefSettings());
browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
browser.Dock = DockStyle.Fill;
panel1.Controls.Add(browser);

上述完成之后就可以运行了!
注意事项:平台选择X86,右侧解决方案中引用DLL文件,文件放在\项目名\bin\x86\Debug

C#添加代码屏蔽鼠标右键
在屏蔽之前先查看namespace CefSharp.WinForms内的代码

public class ChromiumWebBrowser : Control, IWebBrowserInternal, IWinFormsWebBrowser, IWebBrowser, IDisposable

public ChromiumWebBrowser(string address);

public IDownloadHandler DownloadHandler get; set;
public ILoadHandler LoadHandler get; set;
public IDisplayHandler DisplayHandler get; set;
public IContextMenuHandler MenuHandler get; set;
public IRenderProcessMessageHandler RenderProcessMessageHandler get; set;
public IFindHandler FindHandler get; set;
public IRequestHandler RequestHandler get; set;
public IFocusHandler FocusHandler get; set;
public IResourceHandlerFactory ResourceHandlerFactory get; set;
public IGeolocationHandler GeolocationHandler get; set;
public bool CanGoForward get;
public bool CanGoBack get;
public bool IsBrowserInitialized get;
public override bool Focused get;
public IDragHandler DragHandler get; set;
public IKeyboardHandler KeyboardHandler get; set;
public ILifeSpanHandler LifeSpanHandler get; set;
public IDialogHandler DialogHandler get; set;
public string Address get;
public string TooltipText get;
public bool IsLoading get;
public RequestContext RequestContext get; set;
public BrowserSettings BrowserSettings get; set;
public bool IsActivating get; set;
public IJsDialogHandler JsDialogHandler get; set;

public event EventHandler<AddressChangedEventArgs> AddressChanged;
public event EventHandler<StatusMessageEventArgs> StatusMessage;
public event EventHandler<ConsoleMessageEventArgs> ConsoleMessage;
public event EventHandler<LoadingStateChangedEventArgs> LoadingStateChanged;
public event EventHandler<FrameLoadEndEventArgs> FrameLoadEnd;
public event EventHandler<FrameLoadStartEventArgs> FrameLoadStart;
public event EventHandler<LoadErrorEventArgs> LoadError;
public event EventHandler<IsBrowserInitializedChangedEventArgs> IsBrowserInitializedChanged;
public event EventHandler<TitleChangedEventArgs> TitleChanged;

public IBrowser GetBrowser();
public void Load(string url);
public void RegisterAsyncJsObject(string name, object objectToBind, bool camelCasejavascriptNames = true);
public void RegisterJsObject(string name, object objectToBind, bool camelCaseJavascriptNames = true);
protected override void Dispose(bool disposing);
protected override void OnGotFocus(EventArgs e);
protected override void OnHandleCreated(EventArgs e);
protected override void OnSizeChanged(EventArgs e);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

我们在其中的public IContextMenuHandler MenuHandler get; set; 接口中更改鼠标右键事件。
方法为继承该类接口,并重写。实现方式如下:

public class MenuHandler : IContextMenuHandler

public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)

model.Clear();

public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)

return false;

public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)


public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)

return false;

定义完之后在CEFSharp代码初始化中引用。如下:

public ChromiumWebBrowser browser;
public void InitBrowser()

Cef.Initialize(new CefSettings());
browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
browser.MenuHandler = new MenuHandler();
browser.Dock = DockStyle.Fill;
panel1.Controls.Add(browser);

1
2
3
4
5
6
7
8
9
之后运行,会发现已经屏蔽鼠标右键。

C#添加代码屏蔽拖动放置事件
屏蔽拖动放置事件和屏蔽鼠标右键类似。我们在其中的public IDragHandler DragHandler get; set; 接口中更改拖动放置事件。
方法为继承该类接口,并重写。实现方式如下:

public class DragHandler : IDragHandler

public bool OnDragEnter(IWebBrowser browserControl, IBrowser browser, IDragData dragData, DragOperationsMask mask)

return true;// false;//throw new NotImplementedException();

public void OnDraggableRegionsChanged(IWebBrowser browserControl, IBrowser browser, IList regions)

//throw new NotImplementedException();

return true;为禁止。定义完之后在CEFSharp代码初始化中引用。如下:

public ChromiumWebBrowser browser;
public void InitBrowser()

Cef.Initialize(new CefSettings());
browser = new ChromiumWebBrowser(“http://my.csdn.net/u013564470”);
browser.MenuHandler = new MenuHandler();
browser.DragHandler = new DragHandler();
browser.Dock = DockStyle.Fill;
panel1.Controls.Add(browser);

以上是关于ChromiumWebBrowser禁止鼠标右键和拖动的主要内容,如果未能解决你的问题,请参考以下文章

禁止保存,拖拽图片,禁用右键和F12

禁止网页的右键和复制功能

在.NET中交换鼠标左键和右键

页面禁用鼠标右键和选择

winform嵌入chromiumwebbrowser控件后怎么禁止弹出新窗口?

问题解决方案电脑使用微信等第三方工具给鼠标右键和下拉列表截图