Compare commits

...

2 Commits
dev ... master

Author SHA1 Message Date
c773aa54bc ## 📅2025-09-11 星期四更新
### DyLine    V2.0.2509.1101
- *.[改进]消息发送机制采用Unicode。
### VSoft    V2.0.2509.1101
- *.[新增]支持对启动软件设置是否开机启动。
- *.[改进]防止快速点击分类时激活拖放功能。
- *.[改进]主窗体软件版本号改为默认从VSoft.dll获取。
- *.[改进]针对调用流程软件的功能,直接通过主程序实现,提升打开速度。
- *.[修复]修复添加内置功能后不能直接打开,需要二次启动后才能打开的BUG。
- *.[修复]修复拖放文件到列表,图标可能无法正常显示的BUG。
- *.[修复]修复从桌面拖放到列表,图标无法马上显示的BUG。
- *.[修复]修改软件后缓存图标不会更新的BUG。
2025-09-11 10:19:51 +08:00
df540b741e ### 2024-12-17更新
------
#### VSoft    V2.0.2412.1701
- *.[改进]热键显示窗体时,如果窗体部分界面不在屏幕内,则自动居中显示。
- *.[修复]修复编辑了启动项图标后,重新点进该分组,图标会恢复默认的BUG。
2024-12-17 15:36:20 +08:00
42 changed files with 2056 additions and 43988 deletions

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,431 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MyDb_SQLite</name>
</assembly>
<members>
<member name="T:ryCommonDb.ClsDb">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.ClsDb.#ctor">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.ClsDb.Finalize">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.ClsDb.#ctor(System.String,System.String)">
<summary>
</summary>
<param name="DbFilePath">数据库路径</param>
<param name="PassWord">数据库密码</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.#ctor(System.String)">
<summary>
</summary>
<param name="DbFilePath">数据库路径</param>
<returns></returns>
</member>
<member name="F:ryCommonDb.ClsDb.SQLite_cn">
<summary>
</summary>
</member>
<member name="F:ryCommonDb.ClsDb.DbPath">
<summary>
</summary>
</member>
<member name="F:ryCommonDb.ClsDb.DbPassWord">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.ClsDb.ConnDb">
<summary>
连接数据库
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.SetPathPwd(System.String,System.String)">
<summary>
设置路径和密码
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.ConnDb(System.String,System.String)">
<summary>
连接数据库
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.ChangePwd(System.String)">
<summary>
</summary>
<param name="newPwd"></param>
</member>
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb">
<summary>
连接或创建数据库,如果数据库不存在,就创建,否则连接
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb(System.String,System.String)">
<summary>
连接或创建数据库,如果数据库不存在,就创建,否则连接
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.CloseDb">
<summary>
关闭数据库
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String,System.Data.SQLite.SQLiteParameter[])">
<summary>
运行SQL命令
</summary>
<param name="SQLText">SQL语句</param>
<param name="commandParameters">SQL命令参数</param>
<returns>运行失败,则返回-1否则返回影响的行数</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String)">
<summary>
运行SQL命令
</summary>
<param name="SQLText">SQL语句</param>
<returns>运行失败,则返回-1否则返回影响的行数</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[])">
<summary>
运行SQL命令,并返回结果
</summary>
<param name="SQLText">SQL语句</param>
<param name="commandParameters">SQL命令参数</param>
<returns>运行失败则返回null否则返回以数组显示的字符串</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[],System.String)">
<summary>
运行SQL命令,并返回结果
</summary>
<param name="SQLText">SQL语句</param>
<param name="commandParameters">SQL命令参数</param>
<param name="DefFristValue">数组第一个默认的值</param>
<returns>运行失败则返回null否则返回以数组显示的字符串</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String)">
<summary>
运行SQL命令,并返回结果
</summary>
<param name="SQLText">SQL语句</param>
<returns>运行失败则返回null否则返回以数组显示的字符串</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.String)">
<summary>
运行SQL命令,并返回结果
</summary>
<param name="SQLText">SQL语句</param>
<param name="DefFristValue">数组第一个默认的值</param>
<returns>运行失败则返回DefFristValue否则返回以数组显示的字符串</returns>
</member>
<member name="M:ryCommonDb.ClsDb.DeleteTable(System.String)">
<summary>
清空指定表的所有数据
</summary>
<param name="TableName">表名</param>
<returns>运行失败,则返回-1否则返回影响的行数</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ClearTableData(System.String)">
<summary>
清空指定表的所有数据
</summary>
<param name="TableName">表名</param>
<returns>运行失败,则返回-1否则返回影响的行数</returns>
</member>
<member name="M:ryCommonDb.ClsDb.IsExistValue(System.String,System.String,System.String,System.Int32)">
<summary>
判断指定值是否存在
</summary>
<param name="TableName">表名</param>
<param name="valueField">指定值所属字段</param>
<param name="value">指定值</param>
<param name="curId">当前id如果是新增记录请填写-1</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String,System.Data.SQLite.SQLiteParameter[])">
<summary>
判断SQL语句是否有结果返回
</summary>
<param name="SQLText">SQL语句</param>
<param name="commandParameters">SQL命令参数</param>
<returns>运行失败,则返回-1存在结果返回1不存在结果返回0</returns>
</member>
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String)">
<summary>
判断SQL语句是否有结果返回
</summary>
<param name="SQLText">SQL语句</param>
<returns>运行失败,则返回-1存在结果返回1不存在结果返回0</returns>
</member>
<member name="M:ryCommonDb.ClsDb.CreateDb(System.String)">
<summary>
创建数据库
</summary>
<param name="SQLText">SQL语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.CreateDbByExample">
<summary>
根据内置例子创建数据库
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.SetSysNameValue(System.String,System.String,System.String)">
<summary>
保存信息如果Name不存在系统会自动创建
</summary>
<returns>返回1表示成功0表示失败</returns>
</member>
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String,System.String)">
<summary>
获取信息
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String)">
<summary>
获取信息
</summary>
<returns></returns>
</member>
<member name="T:ryCommonDb.SQLiteDataProvider">
<summary>
</summary>
</member>
<member name="F:ryCommonDb.SQLiteDataProvider.myDb">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ConnDb(System.String)">
<summary>
</summary>
<param name="sql"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.CloseDb">
<summary>
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetCount(System.String,System.String)">
<summary>
</summary>
<param name="tableName"></param>
<param name="wheresql"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ChangePwd(System.String)">
<summary>
</summary>
<param name="newPwd"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.AddParameter(System.String,System.Object)">
<summary>
</summary>
<param name="name"></param>
<param name="value"></param>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ClearParameter(System.Object,System.Object)">
<summary>
</summary>
<param name="name"></param>
<param name="value"></param>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter">
<summary>
</summary>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter(ryCommonDb.RyQuickSQL)">
<summary>
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String)">
<summary>
</summary>
<param name="tableName"></param>
<param name="wheresql"></param>
<param name="orderSQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String)">
<summary>
</summary>
<param name="tableName"></param>
<param name="wheresql"></param>
<param name="orderSQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String,System.String)">
<summary>
</summary>
<param name="field"></param>
<param name="tableName"></param>
<param name="wheresql"></param>
<param name="orderSQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String,System.String)">
<summary>
</summary>
<param name="field"></param>
<param name="tableName"></param>
<param name="wheresql"></param>
<param name="orderSQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ContainsData(System.String,System.Object[])">
<summary>
</summary>
<param name="sql"></param>
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.Object[])">
<summary>
</summary>
<param name="sql"></param>
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,ryCommonDb.RyQuickSQL)">
<summary>
</summary>
<param name="sql"></param>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String)">
<summary>
</summary>
<param name="sql"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.String)">
<summary>
</summary>
<param name="tableName"></param>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,System.Object[])">
<summary>
</summary>
<param name="sql"></param>
<param name="Parameter"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(ryCommonDb.RyQuickSQL,System.String,System.Boolean)">
<summary>
执行SQL语句
</summary>
<param name="mySQL"></param>
<param name="wheresql">只针对IsAdd为false才生效where 以后的sql语句</param>
<param name="IsAdd">是新增还是更新</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Insert(ryCommonDb.RyQuickSQL)">
<summary>
插入数据库
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Update(ryCommonDb.RyQuickSQL,System.String)">
<summary>
更新数据库
</summary>
<param name="mySQL"></param>
<param name="wheresql">where 以后的sql语句</param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
<summary>
</summary>
<param name="sql"></param>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String)">
<summary>
</summary>
<param name="sql"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.BeginTransaction">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Commit">
<summary>
</summary>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.DelById(System.String,System.String)">
<summary>
</summary>
<param name="tableName"></param>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.CreateDb(ryCommonDb.RyQuickSQL)">
<summary>
</summary>
<param name="mySQL"></param>
<returns></returns>
</member>
<member name="M:ryCommonDb.SQLiteDataProvider.Free">
<summary>
</summary>
</member>
</members>
</doc>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
[VSoft]
hwnd=7350280
hwnd=1119170
width=802
height=626
ColumnId=1

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -1,489 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>ryUpdate</name>
</assembly>
<members>
<member name="T:LiveUpdate.ClsLiveUpdate">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateUrl">
<summary>
升级地址
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.CurUserId">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateAfterTime">
<summary>
隔多久后再次检查更新
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.SettingPath">
<summary>
本地保存的配置信息
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftVer">
<summary>
当前安装的软件版本
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftRVer">
<summary>
当前安装的软件修正版本
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.MyDataVer">
<summary>
当前安装的数据库版本
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.SaveFileName">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.DownUrl">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.isExit">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.ClsLiveUpdate.UpdateType">
<summary>
获取当前更新的类型
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateLoopHours">
<summary>
每隔n小时检测一次更新
</summary>
</member>
<member name="E:LiveUpdate.ClsLiveUpdate.OnReadComplete">
<summary>
读取版本信息完成后激发
</summary>
</member>
<member name="E:LiveUpdate.ClsLiveUpdate.OnNoUpdate">
<summary>
没有版本更新时激发
</summary>
</member>
<member name="E:LiveUpdate.ClsLiveUpdate.OnUpdateComplete">
<summary>
发现新版本时激发
</summary>
</member>
<member name="E:LiveUpdate.ClsLiveUpdate.OnHappenError">
<summary>
发生错误后激发
</summary>
</member>
<member name="E:LiveUpdate.ClsLiveUpdate.ProgressChanged">
<summary>
更新进度变化后激发
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.StartLiveUpdate">
<summary>
开始检测新版本
</summary>
</member>
<member name="F:LiveUpdate.ClsLiveUpdate.ParentForm">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.#ctor(System.Windows.Forms.Form)">
<summary>
初始化升级函数
</summary>
<param name="ower">为null,则表示事件运行在多线程模式下,否则,事件是在窗体所在线程下</param>
</member>
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyVersion">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyReVersion">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.GetVerInfo">
<summary>
获取版本信息
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload">
<summary>
开始下载
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload(System.String,System.String)">
<summary>
开始下载
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.DownloadInUI(System.String,System.String)">
<summary>
下载,不使用多线程
</summary>
</member>
<member name="M:LiveUpdate.ClsLiveUpdate.StopDownload">
<summary>
结束下载
</summary>
</member>
<member name="T:LiveUpdate.RyUpdate">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.RyUpdate.myLiveUpdate">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.RyUpdate.dict_downlist">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.RyUpdate.#ctor(System.String)">
<summary>
</summary>
<param name="url"></param>
</member>
<member name="M:LiveUpdate.RyUpdate.#ctor(System.Windows.Forms.Form,System.String)">
<summary>
</summary>
<param name="_ParentForm"></param>
<param name="url"></param>
</member>
<member name="M:LiveUpdate.RyUpdate.Finalize">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.RyUpdate.CurUserId">
<summary>
当前登陆用户
</summary>
</member>
<member name="P:LiveUpdate.RyUpdate.ParentForm">
<summary>
</summary>
</member>
<member name="E:LiveUpdate.RyUpdate.OnNoUpdate">
<summary>
没有版本更新时激发
</summary>
</member>
<member name="M:LiveUpdate.RyUpdate.CheckUpdate">
<summary>
</summary>
<returns></returns>
</member>
<member name="E:LiveUpdate.RyUpdate.OnUpdateCancel">
<summary>
取消更新。
</summary>
</member>
<member name="E:LiveUpdate.RyUpdate.OnAppExit">
<summary>
</summary>
</member>
<member name="T:LiveUpdate.frmStartUpdate">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.frmStartUpdate.#ctor">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.frmStartUpdate.T_myLiveUpdate">
<summary>
设置升级
</summary>
</member>
<member name="P:LiveUpdate.frmStartUpdate.T_isUpdate">
<summary>
是否是在线更新
</summary>
</member>
<member name="M:LiveUpdate.frmStartUpdate.RunFile(System.String,System.String)">
<summary>
</summary>
<param name="FilePath"></param>
<param name="PramCom"></param>
<returns></returns>
</member>
<member name="E:LiveUpdate.frmStartUpdate.OnAppExit">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.frmStartUpdate.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:LiveUpdate.frmStartUpdate.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:LiveUpdate.frmStartUpdate.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:LiveUpdate.FrmUpdate">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.FrmUpdate.#ctor(LiveUpdate.ClsLiveUpdate)">
<summary>
</summary>
<param name="_myLiveUpdate"></param>
</member>
<member name="P:LiveUpdate.FrmUpdate.T_Capion">
<summary>
提示文本
</summary>
</member>
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDate">
<summary>
更新日期
</summary>
</member>
<member name="P:LiveUpdate.FrmUpdate.T_UpdateVer">
<summary>
更新版本
</summary>
</member>
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDes">
<summary>
更新描述
</summary>
</member>
<member name="M:LiveUpdate.FrmUpdate.ConvertDateStr(System.String,System.String)">
<summary>
</summary>
<param name="Str"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:LiveUpdate.FrmUpdate.SetUpdateInfo(LiveUpdate.UpdateInfo)">
<summary>
</summary>
<param name="e"></param>
</member>
<member name="P:LiveUpdate.FrmUpdate.T_UpdateAfterTime">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.FrmUpdate.canClose">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.FrmUpdate.SetForegroundWindow(System.Int32)">
<summary>
</summary>
<param name="hWnd"></param>
<returns></returns>
</member>
<member name="E:LiveUpdate.FrmUpdate.OnAppExit">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.FrmUpdate.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:LiveUpdate.FrmUpdate.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:LiveUpdate.FrmUpdate.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:LiveUpdate.UpdateInfo">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateType">
<summary>
更新类型,soft或者data
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateDes_Url">
<summary>
更新描述Url
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateDes">
<summary>
更新描述
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateVer">
<summary>
版本
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateDate">
<summary>
更新日期
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.UpdateUrl">
<summary>
更新地址
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.FirstDownList">
<summary>
在下载升级包前首先要下载的内容
</summary>
</member>
<member name="F:LiveUpdate.UpdateInfo.sxSettingXML">
<summary>
升级程序要使用的设置xml
</summary>
</member>
<member name="T:LiveUpdate.UpdateErrorInfo">
<summary>
</summary>
</member>
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorStr">
<summary>
错误字符串
</summary>
</member>
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorId">
<summary>
错误id
</summary>
</member>
<member name="T:LiveUpdate.LiveUpdateEventArgs">
<summary>
</summary>
</member>
<member name="M:LiveUpdate.LiveUpdateEventArgs.#ctor">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileSize">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileName">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentUrl">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrProgress">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.IsCompleted">
<summary>
</summary>
</member>
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentStatus">
<summary>
</summary>
</member>
<member name="T:LiveUpdate.LiveUpdateProgressChanged">
<summary>
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="T:LiveUpdate.OnAppExit">
<summary>
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="T:LiveUpdate.UpdateHandler">
<summary>
</summary>
<param name="e"></param>
</member>
<member name="T:LiveUpdate.ErrorHandler">
<summary>
</summary>
<param name="e"></param>
</member>
<member name="T:ryUpdate.Properties.Resources">
<summary>
一个强类型的资源类,用于查找本地化的字符串等。
</summary>
</member>
<member name="P:ryUpdate.Properties.Resources.ResourceManager">
<summary>
返回此类使用的缓存的 ResourceManager 实例。
</summary>
</member>
<member name="P:ryUpdate.Properties.Resources.Culture">
<summary>
重写当前线程的 CurrentUICulture 属性,对
使用此强类型资源类的所有资源查找执行重写。
</summary>
</member>
</members>
</doc>

