123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- using System;
- using System.Windows;
- using System.Windows.Input;
- using System.Windows.Interop;
- using CefSharp;
- using CefSharp.Wpf;
- using CEFSharpWPF;
- namespace CEFSharpWpf
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class WinBrowser
- {
- private static WinBrowser instance;
- public static WinBrowser Instance
- {
- get
- {
- if (instance == null||instance.IsDisposed())
- {
- //OneTimeLoad.Init();
- SetBrowserEnvironment.SetEnvironment();
- instance = new WinBrowser();
- }
- return instance;
- }
- }
- private WinBrowser()
- {
- InitializeComponent();
- this.Closing += WinBrowser_Closing;
- browser.DownloadHandler = new DownloadHandler();
- browser.LifeSpanHandler = new OpenPageSelf();
- this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy, (s, e) =>
- {
- Clipboard.SetDataObject(URL??string.Empty, false);
- }));
- }
- private void WinBrowser_Closing(object sender, System.ComponentModel.CancelEventArgs e)
- {
- this.Visibility = Visibility.Collapsed;
- e.Cancel = true;
- }
- /// <summary>
- /// 重新加载页面
- /// </summary>
- /// <param name="url"></param>
- private void ReloadUrl(string url)
- {
- if (browser.IsBrowserInitialized)
- {
- //browser.Address = url;
- browser.Load(url);
- //资产详情第一次点不刷新,第二次点才刷新。load两次可以刷新
- browser.Load(url);
- //browser.Reload(false);
- }
- }
- /// <summary>
- /// 强制刷新
- /// </summary>
- public void Refresh()
- {
- if (browser.IsBrowserInitialized)
- {
- browser.Address = URL;
- browser.Load(URL);
- //browser.Reload(false);
- }
- }
- private int num = 0;
- private string URL = "";
- public void Show(string url, string title = "")
- {
- //url = "http://www.baidu.com";
- URL = url;
- this.Title = title;
- if (this.Visibility != Visibility.Visible)
- {
- base.Show();
- }
- this.Activate();
- ReloadUrl(url);
- }
- private void Browser_OnIsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
- {
- if (browser.IsBrowserInitialized)
- {
- browser.Load(URL);
- }
- }
- }
- /// <summary>
- /// 下载文件
- /// </summary>
- public class DownloadHandler : IDownloadHandler
- {
- public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
- {
- if (!callback.IsDisposed)
- {
- using (callback)
- {
- callback.Continue(@"C:\Users\" +
- System.Security.Principal.WindowsIdentity.GetCurrent().Name +
- @"\Downloads\" +
- downloadItem.SuggestedFileName,
- showDialog: true);
- }
- }
- }
- public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
- {
- // return false;
- }
- public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
- {
- return false;
- }
- }
- /// <summary>
- /// 在自己窗口打开链接
- /// </summary>
- internal class OpenPageSelf : ILifeSpanHandler
- {
- public bool DoClose(IWebBrowser browserControl, IBrowser browser)
- {
- return true;
- }
- public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
- {
- }
- public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
- {
- }
- public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
- string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
- IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
- {
- newBrowser = null;
- var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
- chromiumWebBrowser.Load(targetUrl);
- return true; //Return true to cancel the popup creation copyright by codebye.com.
- }
- }
- }
|