using Lskj.MiniBlink; using Lskj.Model; using MiniBlinkPinvoke; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Web; using System.Windows.Forms; namespace Lskj.Control { public partial class FrmMiniBlink : UserControl { /// /// type=2下载验证 /// public bool IsDownVerify = false; BlinkBrowser blinkBrowser1 = null; static BlinkBrowser mb = null; public string url = string.Empty; public bool AllowDownload = true; //System.Windows.Forms.Timer queryTimer = new System.Windows.Forms.Timer(); private IntPtr taskPtr; XL.DownTaskInfo taskInfo = new XL.DownTaskInfo(); [JSFunctin] public void Console_WriteLine(string msg) { MessageBox.Show("Console_WriteLine :" + msg); } public FrmMiniBlink() { InitializeComponent(); blinkBrowser1 = new BlinkBrowser(); blinkBrowser1.GlobalObjectJs = this; mb = blinkBrowser1; blinkBrowser1.Dock = DockStyle.Fill; Neghte(url); this.Controls.Add(blinkBrowser1); blinkBrowser1.KeyDown += PreviewFrm_KeyDown; } private void PreviewFrm_KeyDown(object sender, KeyEventArgs e) { if (e.KeyValue == 113) //点击F2 把当前网站添加到剪切板 { try { if (ERPInfo.Instance.UserName.Equals("管理员")) { //弹出当前网址 string NUrl = this.url; MessageBox.Show(string.Format("Url:{0}已复制到粘贴板", NUrl)); System.Windows.Forms.Clipboard.SetText(NUrl); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } public void LoadUrl(string url) { this.url = url; blinkBrowser1.Url = url; } public void Neghte(string url) { //BlinkBrowserPInvoke.wkeSetHandle(blinkBrowser1.handle, this.Handle); //BlinkBrowserPInvoke.wkeSetHandleOffset(blinkBrowser1.handle, blinkBrowser1.Location.X-2,0); blinkBrowser1.OnUrlChange2Call += BlinkBrowser1_OnUrlChange2Call; blinkBrowser1.OnTitleChangeCall += BlinkBrowser1_OnTitleChangeCall; blinkBrowser1.DocumentReadyCallback += BlinkBrowser1_DocumentReadyCallback; blinkBrowser1.OnDownloadFile += BlinkBrowser1_OnDownloadFile; this.url = url; blinkBrowser1.Url = url; // blinkBrowser1.Focus(); } /// /// 下载文件 /// /// private void BlinkBrowser1_OnDownloadFile(string url) { //只是简单实现下载,可以模仿其他下载界面,先弹出一个窗体,让用户选择保存路径文件名什么的。 //使用前先拷贝 libs/XL 目录中文件到软件运行目录。 if (File.Exists("xldl.dll")) { var initSuccess = XL.XL_Init(); if (initSuccess) { XL.DownTaskParam p = new XL.DownTaskParam() { IsResume = 0, szTaskUrl = url, szFilename = url.Substring(url.LastIndexOf('/') + 1),//简单处理文件名,实际中还需要单独处理,这里有BUG szSavePath = AppDomain.CurrentDomain.BaseDirectory }; string SzFileName = HttpUtility.UrlDecode(p.szFilename); string[] szName = SzFileName.Split('/'); taskPtr = XL.XL_CreateTask(p); var startSuccess = XL.XL_StartTask(taskPtr); if (startSuccess) { Download(p.szTaskUrl, szName[szName.Length - 1]); } } else { MessageBox.Show("XL_Init初始化失败"); } } else { MessageBox.Show("请先将 libs/XL 目录中文件到软件运行目录。"); } } /// /// 说明:定义服务器文件地址,含文件名。客户端接收地址及文件名由客户端自行定义 /// 创建人:王一帆 /// 创建日期: /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The URL. /// Name of the file. public void Download(string URL, string FileName) { if (!AllowDownload) return; FrmSelectDownload frmSelectDownload = new FrmSelectDownload(); frmSelectDownload.URL = URL; frmSelectDownload.FileName = FileName; frmSelectDownload.Show(); //SaveFileDialog saveFileDialog = new SaveFileDialog(); //saveFileDialog.FileName = FileName; //saveFileDialog.Title = "下载模板文件到"; //saveFileDialog.RestoreDirectory = true; ////点了保存按钮进入 //if (saveFileDialog.ShowDialog() == DialogResult.OK) //{ // string localFilePath = System.IO.Path.GetFullPath(saveFileDialog.FileName);//获得文件路径,含文件名 // string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//获取文件名,不带路径 // string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("\\"));//获取文件路径,不带文件名 // FrmDownload frm = new FrmDownload(URL, FileName, localFilePath); // frm.Show(); //} } //[JSFunctin] //public static async void DOTaskWithAsync(string str) //{ // await Task.Run(() => // { // Dotaskfunction(str); // }); //} public static void Dotaskfunction(string s) { Thread.Sleep(1000 * 5); if (mb != null) { mb.Invoke(new Action( (sx) => { string _str = "ceshi" + sx; _str = System.Web.HttpUtility.UrlEncode(_str); string invokeJSStr = "asyncTest('" + _str + "')"; mb.InvokeJS(invokeJSStr); } ), s); } } private void BlinkBrowser1_DocumentReadyCallback() { } private void BlinkBrowser1_OnTitleChangeCall(string title) { Text = title; } private void BlinkBrowser1_OnUrlChange2Call(string url) { this.url = url; } } }