View File

@ -1,3 +1,27 @@
## :date:2025-09-11 星期四更新
### DyLine V2.0.2509.1101
- :100:[改进]消息发送机制采用Unicode。
### VSoft V2.0.2509.1101
- :cactus:[新增]支持对启动软件设置是否开机启动。
- :100:[改进]防止快速点击分类时激活拖放功能。
- :100:[改进]主窗体软件版本号改为默认从VSoft.dll获取。
- :100:[改进]针对调用流程软件的功能,直接通过主程序实现,提升打开速度。
- :lady_beetle:[修复]修复添加内置功能后不能直接打开,需要二次启动后才能打开的BUG。
- :lady_beetle:[修复]修复拖放文件到列表,图标可能无法正常显示的BUG。
- :lady_beetle:[修复]修复从桌面拖放到列表,图标无法马上显示的BUG。
- :lady_beetle:[修复]修改软件后缓存图标不会更新的BUG。
### 2024-12-17更新
------
#### VSoft V2.0.2412.1701
- *.[改进]热键显示窗体时,如果窗体部分界面不在屏幕内,则自动居中显示。
- *.[修复]修复编辑了启动项图标后,重新点进该分组,图标会恢复默认的BUG。
### 2024-12-10更新
------
@ -146,5 +170,4 @@
- *.[删除]删除管理员方式打开软件的警告通知。
- *.[改进]当当前路径没有填写时,默认使用软件路径所在文件夹作为当前路径。
- *.[更新]更新Newtonsoft.Json.dll到12.0.3.23909版本
- *.[更新]更新Newtonsoft.Json.dll到12.0.3.23909版本

