using ryCommon; using ryCommonDb; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using VSoft.Prams; using VSoft.Skins; namespace VSoft { public partial class FrmAddSoft : SKinForm { public string SQLConnStr { get; set; } = Itrycn_Db.SQLConnStr; public FrmAddSoft() { InitializeComponent(); LblCustomImg.Text = "自动获取"; CbbRunMode.SelectedIndex = 0; } public string tableName = "Softs"; private string IconPath { get; set; } = ""; public int IsAdd { get; set; } = 1; public int SelectId { get; set; } = -1; public int ColumnId { get; set; } = -1; public FrmAddSoft(string path) { InitializeComponent(); if (System.IO.Path.GetExtension(path).ToLower() == ".lnk") { var shortcut = API.ReadShortcut(path); TxtPath.Text = shortcut.TargetPath; TxtRunPram.Text = shortcut.Arguments; TxtStartPath.Text = shortcut.WorkDir; TxtDes.Text = shortcut.Description; //ShellLink cc = new ShellLink(path); //PicImg.Image = cc.LargeIcon.ToBitmap(); } else { TxtPath.Text =RyFiles.GetRelativePath(path); } TxtName.Text = System.IO.Path.GetFileNameWithoutExtension(path); } private int SoftType { get; set; } = -1; private string SoftPath { get; set; } =""; private string orgion_IconPath = ""; public void GetInfo(int id) { SelectId = id; Text = "修改软件"; DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(SQLConnStr) == 1) { DataSet ds = db.ReadData(tableName, id.ToString()); if (mydb.HaveData(ds)) { DataRow reader = ds.Tables[0].Rows[0]; #region 读取信息 TxtName.Text = reader["Name"].ToString(); TxtCmdId.Text = reader["CmdId"].ToString(); TxtDes.Text = reader["Des"].ToString(); SoftPath = reader["Path"].ToString(); SoftType = reader["SoftType"].ToInt(); if (SoftType == 1)//内置软件 { TxtPath.ReadOnly = true; TxtPath.Text = "内置启动程序"; TxtPath.ForeColor = Color.Blue; TxtPath.Font = new Font(TxtPath.Font, FontStyle.Bold); } else { TxtPath.Text = SoftPath; } TxtRunPram.Text = reader["RunPram"].ToString(); TxtStartPath.Text = reader["StartPath"].ToString(); hotkeyTextBox1.HotKey = reader["Hotkey"].ToString(); Json json = new Json(reader["SetJson"].ToString()); ChkRunAsAdmin.Checked = json.GetJsonValue("RunAsAdmin", false); CbbRunMode.SelectedIndex = json.GetJsonValue("RunMode", 0); NumRunCount.Value = json.GetJsonValue("RunCount", 1, NumRunCount.Maximum.ToInt(), 1); var _IconPath = reader["IconPath"].ToString(); orgion_IconPath = _IconPath; IconPath = _IconPath; if (_IconPath.Length==0) { _IconPath = reader["Path"].ToString(); } else { LblCustomImg.Text = "自定义"; } PicImg.Image = API.GetImg(RyFiles.GetRealPath(_IconPath)); #endregion } } db.Free(); } /// /// 当前操作的id /// public int Op_Id { get; set; } = -1; private void BtnOK_Click(object sender, EventArgs e) { if (TxtName.Text.Length == 0) { Msg.ShowMsg("名称不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (TxtCmdId.Text.Length> 0 && !TxtCmdId.Text.Replace("_","").IsEngOrNum()) { Msg.ShowMsg("命令ID只支持英文和数字字符。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (IconPath.Length>0 && IconPath.IndexOfEx("")!=0 && IconPath!=TxtPath.Text) { var _IconPath=RyFiles.AddFileToFolder(RyFiles.GetRealPath(IconPath), Config.Soft_Info.UserDataFolder + "\\SoftLogos", true, out var result); if(result) { IconPath = RyFiles.GetRelativePath(_IconPath); } } if (IconPath != orgion_IconPath) { if (orgion_IconPath.Length > 0 && orgion_IconPath.StartsWith("\\UserDb\\SoftLogos", StringComparison.OrdinalIgnoreCase)) { RyFiles.DeleteFile(RyFiles.GetRealPath(orgion_IconPath)); } } DataProvider mydb = new DataProvider(); IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); if (db.ConnDb(SQLConnStr) == 1) { if (TxtCmdId.Text.Length > 0) { var ds = db.ReadData("select * from " + tableName + " where CmdId='" + TxtCmdId.Text + "' and id<>" + SelectId + " limit 1"); if (mydb.HaveData(ds)) { Msg.ShowMsg("当前命令ID已经存在,请更换命令ID。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ds.Dispose(); return; } ds.Dispose(); } if (hotkeyTextBox1.HaveHotKey) { var ds_soft = db.ReadData("select * from " + tableName + " where Hotkey='" + hotkeyTextBox1.HotKey + "' and id<>" + SelectId + " limit 1"); var ds_type = db.ReadData("select * from Columns where Hotkey='" + hotkeyTextBox1.HotKey + "' limit 1"); if (mydb.HaveData(ds_soft) || ds_type.HaveData()) { Msg.ShowMsg("当前热键已经存在,请更换热键。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ds_soft.Dispose(); ds_type.Dispose(); return; } else { if(Config.Soft_Config.IsHotKeyExistInList(hotkeyTextBox1.HotKey)>=0) { Msg.ShowMsg("当前热键已经存在,请更换热键。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ds_soft.Dispose(); ds_type.Dispose(); return; } } ds_soft.Dispose(); ds_type.Dispose(); } RyQuickSQL mySQL = new RyQuickSQL(tableName); mySQL.AddField("Name", TxtName.Text); mySQL.AddField("CmdId", TxtCmdId.Text); if (SoftType == 0 || IsAdd>0)//不是内置软件 { mySQL.AddField("Path", TxtPath.Text); } mySQL.AddField("RunPram", TxtRunPram.Text); mySQL.AddField("StartPath", TxtStartPath.Text);//起始路径 mySQL.AddField("IconPath", IconPath);//图标路径 Json json = new Json(""); json.Add("RunAsAdmin", ChkRunAsAdmin.Checked); json.Add("RunMode", CbbRunMode.SelectedIndex); json.Add("RunCount", NumRunCount.Value.ToInt()); mySQL.AddField("SetJson", json.Text);//设置 mySQL.AddField("Des", TxtDes.Text);//备注 mySQL.AddField("Hotkey", hotkeyTextBox1.HaveHotKey?hotkeyTextBox1.HotKey:"");//快捷键 mySQL.AddField("Pinyin", ryCommon.PinYin.Convert(TxtName.Text) + "\r\n" + ryCommon.PinYin.ConvertFirstPY(TxtName.Text)); mySQL.AddField("editTime", DateTime.Now); if (IsAdd >= 1) { mySQL.AddField("SoftType", 0);//0表示运行文件,1表示执行快速命令,2表示执行脚本 mySQL.AddField("ClickCount", 0);//点击量 mySQL.AddField("ColumnId",ColumnId); mySQL.AddField("sortindex",Itrycn_Db.GetSoftCount(db, ColumnId) + 1); mySQL.AddField("addTime", DateTime.Now); var ds= db.ReadData(mySQL.GetInsertSQL()+";select last_insert_rowid();", mySQL); if (ds.HaveData()) { Op_Id = ds.GetFirstRowCellValue(); } ds.Dispose(); } else { db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + SelectId, mySQL); Op_Id = SelectId; } } db.Free(); DialogResult = DialogResult.OK; } private void TxtPath_TextChanged2(object sender, EventArgs e) { if (IconPath.Length > 0) { return; } var path =RyFiles.GetRealPath(TxtPath.Text); if(System.IO.File.Exists(path)) { PicImg.Image = API.GetImg(path,128); } else if (System.IO.Directory.Exists(path)) { PicImg.Image = API.GetImg(path,64); } else { PicImg.Image = null; } } private void BtnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } private void PicImg_Click(object sender, EventArgs e) { 选择图标ToolStripMenuItem.PerformClick(); } private void FrmAddSoft_Load(object sender, EventArgs e) { } private void BtnBrowser_Click(object sender, EventArgs e) { if (of_File.ShowDialog() == DialogResult.OK) { TxtPath.Text = of_File.FileName; } } private void 选择图标ToolStripMenuItem_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { IconPath =RyFiles.GetRelativePath(openFileDialog1.FileName); PicImg.Image = API.GetImg(openFileDialog1.FileName); LblCustomImg.Text = "自定义"; } } private void 使用应用图标ToolStripMenuItem_Click(object sender, EventArgs e) { IconPath = ""; PicImg.Image = API.GetImg(RyFiles.GetRealPath(TxtPath.Text)); LblCustomImg.Text = "自动获取"; } } }