From 8f863e2d2c3bcf522b12ced0d49ebaa31514bdbf Mon Sep 17 00:00:00 2001 From: tdx Date: Wed, 20 May 2026 03:28:34 +0000 Subject: [PATCH] SVN r1179 SVN-Revision: r1179 --- .../Lskj.CallWebLibrary.csproj | 112 ++++ 插件库/Lskj.CallWebLibrary/Program.cs | 570 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 9 + .../Properties/Resources.Designer.cs | 40 ++ .../Properties/Resources.resx | 117 ++++ .../Properties/Settings.Designer.cs | 1 + .../Properties/Settings.settings | 7 + 插件库/Lskj.CallWebLibrary/a.ico | Bin 0 -> 67646 bytes 8 files changed, 856 insertions(+) create mode 100644 插件库/Lskj.CallWebLibrary/Lskj.CallWebLibrary.csproj create mode 100644 插件库/Lskj.CallWebLibrary/Program.cs create mode 100644 插件库/Lskj.CallWebLibrary/Properties/AssemblyInfo.cs create mode 100644 插件库/Lskj.CallWebLibrary/Properties/Resources.Designer.cs create mode 100644 插件库/Lskj.CallWebLibrary/Properties/Resources.resx create mode 100644 插件库/Lskj.CallWebLibrary/Properties/Settings.Designer.cs create mode 100644 插件库/Lskj.CallWebLibrary/Properties/Settings.settings create mode 100644 插件库/Lskj.CallWebLibrary/a.ico diff --git a/插件库/Lskj.CallWebLibrary/Lskj.CallWebLibrary.csproj b/插件库/Lskj.CallWebLibrary/Lskj.CallWebLibrary.csproj new file mode 100644 index 0000000..1e831a5 --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Lskj.CallWebLibrary.csproj @@ -0,0 +1,112 @@ + + + + + Debug + AnyCPU + {865E8766-011C-404E-8C30-BB820F7A49DC} + WinExe + Lskj.CallWebLibrary + Lskj.CallWebLibrary + v4.0 + 512 + true + + + x86 + true + full + false + ..\..\Debug\ + DEBUG;TRACE + prompt + 3 + ..\..\Debug\Lskj.CallWebLibrary.xml + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + a.ico + + + + + ..\..\Debug\Lib\Lskj.Web.Core.dll + + + False + ..\..\引用DLL\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {7EAFCCC2-A18F-49E9-85C6-A984966CFD01} + Lskj.Business + + + {447CDC40-659F-4CCA-9ED6-8E818B4CF8BF} + Lskj.Control + + + {2A1BE6AC-1077-491B-A754-C5822FE8121E} + Lskj.Core + + + {308B9B18-9BE2-495C-9C64-EED81D567813} + Lskj.Data + + + {52BC40E0-C0C6-4F78-996B-CAE028D209CA} + Lskj.Model + + + {A51BF642-6543-4DE3-8948-83F558B72BD4} + Lskj.Util + + + + + + + \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Program.cs b/插件库/Lskj.CallWebLibrary/Program.cs new file mode 100644 index 0000000..1c4679d --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Program.cs @@ -0,0 +1,570 @@ +using Lskj.Business; +using Lskj.Business.Impl; +using Lskj.Control; +using Lskj.Core; +using Lskj.Data; +using Lskj.Model; +using Lskj.Util; +using Lskj.Web.Core.Util; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Text.RegularExpressions; +using System.Web; +using System.Web.Script.Serialization; +using System.Windows.Forms; + +namespace Lskj.CallWebLibrary +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + args = new string[] { "lserp://open?apiBaseUrl=http://192.168.1.13:8901&dllcoid=1001&xtype=form&serverid=1&menuid=768&token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0b29scy1qYXZhLWFwaSIsInN1YiI6IjEwMTc4IiwianRpIjoiMTVjNjA5OTYtNTljMy00NDBjLTgzZTktZDc4Nzk1ZTdjN2FlIiwiaWF0IjoxNzc5MjQ3NDY2LCJleHAiOjE3NzkyNzYyNjYsImxvZ2luU3RhZ2UiOiJjb21wYW55IiwiY29tcGFueUtleSI6ImNvbXBhbnlfNTYzMTNlZmMzZDZjMzgxYjBiY2U3ZjVmOWNjYTk0MzkiLCJkYXRhc291cmNlQ29kZSI6ImNvbXBhbnlfNTYzMTNlZmMzZDZjMzgxYjBiY2U3ZjVmOWNjYTk0MzkiLCJjb21wYW55VGl0bGUiOiIyMDE55bm05biQ5aWXIiwiZW1wbG95ZWVJZCI6MjQ5LCJlbXBsb3llZU5hbWUiOiLllJDlvrfppqgiLCJkZXBhcnRtZW50SWQiOiIyIiwidG9rZW5WZXJzaW9uIjoxfQ.CECyKiP2-KgW1ZOOImtSvJK2TFtHnDH2EmQlwEM5QwY" }; + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + try + { + if (args != null && args.Length > 0 && ProtocolLaunchHandler.IsLserpProtocol(args[0])) + { + ProtocolLaunchRequest request = ProtocolLaunchHandler.Parse(args[0]); + AppBootstrap.Init(request); + + DBConfig.Instance.ServerName = AppRuntime.DbContext.IP; + DBConfig.Instance.DataBase = AppRuntime.DbContext.DBname; + + if (!DBConfig.Instance.CreateConnection()) + { + MessageUtil.Show(ResourceKeys.UnConnectServer); + return; + } + if (DelphiHelper.Delphi_Init(new StringBuilder(DBConfig.Instance.GetDelphiConnection(DBConfig.Instance.dephiConnection))) == 0) + { + MessageUtil.Show(ResourceKeys.UnConnectServer + "[By Delphi]"); + return; + } + DataRow userRow = BaseImpl.GetDataRowResult($"select * from p_employeetab where employeeid = '{AppRuntime.UserContext.EmployeeId}'"); + + SystemInfo.Instance.MainMenuType = 4; + ERPInfo.Instance.SeriesId = SystemInfo.Instance.seriesid; + ERPInfo.Instance.UserLinkPhone = MainImpl.GetUserPhone(AppRuntime.UserContext.EmployeeId); + ERPInfo.Instance.UserId = AppRuntime.UserContext.EmployeeId; + ERPInfo.Instance.UserName = AppRuntime.UserContext.EmployeeName; + ERPInfo.Instance.Password = userRow["Password"] + ""; + ERPInfo.Instance.AccountBook = AppRuntime.DbContext.ShowName; + ERPInfo.Instance.LoginAccount = userRow["LoginAccount"] + ""; + ERPInfo.Instance.PrimitiveBrowser = SystemInfo.Instance.PrimitiveBrowser; + DBConfig.Instance.LoginName = AppRuntime.UserContext.EmployeeName; + DBConfig.Instance.NoticeUserID = AppRuntime.UserContext.EmployeeId; + DBConfig.Instance.NoticeUserName = AppRuntime.UserContext.EmployeeName; + DBConfig.Instance.DataBook = AppRuntime.DbContext.ShowName; + + DataTable dataTable = MainImpl.GetMenusByMenuType(out _, request.MenuId); + + if (dataTable != null && dataTable.Rows.Count > 0) + { + DataRow item = dataTable.AsEnumerable().Where(n => (n["MenuId"] + "").Equals(request.MenuId)).FirstOrDefault(); + if (item != null) + { + string[] arr = new string[] { item["DllFileName"] + "", item["PurviewId"] + "", item["MenuId"] + "", item["UrlParams"] + "", item["SubSysId"] + "", item["menucaption"] + "" }; + FormRouter.OpenModule(arr[2], arr[5], arr[0], arr[1], arr[3]); + } + else + { + MessageUtil.Show("未查询到有权限的菜单数据"); + } + return; + } + else + { + MessageUtil.Show("未查询到菜单数据"); + return; + } + } + } + catch (Exception ex) + { + MessageUtil.Show(ex.Message); + } + } + /// + /// 默认下载地址 + /// + private static string filePath = string.Empty; + /// + /// 返回地址值 + /// + private static string outText = string.Empty; + private static bool ConnectServer(string _ip, string _port) + { + bool isSuccess = false; + string serverName = DBConfig.Instance.ServerName; + // 测试数据库连接 + try + { + string ip = _ip; + string defaultPort = ":" + _port; + //服务器下载 + string newServerName = !serverName.StartsWith("http") ? "http://" + ip + defaultPort : ip + defaultPort; + newServerName = !newServerName.EndsWith("/") ? newServerName + "/" : newServerName; + string newfilePath = Path.Combine(newServerName, "SystemResources.txt"); + //string name = WebRequest.Create(filePath).GetResponse().GetResponseStream().ToString(); + string fileName = "SystemResources.txt";//客户端保存的文件名 + WebClient webClient = new WebClient(); + webClient.Encoding = Encoding.UTF8; + //这里使用DownloadString方法,如果是不需要对文件的文本内容做处理,直接保存,那么可以直接使用功能DownloadFile(url,savepath)直接进行文件保存。 + string newoutText = newfilePath != filePath ? webClient.DownloadString(newfilePath) : outText; + outText = newoutText.Trim(); + filePath = newfilePath; + //File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SystemResources.txt"), outText); + string args = AESUtil.Decrypt(outText); + string[] controlAfgs = args.Split('^'); + if (controlAfgs != null && controlAfgs.Length == 5) + { + DBConfig.Instance.ServerName = controlAfgs[0]; + DBConfig.Instance.DataBase = controlAfgs[1]; + string Connection = "Server={0};Database={1};Persist Security Info=True;User ID=" + controlAfgs[2] + ";Password=" + controlAfgs[3] + ";Connection Timeout=5;MultipleActiveResultSets=true"; + string dephistr = "Provider=SQLOLEDB.1;Server={0};Database={1};Persist Security Info=True;User ID=" + controlAfgs[2] + ";Password=" + controlAfgs[3] + ";Connection Timeout=5"; + Connection = AESUtil.Encrypt(Connection); + dephistr = AESUtil.Encrypt(dephistr); + DBConfig.Instance.dephiConnection = dephistr; + DBConfig.Instance.Connection = Connection; + if (DBConfig.Instance.CreateConnection(Connection)) + { + Dictionary sourceDic = IniHelper.GetSectionKeys("SystemResources.ini", "SystemResources"); + string dicKey = string.Format("DownloadAESStr_{0}{1}", ip, defaultPort); + if (sourceDic.ContainsKey(dicKey)) + { + string key = sourceDic[dicKey]; + string[] keyArgs = dicKey.Split('_'); + if (keyArgs.Length == 2) + { + string ztName = sourceDic[dicKey].Split('^')[0];//账套名 + if (!string.IsNullOrEmpty(ztName)) + { + string IPPort = string.Format("{0}:{1}", _ip, _port); + string writeText = string.Format("{0}^{1}", ztName, outText); + IniHelper.Write("SystemResources.ini", string.Format("DownloadAESStr_{0}", IPPort), writeText); + isSuccess = true; + } + } + } + } + } + //IniHelper.Write("SystemResources.ini", "FrmConfigFlag", "1"); + } + catch (Exception) + { + } + return isSuccess; + } + } + + public class ProtocolLaunchRequest + { + public string RawUrl { get; set; } + public string Action { get; set; } + public string ApiBaseUrl { get; set; } + public string Token { get; set; } + public string DllCoId { get; set; } + public string XType { get; set; } + public string ServerId { get; set; } + public string MenuId { get; set; } + } + + public static class ProtocolLaunchHandler + { + public static bool IsLserpProtocol(string value) + { + return !string.IsNullOrWhiteSpace(value) + && value.StartsWith("lserp://", StringComparison.OrdinalIgnoreCase); + } + + public static ProtocolLaunchRequest Parse(string url) + { + Uri uri = new Uri(url); + var query = HttpUtility.ParseQueryString(uri.Query); + + ProtocolLaunchRequest request = new ProtocolLaunchRequest(); + request.RawUrl = url; + request.Action = uri.Host; + request.ApiBaseUrl = query["apiBaseUrl"]; + request.Token = query["token"]; + request.DllCoId = query["dllcoid"]; + request.XType = query["xtype"]; + request.ServerId = query["serverid"]; + request.MenuId = query["menuid"]; + + return request; + } + } + + public static class AppBootstrap + { + public static void Init(ProtocolLaunchRequest request) + { + // .NET 4.0 没有 Tls12 枚举,3072 是 TLS 1.2 + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; + + if (request == null) + { + return; + } + + if (!string.Equals(request.Action, "open", StringComparison.OrdinalIgnoreCase)) + { + throw new Exception("不支持的协议动作:" + request.Action); + } + + if (string.IsNullOrWhiteSpace(request.ApiBaseUrl)) + { + throw new Exception("缺少后端地址 apiBaseUrl。"); + } + + if (string.IsNullOrWhiteSpace(request.Token)) + { + throw new Exception("缺少accessToken。"); + } + + string apiBaseUrl = request.ApiBaseUrl.TrimEnd('/'); + + AppRuntime.UserContext = JavaAuthClient.GetCurrentUser(apiBaseUrl, request.Token); + AppRuntime.DbContext = JavaAuthClient.GetBusinessDbs(apiBaseUrl, request.Token, request.ServerId); + AppRuntime.JavaApiBaseUrl = apiBaseUrl; + AppRuntime.AccessToken = request.Token; + } + } + + public static class JavaAuthClient + { + public static CurrentUserContext GetCurrentUser(string apiBaseUrl, string accessToken) + { + string url = apiBaseUrl.TrimEnd('/') + "/api/auth/me"; + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Method = "GET"; + request.Timeout = 10000; + request.Accept = "application/json"; + request.Headers["Authorization"] = "Bearer " + accessToken; + + string body; + + try + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + body = reader.ReadToEnd(); + } + } + catch (WebException ex) + { + string errorBody = ""; + if (ex.Response != null) + { + using (Stream stream = ex.Response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + errorBody = reader.ReadToEnd(); + } + } + + throw new Exception("登录状态校验失败:" + errorBody); + } + JObject bodyJObject = (JObject)JsonConvert.DeserializeObject(body); + if (bodyJObject.ContainsKey("data") && bodyJObject["data"] is JObject dataJObject && dataJObject.ContainsKey("data") && dataJObject["data"] is JObject userJObject) + { + CurrentUserContext user = new CurrentUserContext(); + user.LoginStage = userJObject["loginStage"] + ""; + user.TenantCode = userJObject["tenantCode"] + ""; + user.TenantName = userJObject["tenantName"] + ""; + user.CompanyKey = userJObject["companyKey"] + ""; + user.CompanyTitle = userJObject["companyTitle"] + ""; + user.DatasourceCode = userJObject["datasourceCode"] + ""; + user.EmployeeId = userJObject["employeeId"] + ""; + user.Username = userJObject["username"] + ""; + user.EmployeeName = userJObject["employeeName"] + ""; + user.DepartmentId = userJObject["departmentId"] + ""; + user.IsAdmin = userJObject["isAdmin"] + ""; + return user; + } + else + { + throw new Exception("验证返回格式不正确。"); + } + } + public static BusinessDbContext GetBusinessDbs(string apiBaseUrl, string accessToken, string serverId) + { + string url = apiBaseUrl.TrimEnd('/') + "/api/auth/business-dbs/" + Uri.EscapeDataString(serverId); + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Method = "GET"; + request.Timeout = 10000; + request.Accept = "application/json"; + request.Headers["Authorization"] = "Bearer " + accessToken; + + string body; + + try + { + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + body = reader.ReadToEnd(); + } + } + catch (WebException ex) + { + string errorBody = ""; + if (ex.Response != null) + { + using (Stream stream = ex.Response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + errorBody = reader.ReadToEnd(); + } + } + + throw new Exception("获取账套信息失败:" + errorBody); + } + + JObject bodyJObject = (JObject)JsonConvert.DeserializeObject(body); + + if ((int)bodyJObject["code"] != 0) + { + throw new Exception("获取账套信息失败:" + body); + } + + JObject resultObject = (JObject)bodyJObject["data"]; + if (resultObject == null || (int)resultObject["code"] != 0) + { + throw new Exception("获取账套信息失败:" + body); + } + + JObject dbJObject = (JObject)resultObject["data"]; + if (dbJObject == null) + { + throw new Exception("账套信息返回格式不正确:" + body); + } + + BusinessDbContext db = new BusinessDbContext(); + db.Id = dbJObject["dbGroupId"] + ""; + db.DBname = dbJObject["basename"] + ""; + db.IP = dbJObject["serverip"] + ""; + db.ShowName = dbJObject["title"] + ""; + + return db; + } + } + public class BusinessDbContext + { + public string Id { get; set; } + public string DBname { get; set; } + public string IP { get; set; } + public string ShowName { get; set; } + } + + public class CurrentUserContext + { + public string LoginStage { get; set; } + public string TenantCode { get; set; } + public string TenantName { get; set; } + public string CompanyKey { get; set; } + public string CompanyTitle { get; set; } + public string DatasourceCode { get; set; } + public string EmployeeId { get; set; } + public string Username { get; set; } + public string EmployeeName { get; set; } + public string DepartmentId { get; set; } + public string IsAdmin { get; set; } + } + + public static class AppRuntime + { + public static string JavaApiBaseUrl { get; set; } + public static string AccessToken { get; set; } + public static CurrentUserContext UserContext { get; set; } + public static BusinessDbContext DbContext { get; set; } + } + + public static class FormRouter + { + /// + /// 说明:打开模块 + /// 创建人:龚宇超 + /// 创建日期:2017-08-18 + /// 修改人: + /// 修改日期: + /// 修改备注: + /// 版本:1.0 + /// + /// The menu identifier. + /// Name of the menu. + /// The model flag. + /// The URL parameters. + public static void OpenModule(string menuId, string menuName, string dllName, string modelFlag, string urlParams) + { + try + { + // 验证参数 + if (string.IsNullOrWhiteSpace(menuId) || string.IsNullOrWhiteSpace(dllName)) + { + MessageUtil.Show(ResourceKeys.NotFoundMenu); + return; + } + // 验证权限 + int purview = MainImpl.GetUserPurviewsByMenuId(menuId); + if (purview == 0) + { + MessageUtil.Show(ResourceKeys.UnPurview); + return; + } + //验证是否设置不能打开多个相同模块 + bool SingleOpenMode = MainImpl.GetOpenRestrictions(menuId); + + + LogUtil.WriteDebug(modelFlag.ToString(), "操作模块", menuName, menuName, menuId.ToString()); + DllModule module = new DllModule + { + DllName = ReplaceDllFileName(dllName), + Id = menuId, + Name = menuName, + Code = modelFlag.ToString() + }; + string[] args = new string[]{ + menuName, + ERPInfo.Instance.UserId, + ERPInfo.Instance.UserName, + purview + "", + urlParams, + menuId + }; + dllName = MainImpl.GetDefaultValue(dllName); + if (dllName.ToLower().Contains(".exe")) + { + string[] dllNameSplit = Regex.Split(dllName, ":args="); + string[] pmsSplit = dllNameSplit.Length > 1 ? (dllNameSplit[1] + "").Split(',') : null; + Process.Start(File.Exists(dllNameSplit[0]) ? dllNameSplit[0] : PubUtil.AbsolutelyLibPath + dllNameSplit[0], string.Join(",", args)); + } + else if (dllName.ToLower().IndexOf("http:", StringComparison.OrdinalIgnoreCase) != -1 || + dllName.ToLower().IndexOf("www.", StringComparison.OrdinalIgnoreCase) != -1 || + dllName.ToLower().IndexOf("ftp:", StringComparison.OrdinalIgnoreCase) != -1) + { + Process.Start(ToEnUrl(dllName)); + } + else + { + if (dllName.ToLower().EndsWith(".lsp")) + { + //MessageBox.Show(PubUtil.AbsolutelyLibPath + dllName+" "+ menuName+" "+purview+" "+urlParams); + // 打开delphi程序 + DelphiHelper.LoadDelphiDll(PubUtil.AbsolutelyLibPath + dllName, "", menuName, "", "", purview, urlParams); + } + else + { + // 打开module程序 + AddModuleToTab(module, args); + } + } + } + catch (Exception ex) + { + string Message = ErrorMessage.PromptErrorMessage(ex); + MessageUtil.Show(Message, ex.Message); + } + } + /// + /// 说明:添加模块到tab中 + /// 创建人:龚宇超 + /// 创建日期:2017-08-16 + /// 修改人: + /// 修改日期: + /// 修改备注: + /// 版本:1.0 + /// + /// The tab main. + /// The module. + /// The arguments. + public static void AddModuleToTab(DllModule module, string[] args) + { + try + { + string guid = Guid.NewGuid().ToString(); + IForm iform = FormHelper.LoadDllForm(module.DllName, args); + iform.SubForm.WindowState = FormWindowState.Normal; + Form form = iform.SubForm; // 表示组成应用程序的用户界面的窗口或对话框。 + form.Tag = guid; + form.AutoSize = true; + form.ShowDialog(); + } + catch (Exception ex) + { + string Message = ErrorMessage.PromptErrorMessage(ex); + MessageUtil.Show(ex.InnerException != null ? ex.InnerException.Message : ex.Message); + LogHelper.Instance.WriteError(ex); + } + } + /// + /// url加密 + /// + /// + /// + public static string ToEnUrl(string url) + { + string[] urlParams = url.Split('?'); + string enKey = "encrypt", enVal = ""; + bool hasEn = false; + if (urlParams.Length > 1) + { + string[] queryParams = string.Join("?", urlParams.Skip(1)).Split('&'); + List qpLS = new List(); + Hashtable pms = new Hashtable(); + hasEn = queryParams.Any(str => str.Trim().StartsWith(enKey, StringComparison.OrdinalIgnoreCase)); + foreach (string q in queryParams) + { + string[] eqParams = q.Split('='); + if (eqParams.Length > 1) + { + if (hasEn && eqParams[0].ToLower() == enKey) + { + enVal = string.Join("=", eqParams.Skip(1)); + continue; + } + if (hasEn || eqParams[0].ToLower() == "username" || eqParams[0].ToLower() == "password") + { + pms.Add(eqParams[0], string.Join("=", eqParams.Skip(1))); + } + else + { + qpLS.Add(string.Format("{0}={1}", eqParams[0], HttpUtility.UrlEncode(HttpUtility.UrlDecode(string.Join("=", eqParams.Skip(1)))).Replace("%5c", "/").Replace("%2f", "/").Replace("//", "/"))); + } + } + else + { + } + } + if (pms.Count > 0) + { + DateTime dateTime = DateTime.Now.AddDays(1); + DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + long timestamp = (dateTime.Ticks - epoch.Ticks) / TimeSpan.TicksPerSecond; + pms.Add("exp", timestamp); + } + return $"{urlParams[0]}?pms={HttpUtili \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Properties/AssemblyInfo.cs b/插件库/Lskj.CallWebLibrary/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a4ff712 --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Properties/AssemblyInfo.cs @@ -0,0 +1,9 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Lskj.CallWebLibrary")] +[assembly: AssemblyDesc \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Properties/Resources.Designer.cs b/插件库/Lskj.CallWebLibrary/Properties/Resources.Designer.cs new file mode 100644 index 0000000..7117459 --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Properties/Resources.Designer.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + + +namespace Lskj.CallWebLibrary.Properties +{ + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManage \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Properties/Resources.resx b/插件库/Lskj.CallWebLibrary/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Properties/Settings.Designer.cs b/插件库/Lskj.CallWebLibrary/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c6e785b --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Properties/Settings.Designer.cs @@ -0,0 +1 @@ +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/插件库/Lskj.CallWebLibrary/Properties/Settings.settings b/插件库/Lskj.CallWebLibrary/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/插件库/Lskj.CallWebLibrary/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/插件库/Lskj.CallWebLibrary/a.ico b/插件库/Lskj.CallWebLibrary/a.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ffcc3cb848f316f4fd601bf18cc1c03fceb3125 GIT binary patch literal 67646 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