View File

@ -23,7 +23,7 @@ namespace DyLine
var item = args[i];
if(item.StartsWith("show=",StringComparison.OrdinalIgnoreCase))
{
clsMsg ryMsg = new clsMsg();
ClsMsg ryMsg = new ClsMsg();
ryMsg.SendMsgToryProcess(0, item);//向流程软件发送连接信息
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.2312.0401")]
[assembly: AssemblyFileVersion("2.0.2312.0401")]
[assembly: AssemblyVersion("2.0.2509.1101")]
[assembly: AssemblyFileVersion("2.0.2509.1101")]

View File

@ -7,7 +7,7 @@ using System.Windows.Forms;
namespace DyLine
{
public class clsMsg
public class ClsMsg
{
[DllImport("user32.dll", EntryPoint = "EnumWindows", SetLastError = true)]
private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, uint lParam);
@ -21,24 +21,25 @@ namespace DyLine
[DllImport("user32.dll", EntryPoint = "IsWindow")]
private static extern bool IsWindow(IntPtr hWnd);
private const int WM_COPYDATA = 0x004A;
[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cData;
[MarshalAs(UnmanagedType.LPStr)]
[MarshalAs(UnmanagedType.LPWStr)]
public string lpData;
}
[DllImport("User32.dll", EntryPoint = "SendMessage")]
[DllImport("User32.dll", CharSet = CharSet.Unicode, EntryPoint = "SendMessage")]
private static extern int SendMessage(int hwnd, int msg, int wParam, ref COPYDATASTRUCT IParam);
private delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam);
public void SendMsg(int handle, int wParam, string str)
{
byte[] arr = System.Text.Encoding.Default.GetBytes(str);
byte[] arr = System.Text.Encoding.Unicode.GetBytes(str);
int len = arr.Length;
COPYDATASTRUCT cdata;
cdata.dwData = (IntPtr)100;
cdata.lpData = str;
cdata.cData = len + 1;
cdata.cData = (len + 1)*2;
SendMessage(handle, WM_COPYDATA, wParam, ref cdata);
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.2412.1001")]
[assembly: AssemblyFileVersion("2.0.2412.1001")]
[assembly: AssemblyVersion("2.0.2504.0901")]
[assembly: AssemblyFileVersion("2.0.2504.0901")]

View File

@ -19,7 +19,14 @@ namespace VSoft
private void FrmAbout_Load(object sender, EventArgs e)
{
lblTitle.Text = Soft_Info.Soft_Title + " V" + ryCommon.RySoft.VersionStr;
if (System.IO.File.Exists(Application.StartupPath + "\\VSoft.dll"))
{
lblTitle.Text = Config.Soft_Info.Soft_Title + " V" + ryCommon.RySoft.GetVersionStr(Application.StartupPath + "\\VSoft.dll");
}
else
{
lblTitle.Text = Config.Soft_Info.Soft_Title + " V" + ryCommon.RySoft.GetVersionStr(Application.ExecutablePath);
}
LblQQ_Qun.Text = Soft_Info.QQ_Qun;
if (Soft_Info.Soft_Url.Length == 0) { lblVisitUrl.Enabled = false; }
}

View File

@ -37,6 +37,7 @@
this.of_File = new System.Windows.Forms.OpenFileDialog();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.NumRunCount = new System.Windows.Forms.NumericUpDown();
this.NumWinRunDelay = new System.Windows.Forms.NumericUpDown();
this.TxtCmdId = new ryControls.TextBoxEx2();
this.label6 = new System.Windows.Forms.Label();
this.LblCustomImg = new System.Windows.Forms.Label();
@ -44,6 +45,9 @@
this.label4 = new System.Windows.Forms.Label();
this.chromeTabControl1 = new ryControls.ChromeTabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.label11 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.ChkWinStartRun = new System.Windows.Forms.CheckBox();
this.label9 = new System.Windows.Forms.Label();
this.CbbRunMode = new System.Windows.Forms.ComboBox();
this.label8 = new System.Windows.Forms.Label();
@ -64,6 +68,7 @@
this.TxtName = new ryControls.TextBoxEx2();
this.contextMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NumRunCount)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NumWinRunDelay)).BeginInit();
this.chromeTabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.PicImg)).BeginInit();
@ -124,6 +129,21 @@
0,
0});
//
// NumWinRunDelay
//
this.NumWinRunDelay.Enabled = false;
this.NumWinRunDelay.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.NumWinRunDelay.Location = new System.Drawing.Point(178, 198);
this.NumWinRunDelay.Maximum = new decimal(new int[] {
10,
0,
0,
0});
this.NumWinRunDelay.Name = "NumWinRunDelay";
this.NumWinRunDelay.Size = new System.Drawing.Size(74, 26);
this.NumWinRunDelay.TabIndex = 17;
this.NumWinRunDelay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// TxtCmdId
//
this.TxtCmdId.BackColor = System.Drawing.Color.White;
@ -211,6 +231,7 @@
this.chromeTabControl1.BackTabPageImage = null;
this.chromeTabControl1.Controls.Add(this.tabPage1);
this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default;
this.chromeTabControl1.DrawTabBorder = true;
this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25);
this.chromeTabControl1.Location = new System.Drawing.Point(12, 155);
this.chromeTabControl1.Name = "chromeTabControl1";
@ -218,13 +239,16 @@
this.chromeTabControl1.ShowAddButton = false;
this.chromeTabControl1.ShowCloseButton = false;
this.chromeTabControl1.Size = new System.Drawing.Size(650, 415);
this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.chromeTabControl1.TabContextMenuStrip = null;
this.chromeTabControl1.TabIndex = 9;
this.chromeTabControl1.TabMaxWidth = 100;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.label11);
this.tabPage1.Controls.Add(this.label10);
this.tabPage1.Controls.Add(this.NumWinRunDelay);
this.tabPage1.Controls.Add(this.ChkWinStartRun);
this.tabPage1.Controls.Add(this.NumRunCount);
this.tabPage1.Controls.Add(this.label9);
this.tabPage1.Controls.Add(this.CbbRunMode);
@ -247,6 +271,35 @@
this.tabPage1.Text = "运行";
this.tabPage1.UseVisualStyleBackColor = true;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(256, 206);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(41, 12);
this.label11.TabIndex = 19;
this.label11.Text = "秒启动";
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(145, 206);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(29, 12);
this.label10.TabIndex = 18;
this.label10.Text = "延时";
//
// ChkWinStartRun
//
this.ChkWinStartRun.AutoSize = true;
this.ChkWinStartRun.Location = new System.Drawing.Point(8, 205);
this.ChkWinStartRun.Name = "ChkWinStartRun";
this.ChkWinStartRun.Size = new System.Drawing.Size(120, 16);
this.ChkWinStartRun.TabIndex = 16;
this.ChkWinStartRun.Text = "开机时启动该软件";
this.ChkWinStartRun.UseVisualStyleBackColor = true;
this.ChkWinStartRun.CheckedChanged += new System.EventHandler(this.ChkWinStartRun_CheckedChanged);
//
// label9
//
this.label9.AutoSize = true;
@ -258,6 +311,7 @@
//
// CbbRunMode
//
this.CbbRunMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CbbRunMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CbbRunMode.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.CbbRunMode.FormattingEnabled = true;
@ -273,6 +327,7 @@
//
// label8
//
this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(504, 8);
this.label8.Name = "label8";
@ -324,6 +379,8 @@
//
// TxtStartPath
//
this.TxtStartPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtStartPath.BackColor = System.Drawing.Color.White;
this.TxtStartPath.EmptyText = "留空则表示使用默认设置";
this.TxtStartPath.Location = new System.Drawing.Point(6, 103);
@ -355,6 +412,8 @@
//
// TxtPath
//
this.TxtPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtPath.BackColor = System.Drawing.Color.White;
this.TxtPath.EmptyText = "";
this.TxtPath.Location = new System.Drawing.Point(6, 23);
@ -396,6 +455,8 @@
//
// TxtRunPram
//
this.TxtRunPram.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.TxtRunPram.BackColor = System.Drawing.Color.White;
this.TxtRunPram.EmptyText = "";
this.TxtRunPram.Location = new System.Drawing.Point(6, 63);
@ -511,6 +572,7 @@
this.Load += new System.EventHandler(this.FrmAddSoft_Load);
this.contextMenuStrip1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NumRunCount)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NumWinRunDelay)).EndInit();
this.chromeTabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout();
@ -554,5 +616,9 @@
private System.Windows.Forms.Label label8;
private System.Windows.Forms.NumericUpDown NumRunCount;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.CheckBox ChkWinStartRun;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.NumericUpDown NumWinRunDelay;
private System.Windows.Forms.Label label11;
}
}

