using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; using System.Data; using System.Text; using System.ComponentModel; using Microsoft.Win32; using Newtonsoft.Json; using System.Net; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace felixyin { public partial class MainForm : Form { public MainForm() { // FIXME 生产环境,需要修改为4404 string url = "http://localhost:4404"; int bv = GetBrowserVersion(); if (bv >= 8)// 浏览器版本不能小于8 { bool isOk = ResponseOk(url); if (isOk) { SetWebBrowserFeatures(11); InitializeComponent(); this.webBrowser1.ObjectForScripting = this; this.webBrowser1.Url = new Uri(url); } else { DialogResult result = MessageBox.Show("程序发生未知错误,请联系管理员:15965585803", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); if (result == DialogResult.OK) { System.Environment.Exit(0); } } } else { DialogResult result = MessageBox.Show("程序使用了IE组件,要求IE版本不能小于8,请先升级您的IE浏览器", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); if (result == DialogResult.OK) { System.Environment.Exit(0); } } } /// /// Get方式获取url地址输出内容 /// /// url public static bool ResponseOk(String url) { try { HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.Method = "GET"; HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); Console.WriteLine(webResponse.StatusCode); return true; } catch { return false; } } /** * 遍历文件夹,查找返回所有avi视频文件 */ public void FindFile4(List> list, string sSourcePath) { //遍历文件夹 DirectoryInfo theFolder = new DirectoryInfo(sSourcePath); FileInfo[] thefileInfo = theFolder.GetFiles("*.*", SearchOption.TopDirectoryOnly); string lmi1 = ""; string avi1 = ""; foreach (FileInfo NextFile in thefileInfo) { //遍历文件 string fullName1 = NextFile.FullName; if (fullName1.Contains(".lmi")) { lmi1 = fullName1; } if (fullName1.Contains(".avi")) { avi1 = fullName1; } } if (lmi1 != "" && avi1 != "") { Dictionary map = new Dictionary(); map.Add("avi_path", avi1); map.Add("lmi_path", lmi1); list.Add(map); } //遍历子文件夹 DirectoryInfo[] dirInfo = theFolder.GetDirectories(); foreach (DirectoryInfo NextFolder in dirInfo) { FindFile4(list, NextFolder.FullName); } } /** * 将从视频文件中获取的视频信息转化为json */ public string selectFolder() { List x = new List(); if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK) { if (this.folderBrowserDialog1.SelectedPath.Trim() != "") { string folder = this.folderBrowserDialog1.SelectedPath.Trim(); List> list = new List>(); this.FindFile4(list, folder); string jsonData = JsonConvert.SerializeObject(list);//序列化 Console.WriteLine(jsonData); return jsonData; } } return ""; } public string selectXlsx() { if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { if (this.openFileDialog1.FileName.Trim() != "") { string folder = this.openFileDialog1.FileName.Trim(); return folder; } } return ""; } public string selectOtherVideo() { if (this.openFileDialog2.ShowDialog() == DialogResult.OK) { if (this.openFileDialog2.FileName.Trim() != "") { string folder = this.openFileDialog2.FileName.Trim(); return folder; } } return ""; } /// /// DataSet转换成Json格式 /// /// DataSet /// public static string DatasetToJson(DataSet ds, int total = -1) { StringBuilder json = new StringBuilder(); foreach (DataTable dt in ds.Tables) { //{"total":5,"rows":[ json.Append("{\"total\":"); if (total == -1) { json.Append(dt.Rows.Count); } else { json.Append(total); } json.Append(",\"rows\":["); json.Append(DataTableToJson(dt)); json.Append("]}"); } return json.ToString(); } /// /// dataTable转换成Json格式 /// /// /// public static string DataTableToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append("\","); } if (dt.Columns.Count > 0) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } jsonBuilder.Append("},"); } if (dt.Rows.Count > 0) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } return jsonBuilder.ToString(); } /// /// 修改注册表信息来兼容当前程序 /// /// static void SetWebBrowserFeatures(int ieVersion) { // don't change the registry if running in-proc inside Visual Studio if (LicenseManager.UsageMode != LicenseUsageMode.Runtime) return; //获取程序及名称 var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); //得到浏览器的模式的值 UInt32 ieMode = GeoEmulationModee(ieVersion); var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\"; //设置浏览器对应用程序(appName)以什么模式(ieMode)运行 Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION", appName, ieMode, RegistryValueKind.DWord); // enable the features which are "On" for the full Internet Explorer browser //不晓得设置有什么用 Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_AJAX_CONNECTIONEVENTS", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_GPU_RENDERING", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_WEBOC_DOCUMENT_ZOOM", // appName, 1, RegistryValueKind.DWord); //Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE", // appName, 0, RegistryValueKind.DWord); } /// /// 获取浏览器的版本 /// /// static int GetBrowserVersion() { int browserVersion = 0; using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer", RegistryKeyPermissionCheck.ReadSubTree, System.Security.AccessControl.RegistryRights.QueryValues)) { var version = ieKey.GetValue("svcVersion"); if (null == version) { version = ieKey.GetValue("Version"); if (null == version) throw new ApplicationException("Microsoft Internet Explorer is required!"); } int.TryParse(version.ToString().Split('.')[0], out browserVersion); } //如果小于7 if (browserVersion < 7) { throw new ApplicationException("不支持的浏览器版本!"); } return browserVersion; } /// /// 通过版本得到浏览器模式的值 /// /// /// static UInt32 GeoEmulationModee(int browserVersion) { UInt32 mode = 11000; // Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode. switch (browserVersion) { case 7: mode = 7000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. break; case 8: mode = 8000; // Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. break; case 9: mode = 9000; // Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. break; case 10: mode = 10000; // Internet Explorer 10. break; case 11: mode = 11000; // Internet Explorer 11 break; } return mode; } private void Form1_FormClosing_1(object sender, FormClosingEventArgs e) { this.webBrowser1.Document.InvokeScript("beforeClose"); DialogResult result = MessageBox.Show("您确定要关闭吗!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { e.Cancel = false; //点击OK } else { e.Cancel = true; } } } }