CefSharp ver 90.6.50.0 接口实现类
/// <summary>
/// 文件下载处理
/// </summary>
public class MyDownLoadFile : IDownloadHandler
{
public Action<DownloadItem> SaveFileCompleteAction { get; set; }
public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
{
if (!callback.IsDisposed)
{
using (callback)
{
callback.Continue(Path.Combine(AppParameter.Instance.DownLoadPath, downloadItem.SuggestedFileName),true);
}
}
}
public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
{
if (downloadItem.IsComplete)
{
AppParameter.Instance.DownLoadPath=Path.GetDirectoryName(downloadItem.FullPath);
SaveFileCompleteAction?.BeginInvoke(downloadItem, null, null);
}
downloadItem.IsCancelled = false;
}
}
/// <summary>
/// 键盘快捷键处理
/// </summary>
public class MyKeyBoardHander : IKeyboardHandler
{
public bool OnKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
{
if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
{
var key = (Keys)windowsKeyCode;
switch (key)
{
case Keys.F12:
browser.ShowDevTools();
break;
case Keys.F5:
if (modifiers == CefEventFlags.ControlDown)
browser.Reload(true); //强制刷新Ctrl+F5
else
browser.Reload();
break;
default:
break;
}
}
return false;
}
public bool OnPreKeyEvent(IWebBrowser chromiumWebBrowser, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
{
return false;
}
}
/// <summary>
/// cef菜单事件
/// </summary>
public class MyMenuHandler : 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;
}
}