View File

@ -84,7 +84,9 @@ namespace VSoft
Json json = new Json(reader["SetJson"].ToString());
ChkRunAsAdmin.Checked = json.GetJsonValue("RunAsAdmin", false);
CbbRunMode.SelectedIndex = json.GetJsonValue("RunMode", 0);
ChkWinStartRun.Checked = reader["WinStartRun"].ToInt()==1;
NumRunCount.Value = json.GetJsonValue("RunCount", 1, NumRunCount.Maximum.ToInt(), 1);
NumWinRunDelay.Value = json.GetJsonValue("WinRunDelay", 0, NumWinRunDelay.Maximum.ToInt(), 0);
var _IconPath = reader["IconPath"].ToString();
orgion_IconPath = _IconPath;
IconPath = _IconPath;
@ -133,6 +135,17 @@ namespace VSoft
RyFiles.DeleteFile(RyFiles.GetRealPath(orgion_IconPath));
}
}
var truePath= RyFiles.GetRealPath(TxtPath.Text);
if (System.IO.File.Exists(truePath))
{
if (API.HaveRunFromRegedit(truePath))
{
if (Msg.ShowMsg("该软件已添加到注册表进行开机启动,这样会导致重复启动,是否从注册表中删除。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
API.DelRunFromRegedit(truePath);
}
}
}
DataProvider mydb = new DataProvider();
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(SQLConnStr) == 1)
@ -181,7 +194,9 @@ namespace VSoft
json.Add("RunAsAdmin", ChkRunAsAdmin.Checked);
json.Add("RunMode", CbbRunMode.SelectedIndex);
json.Add("RunCount", NumRunCount.Value.ToInt());
json.Add("WinRunDelay", NumWinRunDelay.Value.ToInt());
mySQL.AddField("SetJson", json.Text);//设置
mySQL.AddField("WinStartRun", ChkWinStartRun.Checked?1:0);//开机启动
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));
@ -268,5 +283,10 @@ namespace VSoft
PicImg.Image = API.GetImg(RyFiles.GetRealPath(TxtPath.Text));
LblCustomImg.Text = "自动获取";
}
private void ChkWinStartRun_CheckedChanged(object sender, EventArgs e)
{
NumWinRunDelay.Enabled = ChkWinStartRun.Checked;
}
}
}

View File

@ -43,6 +43,8 @@
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.BtnAddColumn = new System.Windows.Forms.Button();
this.MenuTabColumn = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -73,6 +75,7 @@
this.TabList_Column = new ryControls.TabList();
this.BtnLeftColumn = new ryControls.ButtonEx();
this.BtnRightColumn = new ryControls.ButtonEx();
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator();
this.MenuList.SuspendLayout();
this.MenuTabColumn.SuspendLayout();
this.MenuTabType.SuspendLayout();
@ -91,28 +94,31 @@
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem1,
this.ToolStripMenuItem});
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem4,
this.ToolStripMenuItem});
this.MenuList.Name = "contextMenuStrip1";
this.MenuList.Size = new System.Drawing.Size(185, 148);
this.MenuList.Size = new System.Drawing.Size(197, 220);
this.MenuList.Opening += new System.ComponentModel.CancelEventHandler(this.MenuList_Opening);
//
// 以管理员方式启动ToolStripMenuItem
//
this.ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("以管理员方式启动ToolStripMenuItem.Image")));
this.ToolStripMenuItem.Name = "以管理员方式启动ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "以管理员方式启动";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(181, 6);
this.toolStripMenuItem2.Size = new System.Drawing.Size(193, 6);
//
// 新增软件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "新增软件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "添加软件";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@ -120,36 +126,50 @@
//
this.ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("新增内置功能ToolStripMenuItem.Image")));
this.ToolStripMenuItem.Name = "新增内置功能ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "添加内置功能";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 修改软件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "修改软件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "修改软件";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 从列表删除该软件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "从列表删除该软件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "从列表删除选定软件";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(181, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(193, 6);
//
// 打开软件所在位置ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "打开软件所在位置ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "打开软件所在位置";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 开机启动该软件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "开机启动该软件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "开机启动该软件";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 查看全部开机启动软件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "查看全部开机启动软件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.ToolStripMenuItem.Text = "查看全部开机启动软件";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// BtnAddColumn
//
this.BtnAddColumn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@ -498,6 +518,11 @@
this.BtnRightColumn.UseVisualStyleBackColor = true;
this.BtnRightColumn.Click += new System.EventHandler(this.BtnRightColumn_Click);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(193, 6);
//
// FrmVSoft
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -639,6 +664,7 @@
themeForm1.ShadowWidth = 1;
themeForm1.ShowShadow = false;
themeForm1.SideResizeWidth = 4;
themeForm1.TabRadius = 8;
themeForm1.TextLeftMargin = 2;
themeForm1.UseDefaultTopRoundingFormRegion = false;
themeForm1.UseShadowToResize = false;
@ -702,5 +728,8 @@
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
private ryControls.ButtonEx BtnLeftColumn;
private ryControls.ButtonEx BtnRightColumn;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4;
}
}

View File

