SVN r1190
SVN-Revision: r1190
This commit is contained in:
@@ -6,4 +6,71 @@ using Xilium.CefGlue;
|
||||
|
||||
namespace Lskj.Control.BrowserSetting
|
||||
{
|
||||
public class BsRequestHandle
|
||||
public class BsRequestHandler : CefRequestHandler
|
||||
{
|
||||
private readonly CefResourceRequestHandler externalProtocolResourceRequestHandler = new BsExternalProtocolResourceRequestHandler();
|
||||
|
||||
protected override CefResourceRequestHandler GetResourceRequestHandler(CefBrowser browser, CefFrame frame, CefRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
|
||||
{
|
||||
if (BsExternalProtocolHandler.IsPrintProtocol(request.Url))
|
||||
return externalProtocolResourceRequestHandler;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override bool OnBeforeBrowse(CefBrowser browser, CefFrame frame, CefRequest request, bool userGesture, bool isRedirect)
|
||||
{
|
||||
string url = request.Url;
|
||||
|
||||
if (BsExternalProtocolHandler.IsPrintProtocol(url))
|
||||
{
|
||||
if (frame == null || frame.IsMain)
|
||||
{
|
||||
BsExternalProtocolHandler.TryHandle(url);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.OnBeforeBrowse(browser, frame, request, userGesture, isRedirect);
|
||||
}
|
||||
|
||||
protected override bool OnOpenUrlFromTab(CefBrowser browser, CefFrame frame, string targetUrl, CefWindowOpenDisposition targetDisposition, bool userGesture)
|
||||
{
|
||||
if (BsExternalProtocolHandler.TryHandle(targetUrl))
|
||||
return true;
|
||||
|
||||
return base.OnOpenUrlFromTab(browser, frame, targetUrl, targetDisposition, userGesture);
|
||||
}
|
||||
|
||||
protected override void OnRenderProcessTerminated(CefBrowser browser, CefTerminationStatus status)
|
||||
{
|
||||
browser.Reload();
|
||||
}
|
||||
}
|
||||
|
||||
internal static class BsExternalProtocolHandler
|
||||
{
|
||||
private const string PrintProtocol = "lskjprint:";
|
||||
|
||||
public static bool IsPrintProtocol(string url)
|
||||
{
|
||||
return !string.IsNullOrEmpty(url) && url.StartsWith(PrintProtocol, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public static bool TryHandle(string url)
|
||||
{
|
||||
if (!IsPrintProtocol(url))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
var processStartInfo = new System.Diagnostics.ProcessStartInfo(url)
|
||||
{
|
||||
UseShellExecute = true
|
||||
};
|
||||
System.Diagnostics.Process.Start(processStartInfo);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user