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;
}
}
}