@ -9,6 +9,7 @@ using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using VSoft.Config;
using VSoft.Prams;
@ -28,7 +29,14 @@ namespace VSoft
prog_args = args;
//配置软件信息
notifyIcon1.Text = Config.Soft_Info.Soft_Title;
Text = Config.Soft_Info.Soft_Title + " V" + RySoft.GetVersionStr(Application.ExecutablePath);
if (System.IO.File.Exists(Application.StartupPath + "\\VSoft.dll"))
{
Text = Config.Soft_Info.Soft_Title + " V" + RySoft.GetVersionStr(Application.StartupPath + "\\VSoft.dll");
}
else
{
Text = Config.Soft_Info.Soft_Title + " V" + RySoft.GetVersionStr(Application.ExecutablePath);
}
#if TEST
Text +=" V内部测试版";
#endif
@ -137,6 +145,7 @@ namespace VSoft
RunPram = row["RunPram"].ToString(),
SetJson = row["SetJson"].ToString(),
StartPath = row["StartPath"].ToString(),
WinStartRun = row["WinStartRun"].ToInt()==1,
IconPath = row["IconPath"].ToString()
};
string img_path;
@ -261,7 +270,7 @@ namespace VSoft
}
}
}
Dictionary<int,SelectInfo> dict_cache_type=new Dictionary<int, SelectInfo>();
private readonly Dictionary<int, SelectInfo> dict_cache_type = new Dictionary<int, SelectInfo>();
private void LoadTypeColumn(int id)
{
TabList_Type.Items.Clear();
@ -363,6 +372,53 @@ namespace VSoft
}
db2.Free();
}
/// <summary>
/// 开机启动
/// </summary>
private void WinStart()
{
IDbInterface db2 = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db2.ConnDb(SQLConnStr) == 1)
{
var ds = db2.ReadData("select * from Softs where WinStartRun=1");
if (ds.HaveData())
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
var row = ds.GetRow(i);
SoftInfo info = new SoftInfo
{
Id = row["id"].ToInt(),
SoftType = row["SoftType"].ToInt(),
ColumnId = row["ColumnId"].ToInt(),
Name = row["Name"].ToString(),
Path = row["Path"].ToString(),
RunPram = row["RunPram"].ToString(),
SetJson = row["SetJson"].ToString(),
StartPath = row["StartPath"].ToString(),
WinStartRun = row["WinStartRun"].ToInt() == 1,
IconPath = row["IconPath"].ToString()
};
Json json = new Json(row["SetJson"].ToString());
var WinRunDelay=json.GetJsonValue("WinRunDelay", 0,10, 0);
if (WinRunDelay == 0)
{
VSoft.Prams.Run.Open(info, false);
}
else
{
Task.Run(() =>
{
Task.Delay(WinRunDelay*1000);
VSoft.Prams.Run.Open(info, false);
});
}
}
}
ds.Dispose();
}
db2.Free();
}
SysFuns.WinHotReg hotkey;
private void FrmVSoft_Load(object sender, EventArgs e)
{
@ -477,6 +533,13 @@ namespace VSoft
#endif
mouse.OnMouseActivity += Mouse_OnMouseActivity;
mouse.Start();
if(prog_args.Length>0)
{
if (prog_args[0]==Soft_Info.Soft_Pram)
{
WinStart();
}
}
}
private void Hotkey_OnHotkey(int HotKeyID)
@ -577,26 +640,36 @@ namespace VSoft
this.WindowState = FormWindowState.Normal;
var topmost = this.TopMost;
this.TopMost = true;
this.Show();
//this.TopMost = topmost;
this.BringToFront();
this.Select();
this.Focus();
//RyForm.BringToTop(Handle);
RyForm.SetActiveWindow(Handle);
//this.TopMost = topmost;
rySearch1.Focus();
using (var bg = new BackgroundWorker())
var screen = Screen.FromPoint(MousePosition);
if (!screen.WorkingArea.Contains(this.Location) || !screen.WorkingArea.Contains(this.Left+this.Width,this.Top+this.Height))
{
bg.DoWork += delegate { System.Threading.Thread.Sleep(100); };//1秒后
bg.RunWorkerCompleted += delegate {
this.Invoke(new Action(() =>
RyForm.ShowCenter(this, null);
}
this.Show();
this.TopMost = topmost;
if (RyForm.GetActiveWindow() != this.Handle)
{
//this.TopMost = topmost;
this.BringToFront();
this.Select();
this.Focus();
//RyForm.BringToTop(Handle);
RyForm.SetActiveWindow(Handle);
//this.TopMost = topmost;
rySearch1.Focus();
using (var bg = new BackgroundWorker())
{
bg.DoWork += delegate { System.Threading.Thread.Sleep(100); };//1秒后
bg.RunWorkerCompleted += delegate
{
this.TopMost = topmost;
SetF(Handle);
}));
}; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块
bg.RunWorkerAsync();
this.Invoke(new Action(() =>
{
this.TopMost = topmost;
SetF(Handle);
}));
}; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块
bg.RunWorkerAsync();
}
}
}
}
@ -919,7 +992,7 @@ namespace VSoft
#region
private void SetSoftRow(int id, int index)
{
#region
#region
DataProvider mydb = new DataProvider();
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(SQLConnStr) == 1)
@ -938,6 +1011,7 @@ namespace VSoft
info.StartPath = row["StartPath"].ToString();
info.IconPath = row["IconPath"].ToString();
info.SoftType = row["SoftType"].ToInt();
info.WinStartRun = row["WinStartRun"].ToInt()==1;
if (info.IconPath.Length == 0)
{
info.Image = API.GetImg(info.TruePath, 128);
@ -946,11 +1020,28 @@ namespace VSoft
{
info.Image = API.GetImg(RyFiles.GetRealPath(row["IconPath"].ToString()), 128);
}
string img_path;
if (info.IconPath.Length == 0)
{
img_path = info.TruePath;
}
else
{
img_path = RyFiles.GetRealPath(info.IconPath);
}
if (!dictCacheImg.ContainsKey(img_path))
{
dictCacheImg.Add(img_path, info.Image);
}
else
{
dictCacheImg[img_path] = info.Image;
}
item.Text = row["Name"].ToString();
}
db.Free();
}
#endregion
#endregion
}
/// <summary>
/// 获取当前页面所属的分类或栏目ID
@ -1008,6 +1099,7 @@ namespace VSoft
RunPram = row["RunPram"].ToString(),
SetJson = row["SetJson"].ToString(),
StartPath = row["StartPath"].ToString(),
WinStartRun = row["WinStartRun"].ToInt()==1,
IconPath = row["IconPath"].ToString()
};
string img_path;
@ -1337,9 +1429,10 @@ namespace VSoft
RunPram = pram,
SetJson = json.Text,
StartPath = StartPath,
IconPath = ""
IconPath = icon
};
string img_path = info.TruePath;
string img_path = icon;
if (img_path.Length == 0) { img_path=path; }
if (dictCacheImg.ContainsKey(img_path))
{
info.Image = dictCacheImg[img_path];
@ -1388,7 +1481,7 @@ namespace VSoft
{
IconViewEx1.BeginUpdate();
IconViewEx1.View = View.List;
if (index == -1)
if (index == -1 || index==IconViewEx1.Items.Count-1)
{
IconViewEx1.Items.Add(soft.Name).Tag = soft;
}
@ -1588,8 +1681,10 @@ namespace VSoft
}
#endregion
#region
private DateTime dt_type_drag_time = DateTime.MinValue;
private void TabList_Type_DragEnter(object sender, DragEventArgs e)
{
dt_type_drag_time = DateTime.Now;
//判定是否现在拖动的数据是LISTVIEW项
ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
if (lvi != null)
@ -1600,10 +1695,14 @@ namespace VSoft
private void TabList_Type_DragDrop(object sender, DragEventArgs e)
{
Point pt;
IconViewEx1.InsertionMark.Index = -1;
TabList_Type.InsertionMark.Index = -1;
TabList_Column.InsertionMark.Index = -1;
if (dt_type_drag_time.AddMilliseconds(300)>DateTime.Now)
{
return;
}
Point pt;
pt = ((TabList)(sender)).PointToClient(new Point(e.X, e.Y));
var item = TabList_Type.GetItemAt(pt.X, pt.Y);
if (item == null) { return; }
@ -1943,6 +2042,7 @@ namespace VSoft
if (frm.ShowDialog(this)==DialogResult.OK)
{
var info = frm.SelectedInfo;
info.SoftType = 1;
RyQuickSQL mySQL = new RyQuickSQL("Softs");
mySQL.AddField("Name", info.Name);
mySQL.AddField("SoftType",1);//0表示运行文件,1表示执行内置命令,2表示执行脚本
@ -2050,6 +2150,12 @@ namespace VSoft
ToolStripMenuItem.Enabled = isSelected;
ToolStripMenuItem.Enabled = isSelected;
ToolStripMenuItem.Enabled = isSelected;
ToolStripMenuItem.Enabled = isSelected;
if (isSelected)
{
var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag;
ToolStripMenuItem.Checked = info.WinStartRun;
}
}
private void IconViewEx1_Resize(object sender, EventArgs e)
@ -2150,7 +2256,7 @@ namespace VSoft
else
{
var index = TabList_Column.SelectedItems[0].Index;
if(index>1)
if(index>=1)
{
index--;
}
@ -2183,6 +2289,63 @@ namespace VSoft
//TabList_Column.item = TabList_Column.Items[index];
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (IconViewEx1.SelectedItems.Count == 0) { return; }
var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag;
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(SQLConnStr) == 1)
{
DataSet ds = db.ReadData("Softs", info.Id);
if (ds.HaveData())
{
DataRow reader = ds.Tables[0].Rows[0];
if (reader["WinStartRun"].ToInt()==1)
{
db.ExecuteNonQuery("update Softs set WinStartRun=0 where id=" + info.Id);
}
else
{
if (System.IO.File.Exists(info.TruePath))
{
if (API.HaveRunFromRegedit(info.TruePath))
{
if (Msg.ShowMsg("该软件已添加到注册表进行开机启动,这样会导致重复启动,是否从注册表中删除。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
API.DelRunFromRegedit(info.TruePath);
}
}
}
db.ExecuteNonQuery("update Softs set WinStartRun=1 where id=" + info.Id);
}
info.WinStartRun= reader["WinStartRun"].ToInt() == 0;
ToolStripMenuItem.Checked= reader["WinStartRun"].ToInt() == 0;
}
}
db.Free();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmWinStartView frm = new FrmWinStartView
{
Icon = Icon
};
frm.ShowDialog();
foreach (var item in frm.RemovesList)
{
for (int i = 0; i < IconViewEx1.Items.Count; i++)
{
var info= (SoftInfo)IconViewEx1.Items[i].Tag;
if(info.Id==item)
{
info.WinStartRun = false;
}
}
}
frm.Dispose();
}
}
class SelectInfo
{

View File

@ -0,0 +1,107 @@
namespace VSoft
{
partial class FrmWinStartView
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmWinStartView));
this.IconViewEx1 = new ryControls.IconViewEx();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// IconViewEx1
//
this.IconViewEx1.AllowDrop = true;
this.IconViewEx1.BackColor = System.Drawing.Color.White;
this.IconViewEx1.BadgeListImage = ((System.Collections.Generic.List<System.Drawing.Image>)(resources.GetObject("IconViewEx1.BadgeListImage")));
this.IconViewEx1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.IconViewEx1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.IconViewEx1.ContextMenuStrip = this.contextMenuStrip1;
this.IconViewEx1.Dock = System.Windows.Forms.DockStyle.Fill;
this.IconViewEx1.HideSelection = false;
this.IconViewEx1.Icon = ((System.Drawing.Image)(resources.GetObject("IconViewEx1.Icon")));
this.IconViewEx1.IconSize = 64;
this.IconViewEx1.IsDrawGridLines = false;
this.IconViewEx1.IsDrawIcon = true;
this.IconViewEx1.Location = new System.Drawing.Point(1, 27);
this.IconViewEx1.MultiSelect = false;
this.IconViewEx1.Name = "IconViewEx1";
this.IconViewEx1.OwnerDraw = true;
this.IconViewEx1.SelectedBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(229)))), ((int)(((byte)(195)))), ((int)(((byte)(101)))));
this.IconViewEx1.SelectedEndBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(236)))), ((int)(((byte)(181)))));
this.IconViewEx1.SelectedForeColor = System.Drawing.Color.Black;
this.IconViewEx1.SelectedStartBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(251)))), ((int)(((byte)(237)))));
this.IconViewEx1.ShowGroups = false;
this.IconViewEx1.Size = new System.Drawing.Size(821, 516);
this.IconViewEx1.TabIndex = 1;
this.IconViewEx1.TextHeight = 20;
this.IconViewEx1.TileSize = new System.Drawing.Size(100, 100);
this.IconViewEx1.UseCompatibleStateImageBehavior = false;
this.IconViewEx1.View = System.Windows.Forms.View.Tile;
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(181, 48);
//
// 移除开机启动ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "移除开机启动ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.ToolStripMenuItem.Text = "移除开机启动";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// FrmWinStartView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(823, 544);
this.Controls.Add(this.IconViewEx1);
this.Name = "FrmWinStartView";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "开机启动列表";
this.Load += new System.EventHandler(this.FrmWinStartView_Load);
this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private ryControls.IconViewEx IconViewEx1;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
}
}

View File

@ -0,0 +1,88 @@
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.Threading.Tasks;
using System.Windows.Forms;
using VSoft.Prams;
using VSoft.Skins;
namespace VSoft
{
public partial class FrmWinStartView : SKinForm
{
public FrmWinStartView()
{
InitializeComponent();
}
private void LoadDb()
{
IconViewEx1.Items.Clear();
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1)
{
var sql = "select * from Softs where WinStartRun=1";
DataSet ds = db.ReadData(sql + " order by sortindex asc,AddTime desc");
IconViewEx1.BeginUpdate();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i];
SoftInfo info = new SoftInfo
{
Id = row["id"].ToInt(),
SoftType = row["SoftType"].ToInt(),
ColumnId = row["ColumnId"].ToInt(),
Name = row["Name"].ToString(),
Path = row["Path"].ToString(),
RunPram = row["RunPram"].ToString(),
SetJson = row["SetJson"].ToString(),
StartPath = row["StartPath"].ToString(),
WinStartRun = row["WinStartRun"].ToInt() == 1,
IconPath = row["IconPath"].ToString()
};
string img_path;
if (info.IconPath.Length == 0)
{
img_path = info.TruePath;
}
else
{
img_path = RyFiles.GetRealPath(info.IconPath);
}
info.Image = API.GetImg(img_path, 128);
Application.DoEvents();
IconViewEx1.Items.Add(info.Name).Tag = info;
}
IconViewEx1.EndUpdate();
db.Free();
}
db.Free();
}
private void FrmWinStartView_Load(object sender, EventArgs e)
{
LoadDb();
}
/// <summary>
/// 移除开机启动的ID列表
/// </summary>
public List<int> RemovesList = new List<int>();
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (IconViewEx1.SelectedItems.Count == 0) { return; }
var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag;
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1)
{
db.ExecuteNonQuery("update Softs set WinStartRun=0 where id=" + info.Id);
RemovesList.Add(info.Id);
IconViewEx1.SelectedItems[0].Remove();
}
db.Free();
}
}
}

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="IconViewEx1.BadgeListImage" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAKABU3lzdGVtLkRyYXdpbmcsIFZlcnNpb249NC4wLjAuMCwgQ3Vs
dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iMDNmNWY3ZjExZDUwYTNhXV0sIG1zY29ybGliLCBW
ZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0
ZTA4OQwDAAAAUVN5c3RlbS5EcmF3aW5nLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwg
UHVibGljS2V5VG9rZW49YjAzZjVmN2YxMWQ1MGEzYQUBAAAAN1N5c3RlbS5Db2xsZWN0aW9ucy5HZW5l
cmljLkxpc3RgMVtbU3lzdGVtLkRyYXdpbmcuSW1hZ2UDAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgQA
ABZTeXN0ZW0uRHJhd2luZy5JbWFnZVtdAwAAAAgIAgAAAAkEAAAAAAAAAAAAAAAHBAAAAAABAAAAAAAA
AAQUU3lzdGVtLkRyYXdpbmcuSW1hZ2UDAAAACw==
</value>
</data>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="IconViewEx1.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAABtpJREFUeF7tnU+IHEUUhwcjIjkE1JMREnMWD5qwu1W7avAkCHrSu6dccgnoud9s
ooIXT+ai8WQQEzXmIESNIXhRRAy4h5CYi4IRDbpGCcR0TUreuKM9b3reTM90V/d0/R58h52q6t3O+6br
70w6nSnCkL/XJL2Dltw5S+klS27TkvOgUWxu5eacobRr173pkL9D5rJQLB32ewy54yZxt3J+IWg4Jkkv
r677x2ReJ8Ze8ttt4o5ack5eFCwehtyx/eTvlnnOjdXE77SUbsiLgMXGJOm3nFuZ76GwR/xum7irsjFo
CYm7ukL+QZn3fiyT32HJXRlpBFqFIfc951rmv2MS96GsDNqJIXdqKPmrid8nK4F2YxK/lH33n5UVQOv5
vJ/8vS/7+3MKQQSskd/VMd3eAVkA4sB0ey9h8Bc3n3YspRdyCkAUpBsdS+7X0QIQCde4C7idUwAigHPP
T4CRAhAPECByIEDkQIDIgQCRAwEiBwJEDgSIHAgQORAgciBA5DRCAEPuuqH0/MLRgg/MNEIAS+mXmSOK
CxNm3T9hyN0YvZ/FAQLMGWbdP2LJ/T56T4sBBCghzLp/eFElaKQAllIa6W+bQtc9l/1bB8ESGHJ/jN5b
s2mkAIbcydE6zWCl2zuU/VuzsUL+UUvuL9mmyUCAgkgB5KduV9b98iJJAAEKIgUwiTvzEPm7sq+xBIsy
O4AABZEC8Gt5EiyTX7OJuynbNw0IUJA8ARiWYD/5O4fL0iebLgEEKMg4AbY4nSeBIfe3vE5TkDdQE60R
gDndOeG3ZesYSp+y5NKcurWTdwM10CoBeG/jpJRghdwzTZQg9wbC0y4BmL4E4mvatiRo1Bdvjb2BsLRP
gC3eGZEgcc836Ukw6QYCsbgCzBK2655uigQQoCBlCMBhkvQree06iFaA977o+Rs3vb923fuLP97u//zs
a6P1JBCgEsIJ8NYnvX7S8+KHX25PlIAXfHi3sihyFxECDFG9AN13xyc+G9NIMAuG3Imhe4QAWaoTgBPP
j/giUYUEEEClfAFeeMP5by4XS3w2ypYAAqiUJwAn/vx3syc+G2VKAAFU5heAEzUY2U8bLMrrH+ltypIA
AqjMJ8AsiecnxaD9obf19mVIAAFUZhNAm9LlBQ8GeVAor8OwBFrMKwEEUCkuwKSEZYOTNy7xWVgoLfjJ
IdtMCwRQKS4AM2mwx08HTqpsp1GVBBBAZTYBuB/PC+7PeVwg60/LJAlmuTYEUJlNAObjr/9/CgwSP09f
PUCTAAKUzuwCcLI58fxoLiPxDF9HW0SCAKUzuwBMWYlnptkzmGZAKYEAKvMJUBbZ7kQLnoHItpOAACr1
CsAJ5anipOCuhlcOZftpgAAq9QnA/fk0wWOCeboaCKASXgCeQk6zTTzvlHIABFAJKwBP8bS1/0GwINk9
g3mAACrhBJj2kV/Guz4LBFAJI8BgzUALHgzOMsqfBARQCSPApHc/TwNlm7KAACphBBg36OOFn1kWd4oA
AVTCCDBuoafq5DMQQCWMAOO6gLIHfHlAAJUwAvA7PS+q7PsHQACVMAKMOz/AYwNZt2wggEoYAZi84EGg
rFc2EEAlnADjNn1kvbKBACrhBBh30KOKxZ8sEEAlnAC8D8Cnh3jkz4PCqhM/AAKohBOgLiCACgSoCwgQ
CAigAgHqAgIEAgKohBWAD3aGWP/PAgFUwgjAB0KyO4KhpoAMBFCpXoC8D3zwz/Oc9C0CBFCpVgB+5I+L
EDuBDARQqVYAZtweAMesH/YoAgRQqV4A7Wtg+PWquwIIoFK9AMy4E0EcvEkk65cJBFAJIwAzbjeQo8qz
gRBAJZwAeZ8NmOdDn9MCAVTCCcBkZwV8HKzq/p+BACphBWB4+hdyNRACqIQXIDQQQAUC1AUECAQEUIEA
dQEBAgEBVCBAXTRSgP5/skTp+TZhu70ke48QYIhhAWIICDAEBKgLCFBTQIAMhtx12We2HZu4P+W/Qx00
QgBQHxAgciBA5ECAyIEAkQMBIgcCRA4EiBwIEDkQIHIgQORAgMjh0ze/yRdBNFzj0zcbOQUgCtILHZO4
M6MFIAYMuVMdQ70XZQGIA9PtHeiskd8lC0AcLL3i7/v3eBK5z2QhaDcmcWf/O5+2mvh9sgJoN5zzzBHF
Tscm7n1ZCbQTQ+6DoeRzrL3q77HkrsjKoF0YSi8uk98h898Pe8TvNuR+lo1Aa/jJHPEPyLwPxWrid2Jx
qI2kG5xbme/c2Et+uyX35uhFwALibOKOck5lnieGJf84xgWLiUncLUPu+NJhv0fmtVic8NvsujeG0m7/
Ey2UXrLkNuUvBLWzybnh+b1Jegd5UC9TmRf/ANETmTuuK6ijAAAAAElFTkSuQmCC
</value>
</data>
</root>

View File

@ -24,21 +24,27 @@ namespace VSoft.Prams
}
public static Image GetImg(string url,int maxSize)
{
var ext = System.IO.Path.GetExtension(url).ToLower();
var iPos = url.LastIndexOf(".");
var ext = iPos>=0?url.Substring(iPos).ToLower():"";
var _url = url;
if(_url.IndexOfEx("<")>=0)
{
_url =RyFiles.GetRealPath(_url);
}
var img_ext = ";.jpg;.png;.bmp;.gif;.jpeg;.jfif;.jpe;.tif;.ico;";
if (img_ext.IndexOfEx(";" + ext + ";") >= 0)
{
return RyFiles.LoadPicFromFile(url);
return RyImage.LoadPic(_url);
}
else
{
var exe_ext = ";.exe;.dll;";
if (exe_ext.IndexOfEx(";" + ext + ";") >= 0)
{
var img= RyFiles.GetFileIcon(url, 0, out _, maxSize);
var img= RyFiles.GetFileIcon(_url, 0, out _, maxSize);
if (img == null)
{
var icon = ShellIcon.GetLargeIcon(url);
var icon = ShellIcon.GetLargeIcon(_url);
return icon;
}
return img;
@ -46,7 +52,7 @@ namespace VSoft.Prams
//FileIcon ico = new FileIcon(url);
//ico.GetInfo();
//var icon2 = ico.ShellIcon;
var icon2 = ShellIcon.GetLargeIcon(url);
var icon2 = ShellIcon.GetLargeIcon(_url);
return icon2;
}
}
@ -90,5 +96,71 @@ namespace VSoft.Prams
Description = shortcut.Description
};
}
/// <summary>
/// 该路径在注册表里是否存在启动项
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static bool HaveRunFromRegedit(string filePath)
{
return CheckRootPath(RegistryHive.LocalMachine, @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run")
|| CheckRootPath(RegistryHive.LocalMachine, @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
|| CheckRootPath(RegistryHive.CurrentUser, @"Software\Microsoft\Windows\CurrentVersion\Run");
bool CheckRootPath(RegistryHive RegRoot,string RegPath)
{
try
{
RegistryKey LMach = RegistryKey.OpenBaseKey(RegRoot, RegistryView.Registry64);
RegistryKey softwareRun = LMach.OpenSubKey(RegPath, true);
var names= softwareRun.GetValueNames();
foreach (var name in names)
{
var value = softwareRun.GetValue(name).ToString();
if (value.IndexOfEx(filePath).IsInRange(0,2))
{
return true;
}
}
}
catch (Exception)
{
}
return false;
}
}
public static bool DelRunFromRegedit(string filePath)
{
var del1 = DelPath(RegistryHive.LocalMachine, @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run");
var del2 = DelPath(RegistryHive.LocalMachine, @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
var del3= DelPath(RegistryHive.CurrentUser, @"Software\Microsoft\Windows\CurrentVersion\Run");
return del1 || del2 || del3;
bool DelPath(RegistryHive RegRoot, string RegPath)
{
var isdel = false;
try
{
RegistryKey LMach = RegistryKey.OpenBaseKey(RegRoot, RegistryView.Registry64);
RegistryKey softwareRun = LMach.OpenSubKey(RegPath, true);
var names = softwareRun.GetValueNames();
foreach (var name in names)
{
var value = softwareRun.GetValue(name).ToString();
if (value.IndexOfEx(filePath).IsInRange(0, 2))
{
isdel = true;
softwareRun.DeleteValue(name);
}
}
}
catch (Exception)
{
}
return isdel;
}
}
}
}

View File

@ -21,14 +21,11 @@ namespace VSoft.Prams
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
if (TheMouseMoved != null)
TheMouseMoved();
TheMouseMoved?.Invoke();
if (m.Msg == WM_MBUTTONDOWN)
if (TheMouseMDown != null)
TheMouseMDown();
TheMouseMDown?.Invoke();
if (m.Msg == WM_MBUTTONUP)
if (TheMouseMUp != null)
TheMouseMUp();
TheMouseMUp?.Invoke();
// Always allow message to continue to the next filter control
return false;
}

View File

@ -17,10 +17,10 @@ namespace VSoft.Prams
}
[StructLayout(LayoutKind.Sequential)]
private struct POINT
private readonly struct POINT
{
int x;
int y;
readonly int x;
readonly int y;
}
[StructLayout(LayoutKind.Sequential)]

View File

@ -168,6 +168,7 @@ namespace VSoft.Prams
mySQL.AddField("Hotkey", "");//快捷键
mySQL.AddField("PinYin", "");//拼音
mySQL.AddField("ColumnId", 0);//栏目ID
mySQL.AddField("WinStartRun", 0);//是否开机运行
mySQL.AddField("sortindex", 0);
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
@ -214,7 +215,6 @@ namespace VSoft.Prams
}
public static void CreateTable_Logs(DataProvider.DataProviderType dataType)
{
DataProvider mydb = new DataProvider();
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(SQLConnStr_Logs) == 1)
{

View File

@ -68,6 +68,7 @@ namespace VSoft.Prams
}
db.Free();
}
db.Free();
#endregion
}
if (StartPath.Length == 0)
@ -125,6 +126,12 @@ namespace VSoft.Prams
}
else
{
if (parm.StartsWith("show=") && path==Application.StartupPath+ "\\DyLine.exe")
{
DyLine.ClsMsg ryMsg = new DyLine.ClsMsg();
ryMsg.SendMsgToryProcess(0, parm);//向流程软件发送连接信息
continue;
}
if (RyFiles.RunFile(path, parm, StartPath, json.GetJsonValue("RunMode", 0)) < 36)
{
run_result = -1; break;
@ -146,12 +153,14 @@ namespace VSoft.Prams
{
try
{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = CurrentDirectory;
startInfo.FileName = exeName;
startInfo.Verb = "runas";
switch(RunMode)
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = true,
WorkingDirectory = CurrentDirectory,
FileName = exeName,
Verb = "runas"
};
switch (RunMode)
{
case 0:
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;

View File

@ -113,7 +113,7 @@ namespace VSoft.Prams
/// <returns></returns>
public static Bitmap GetLargeIcon(string fileName)
{
var icon = c_icon_of_path.icon_of_path_large(fileName, true, true);
var icon = C_icon_of_path.icon_of_path_large(fileName, true, true);
if (icon == null) { return null; }
return icon.ToBitmap();
//SHFILEINFO shinfo = new SHFILEINFO();

View File

@ -71,6 +71,10 @@ namespace VSoft.Prams
/// </summary>
public string Des { get; set; } = "";
/// <summary>
/// 是否开机运行
/// </summary>
public bool WinStartRun { get; set; } = false;
/// <summary>
/// 文件图标
/// </summary>
public Image Image { get; set; } = null;

View File

@ -6,10 +6,11 @@ using System.Runtime.InteropServices;
using System.Windows;
using System.Diagnostics;
using System.Drawing;
#pragma warning disable CS0649 // 不需要赋值
#pragma warning disable IDE1006 // 不需要赋值
namespace VSoft.Prams
{
public static class c_icon_of_path
public static class C_icon_of_path
{
private struct RECT
{
@ -407,9 +408,8 @@ namespace VSoft.Prams
// Get the System IImageList object from the Shell:
Guid iidImageList = new Guid("46EB5926-582E-4017-9FDF-E8998DAA0950");
IImageList iml;
int size = jumbo ? SHIL_JUMBO : SHIL_EXTRALARGE;
var hres = SHGetImageList(size, ref iidImageList, out iml); // writes iml
SHGetImageList(size, ref iidImageList, out IImageList iml); // writes iml
//if (hres == 0)
//{
// throw (new System.Exception("Error SHGetImageList"));
@ -417,7 +417,7 @@ namespace VSoft.Prams
IntPtr hIcon = IntPtr.Zero;
int ILD_TRANSPARENT = 1;
hres = iml.GetIcon(iconIndex, ILD_TRANSPARENT, ref hIcon);
iml.GetIcon(iconIndex, ILD_TRANSPARENT, ref hIcon);
//if (hres == 0)
//{
// throw (new System.Exception("Error iml.GetIcon"));

View File

@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace DyLine
{
public class ClsMsg
{
[DllImport("user32.dll", EntryPoint = "EnumWindows", SetLastError = true)]
private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, uint lParam);
[DllImport("user32.dll", EntryPoint = "GetParent", SetLastError = true)]
private static extern IntPtr GetParent(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId")]
private static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId);
[DllImport("user32.dll", EntryPoint = "IsWindow")]
private static extern bool IsWindow(IntPtr hWnd);
private const int WM_COPYDATA = 0x004A;
[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cData;
[MarshalAs(UnmanagedType.LPWStr)]
public string lpData;
}
[DllImport("User32.dll", CharSet = CharSet.Unicode, EntryPoint = "SendMessage")]
private static extern int SendMessage(int hwnd, int msg, int wParam, ref COPYDATASTRUCT IParam);
private delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam);
public void SendMsg(int handle, int wParam, string str)
{
byte[] arr = System.Text.Encoding.Unicode.GetBytes(str);
int len = arr.Length;
COPYDATASTRUCT cdata;
cdata.dwData = (IntPtr)100;
cdata.lpData = str;
cdata.cData = (len + 1)*2;
SendMessage(handle, WM_COPYDATA, wParam, ref cdata);
}
readonly string msgText = "";
readonly int _wParam = 0;
//public void SendMsgToryProcess(int wParam,string str)
//{
// IntPtr ptrWnd = IntPtr.Zero;
// Process[] items = Process.GetProcessesByName("ryProcessManager");
// msgText = str;
// _wParam = wParam;
// for (int i = 0; i < items.Length; i++)
// {
// uint uiPid = (uint)items[i].Id; // 进程 ID
// bool bResult = EnumWindows(new WNDENUMPROC(EnumWindowsProc), uiPid);
// }
//}
public void SendMsgToryProcess(int wParam, string str)
{
for (int i = 1; i < 5; i++)
{
object mainHandle =QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(int), "ryProcessManager" + i.ToString());
if (mainHandle != null)
{
SendMsg((int)mainHandle, wParam, str);
break;
}
}
}
public void SendMsgToryProcess(int wParam, string MemoryId, string str)
{
if (MemoryId == null || MemoryId.Length == 0)
{
SendMsgToryProcess(wParam, str);
}
else
{
object mainHandle = QuickMsg.RyMemoryShare.ReadFromMemory(1024, typeof(int), MemoryId);
if (mainHandle != null)
{
SendMsg((int)mainHandle, wParam, str);
}
}
}
public static string GetMsg(Message m)
{
COPYDATASTRUCT cdata = new COPYDATASTRUCT();
Type mytype = cdata.GetType();
cdata = (COPYDATASTRUCT)m.GetLParam(mytype);
return cdata.lpData;
}
private bool EnumWindowsProc(IntPtr hwnd, uint lParam)
{
uint uiPid = 0;
if (GetParent(hwnd) == IntPtr.Zero)
{
GetWindowThreadProcessId(hwnd, ref uiPid);
if (uiPid == lParam) // 找到进程对应的主窗口句柄
{
SendMsg(hwnd.ToInt32(), _wParam, msgText);
//return false; // 返回 false 以终止枚举窗口
}
}
return true;
}
}
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.2412.1001")]
[assembly: AssemblyFileVersion("2.0.2412.1001")]
[assembly: AssemblyVersion("2.0.2509.1101")]
[assembly: AssemblyFileVersion("2.0.2509.1101")]

View File

@ -1,14 +1,16 @@
using System.ComponentModel;
using Newtonsoft.Json.Bson;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Runtime.Serialization;
using System.Windows.Forms;
namespace ryControls
{
public class TabList : ListView
{
private ColumnHeader columnHeader1;
public TabList() :
base()
{
@ -18,6 +20,18 @@ namespace ryControls
this.TileSize = new Size(80,28);
this.Scrollable = false;
this.MultiSelect = false;
this.SelectedIndexChanged += TabList_SelectedIndexChanged;
}
private void TabList_SelectedIndexChanged(object sender, System.EventArgs e)
{
//var selected_index = this.SelectedItems.Count == 0 ? -1 : this.SelectedItems[0].Index;
//if(selected_index>=0)
//{
// if (!this.Bounds.Contains(this.Items[selected_index].Bounds))
// {
// }
//}
}
/// <summary>
@ -47,6 +61,56 @@ namespace ryControls
}
}
}
//private List<TabItem> _Tabs { get; set; } = new List<TabItem>();
//public List<TabItem> Tabs {
// get
// {
// return _Tabs;
// }
// set
// {
// _Tabs = value;
// DrawTabs(false);
// }
//}
//private int TabStartIndex { get; set; } = 0;
//private void DrawTabs(bool clearList=true)
//{
// var selected_index = this.SelectedItems.Count == 0 ? -1 : this.SelectedItems[0].Index;
// if (clearList)
// {
// this.Items.Clear();
// for (int i = TabStartIndex; i < Tabs.Count; i++)
// {
// this.Items.Add(Tabs[i].Text).Tag = Tabs[i];
// }
// }
// else
// {
// for (int i = 0; i < this.Items.Count; i++)
// {
// var tab_index = TabStartIndex + i;
// if (tab_index < Tabs.Count)
// {
// this.Items[i].Text = Tabs[tab_index].Text;
// this.Items[i].Tag = Tabs[tab_index];
// }
// else
// {
// for (int m = this.Items.Count-1; m >=i; m--)
// {
// this.Items.RemoveAt(m);
// }
// break;
// }
// }
// }
// if(selected_index>=0 && this.Items.Count< selected_index)
// {
// this.Items[selected_index].Selected = true;
// }
//}
protected override void OnItemSelectionChanged(ListViewItemSelectionChangedEventArgs e)
{
if(e.IsSelected)
@ -254,26 +318,15 @@ namespace ryControls
return flags;
}
private void InitializeComponent()
{
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.SuspendLayout();
//
// columnHeader1
//
this.columnHeader1.Width = 10;
//
// IconViewEx
//
this.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.LabelWrap = false;
this.ShowItemToolTips = true;
this.TileSize = new System.Drawing.Size(60, 60);
this.View = System.Windows.Forms.View.Tile;
this.ResumeLayout(false);
}
}
[Serializable]
public class TabItem
{
/// <summary>
/// 标题
/// </summary>
public string Text { get; set; } = "";
public int Id { get; set; } = -1;
public object Tag { get; set; } =null;
}
}

View File

@ -100,6 +100,13 @@
<DependentUpon>FrmVSoft.cs</DependentUpon>
</Compile>
<Compile Include="Config\Soft_Info.cs" />
<Compile Include="FrmWinStartView.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmWinStartView.Designer.cs">
<DependentUpon>FrmWinStartView.cs</DependentUpon>
</Compile>
<Compile Include="Prams\clsMsg.cs" />
<Compile Include="Prams\c_icon_of_path.cs" />
<Compile Include="Prams\GlobalMouseHandler.cs" />
<Compile Include="Prams\Json.cs" />
@ -165,6 +172,9 @@
<EmbeddedResource Include="FrmVSoft.resx">
<DependentUpon>FrmVSoft.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmWinStartView.resx">
<DependentUpon>FrmWinStartView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Skins\FrmMessageBox.resx">
<DependentUpon>FrmMessageBox.cs</DependentUpon>
</EmbeddedResource>