## 📅2026-06-04 星期四更新

### RaUI    V4.0.2606.0401
- *.[新增]QuickWeb新增支持重试次数。
- *.[新增]RySetting类新增支持json格式设置存储和获取。
- *.[新增]RySetting类新增支持读取设置到内存,然后按配置名称读取。
- *.[新增]新增SuperFileSearch类,文件查找。
- *.[新增]QuickWeb新增CurPageUrl属性。
- *.[新增]HardWare新增支持获取显示器信息。
- *.[新增]HardWare新增GetWMI函数。
- *.[改进]QuickWeb类的UA从IE改为Edge。
- *.[改进]Hosts类IP与域名分隔符从\t改为三个空格。
- *.[改进]RyImage的CropOrFill函数,如果输入的长宽比例与原图一致,则返回原图的副本而不是原图。
- *.[改进]RySoft类的CompareVer函数支持特殊格式的版本号。
- *.[改进]QuickWeb的ConvertUrl函数新增支持自动从CurPageUrl获取。
- *.[改进]DateDiff函数对时间差异小于等于10秒的,自动加上毫秒数据。
- *.[修复]修复ObjectListView控件的AspectGetter方法可能调用null对象的问题。
- *.[修复]修复日期选择控件在获取节假日数据时,会因为节假日文件夹无法访问而报错的问题。
- *.[修复]修复某些情况下剪切板权限问题导致ObjectListView控件报错。
- *.[修复]修复RyImage的CropOrFill函数图片比例不一致时,也是返回原图副本的BUG。
### Itrycn_Project2    V1.0.2606.0401
- *.[改进]将公共调用,无需新增内容的部分代码,改到Public文件夹下
This commit is contained in:
紫林软件 2026-06-04 09:39:30 +08:00
parent 690d2651f5
commit 7ff45b3074
91 changed files with 6757 additions and 4666 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1758,6 +1758,11 @@
XML
</summary>
</member>
<member name="F:ryCommon.Pram.SettingType.Json">
<summary>
Json
</summary>
</member>
<member name="T:ryCommon.Pram.ObjectItem">
<summary>
对象值
@ -2967,127 +2972,6 @@
全屏平铺
</summary>
</member>
<member name="T:ryCommon.RySetting">
<summary>
设置管理类,快速添加设置。
</summary>
</member>
<member name="M:ryCommon.RySetting.#ctor">
<summary>
设置管理类,快速添加设置。
</summary>
</member>
<member name="M:ryCommon.RySetting.#ctor(System.String)">
<summary>
设置管理类,快速添加设置。
</summary>
<param name="_FilePath"></param>
</member>
<member name="F:ryCommon.RySetting.FileType">
<summary>
存储类型
</summary>
</member>
<member name="F:ryCommon.RySetting.FilePath">
<summary>
配置存储路径
</summary>
</member>
<member name="F:ryCommon.RySetting.SettingXML">
<summary>
设置XML内容
</summary>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.Control)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.String)">
<summary>
设置值
</summary>
<param name="_id"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.Control,ryCommon.Pram.CValueType,System.Object)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="valuetype"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.NumericUpDown,System.Decimal)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.DateTimePicker,System.DateTime)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.CheckBox,System.Boolean)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.ComboBox,System.Int32)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.ComboBox,System.String)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.TextBox,System.String)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Read">
<summary>
读取配置
</summary>
</member>
<member name="M:ryCommon.RySetting.Save">
<summary>
保存配置
</summary>
</member>
<member name="T:ryCommon.SoundPlay">
<summary>
音频播放类
@ -3639,6 +3523,142 @@
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch">
<summary>
超级文件搜索
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.CancelActions">
<summary>
取消选项
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.No">
<summary>
不取消,继续
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.CurrentDirectory">
<summary>
只取消当前目录
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.AllDirectories">
<summary>
取消后面的所有搜索
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.Cancel">
<summary>
是否取消
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchFileHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="Fileinfo"></param>
<param name="AddToResult">是否将该文件添加到结果</param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnSearchFile">
<summary>
搜索文件事件
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchDirHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="DirInfo"></param>
<param name="Cancel"></param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnSearchDir">
<summary>
搜索目录事件
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchErrorHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="id"></param>
<param name="ex"></param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnError">
<summary>
错误事件
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.GetSubFolder">
<summary>
是否查找搜索子目录
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.ResultFiles">
<summary>
查找发现的文件列表
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.ResultDirs">
<summary>
查找发现的目录列表
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultFilesCount">
<summary>
结果对应的文件数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultDirsCount">
<summary>
结果对应的目录数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultCount">
<summary>
结果对应的文件+目录数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.Tag">
<summary>
</summary>
</member>
<member name="M:ryCommon.SuperFileSearch.Search(System.String,System.String)">
<summary>
搜索查找文件
</summary>
<param name="SearchPath"></param>
<param name="SearchExts"></param>
</member>
<member name="M:ryCommon.SuperFileSearch.Search(System.Collections.Generic.List{System.String},System.String)">
<summary>
搜索查找文件
</summary>
<param name="SearchPaths"></param>
<param name="SearchExts"></param>
</member>
<member name="M:ryCommon.SuperFileSearch.GetFiles(System.String,System.String,System.Boolean)">
<summary>
获取指定文件夹下的文件列表,支持多个扩展名获取,支持获取子文件夹的数据
</summary>
<param name="folder"></param>
<param name="exts"></param>
<param name="GetSubFolder">是否获取子文件夹数据</param>
<returns></returns>
</member>
<member name="M:ryCommon.SuperFileSearch.GetFiles(System.String,System.String)">
<summary>
获取指定文件夹下的文件列表,支持多个扩展名获取(子文件夹里的文件不会去获取)。如果
文件夹不存在,则获取空列表(本函数不会返回null值)
</summary>
<param name="folder">要获取的文件夹路径</param>
<param name="exts">要获取的扩展名列表(例如:*.mp3;*.wav)</param>
<returns></returns>
</member>
<member name="T:ryCommon.TxtFileEncoder">
<summary>
用于取得一个文本文件的编码方式(Encoding)。
@ -6276,6 +6296,11 @@
<param name="filePath">文件路径</param>
<param name="iconPath">图标路径</param>
</member>
<member name="M:ryCommon.RyRegedit.UpdateSetNotify">
<summary>
通知系统设置发生变化
</summary>
</member>
<member name="M:ryCommon.RyRegedit.SetFileAssociation(System.String,System.String,System.String,System.String,System.String)">
<summary>
设置文件关联
@ -10034,6 +10059,14 @@
<param name="showChsName">是否显示中文名字</param>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetWMI(System.String,System.String)">
<summary>
</summary>
<param name="scope"></param>
<param name="sql"></param>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetCpuId">
<summary>
获取CPU ID
@ -10052,6 +10085,12 @@
</summary>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetMonitorPnpDeviceId">
<summary>
获取显示器的相关硬件ID
</summary>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetMainHardware(System.Boolean)">
<summary>
获取主要硬件信息
@ -12887,6 +12926,11 @@
</summary>
<returns></returns>
</member>
<member name="P:ryCommonDb.IDbInterface.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.MSSQLDb">
<summary>
@ -13281,6 +13325,11 @@
</summary>
</member>
<member name="P:ryCommonDb.SqlDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.ClsMySQLDb">
<summary>
@ -13675,6 +13724,11 @@
</summary>
</member>
<member name="P:ryCommonDb.MySqlDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.SQLIitem">
<summary>
SQL字段类型
@ -14368,6 +14422,11 @@
</summary>
</member>
<member name="P:ryCommonDb.SQLiteDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:OneKeyCreate.FrmAddNoticeUser">
<summary>
@ -15034,12 +15093,24 @@
</summary>
</member>
<member name="P:RyWeb.QuickWeb.CurPageUrl">
<summary>
当前页面
</summary>
</member>
<member name="M:RyWeb.QuickWeb.#ctor(System.Int32)">
<summary>
</summary>
<param name="Timeout">超时时间</param>
</member>
<member name="M:RyWeb.QuickWeb.#ctor(System.Int32,System.Int32)">
<summary>
</summary>
<param name="Timeout">超时时间</param>
<param name="RetryCount">重试次数</param>
</member>
<member name="M:RyWeb.QuickWeb.Post(System.String,System.String,System.String)">
<summary>
以post方式获取网页源码
@ -15075,6 +15146,11 @@
<param name="post"></param>
<returns></returns>
</member>
<member name="P:RyWeb.QuickWeb.RetryCount">
<summary>
重试次数
</summary>
</member>
<member name="P:RyWeb.QuickWeb.HeadText">
<summary>
头信息
@ -15219,6 +15295,13 @@
<param name="str"></param>
<returns></returns>
</member>
<member name="M:RyWeb.QuickWeb.ConvertUrl(System.String)">
<summary>
将相对网址转换成绝对网址
</summary>
<param name="rel_url"></param>
<returns></returns>
</member>
<member name="M:RyWeb.QuickWeb.ConvertUrl(System.String,System.String)">
<summary>
将相对网址转换成绝对网址
@ -24090,16 +24173,21 @@
存储类型
</summary>
</member>
<member name="F:ryControls.RySetting.FilePath">
<member name="P:ryControls.RySetting.FilePath">
<summary>
配置存储路径
</summary>
</member>
<member name="F:ryControls.RySetting.SettingXML">
<member name="P:ryControls.RySetting.SettingXML">
<summary>
设置XML内容
</summary>
</member>
<member name="P:ryControls.RySetting.SettingContent">
<summary>
获取/设置配置的内容(适用于xml和json)
</summary>
</member>
<member name="M:ryControls.RySetting.Add(System.String,System.Windows.Forms.Control)">
<summary>
添加控件
@ -24217,6 +24305,81 @@
保存配置
</summary>
</member>
<member name="P:ryControls.RySetting.MemObject">
<summary>
保存到内存中的对象
</summary>
</member>
<member name="M:ryControls.RySetting.ReadToMem">
<summary>
读取内容到内存中
</summary>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int32)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int64)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Boolean)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Double)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Decimal)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.String)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int32,System.Int32,System.Int32)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="min"></param>
<param name="max"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryControls.ColorHSL">
<summary>
类 名:ColorHSL

View File

@ -1758,6 +1758,11 @@
XML
</summary>
</member>
<member name="F:ryCommon.Pram.SettingType.Json">
<summary>
Json
</summary>
</member>
<member name="T:ryCommon.Pram.ObjectItem">
<summary>
对象值
@ -2967,127 +2972,6 @@
全屏平铺
</summary>
</member>
<member name="T:ryCommon.RySetting">
<summary>
设置管理类,快速添加设置。
</summary>
</member>
<member name="M:ryCommon.RySetting.#ctor">
<summary>
设置管理类,快速添加设置。
</summary>
</member>
<member name="M:ryCommon.RySetting.#ctor(System.String)">
<summary>
设置管理类,快速添加设置。
</summary>
<param name="_FilePath"></param>
</member>
<member name="F:ryCommon.RySetting.FileType">
<summary>
存储类型
</summary>
</member>
<member name="F:ryCommon.RySetting.FilePath">
<summary>
配置存储路径
</summary>
</member>
<member name="F:ryCommon.RySetting.SettingXML">
<summary>
设置XML内容
</summary>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.Control)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.String)">
<summary>
设置值
</summary>
<param name="_id"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.Control,ryCommon.Pram.CValueType,System.Object)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="valuetype"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.NumericUpDown,System.Decimal)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.DateTimePicker,System.DateTime)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.CheckBox,System.Boolean)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.ComboBox,System.Int32)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.ComboBox,System.String)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Add(System.String,System.Windows.Forms.TextBox,System.String)">
<summary>
添加控件
</summary>
<param name="_id"></param>
<param name="ctl"></param>
<param name="_defValue"></param>
<returns></returns>
</member>
<member name="M:ryCommon.RySetting.Read">
<summary>
读取配置
</summary>
</member>
<member name="M:ryCommon.RySetting.Save">
<summary>
保存配置
</summary>
</member>
<member name="T:ryCommon.SoundPlay">
<summary>
音频播放类
@ -3639,6 +3523,142 @@
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch">
<summary>
超级文件搜索
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.CancelActions">
<summary>
取消选项
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.No">
<summary>
不取消,继续
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.CurrentDirectory">
<summary>
只取消当前目录
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.CancelActions.AllDirectories">
<summary>
取消后面的所有搜索
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.Cancel">
<summary>
是否取消
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchFileHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="Fileinfo"></param>
<param name="AddToResult">是否将该文件添加到结果</param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnSearchFile">
<summary>
搜索文件事件
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchDirHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="DirInfo"></param>
<param name="Cancel"></param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnSearchDir">
<summary>
搜索目录事件
</summary>
</member>
<member name="T:ryCommon.SuperFileSearch.SearchErrorHandler">
<summary>
</summary>
<param name="sender"></param>
<param name="id"></param>
<param name="ex"></param>
</member>
<member name="E:ryCommon.SuperFileSearch.OnError">
<summary>
错误事件
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.GetSubFolder">
<summary>
是否查找搜索子目录
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.ResultFiles">
<summary>
查找发现的文件列表
</summary>
</member>
<member name="F:ryCommon.SuperFileSearch.ResultDirs">
<summary>
查找发现的目录列表
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultFilesCount">
<summary>
结果对应的文件数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultDirsCount">
<summary>
结果对应的目录数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.ResultCount">
<summary>
结果对应的文件+目录数量
</summary>
</member>
<member name="P:ryCommon.SuperFileSearch.Tag">
<summary>
</summary>
</member>
<member name="M:ryCommon.SuperFileSearch.Search(System.String,System.String)">
<summary>
搜索查找文件
</summary>
<param name="SearchPath"></param>
<param name="SearchExts"></param>
</member>
<member name="M:ryCommon.SuperFileSearch.Search(System.Collections.Generic.List{System.String},System.String)">
<summary>
搜索查找文件
</summary>
<param name="SearchPaths"></param>
<param name="SearchExts"></param>
</member>
<member name="M:ryCommon.SuperFileSearch.GetFiles(System.String,System.String,System.Boolean)">
<summary>
获取指定文件夹下的文件列表,支持多个扩展名获取,支持获取子文件夹的数据
</summary>
<param name="folder"></param>
<param name="exts"></param>
<param name="GetSubFolder">是否获取子文件夹数据</param>
<returns></returns>
</member>
<member name="M:ryCommon.SuperFileSearch.GetFiles(System.String,System.String)">
<summary>
获取指定文件夹下的文件列表,支持多个扩展名获取(子文件夹里的文件不会去获取)。如果
文件夹不存在,则获取空列表(本函数不会返回null值)
</summary>
<param name="folder">要获取的文件夹路径</param>
<param name="exts">要获取的扩展名列表(例如:*.mp3;*.wav)</param>
<returns></returns>
</member>
<member name="T:ryCommon.TxtFileEncoder">
<summary>
用于取得一个文本文件的编码方式(Encoding)。
@ -6276,6 +6296,11 @@
<param name="filePath">文件路径</param>
<param name="iconPath">图标路径</param>
</member>
<member name="M:ryCommon.RyRegedit.UpdateSetNotify">
<summary>
通知系统设置发生变化
</summary>
</member>
<member name="M:ryCommon.RyRegedit.SetFileAssociation(System.String,System.String,System.String,System.String,System.String)">
<summary>
设置文件关联
@ -10034,6 +10059,14 @@
<param name="showChsName">是否显示中文名字</param>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetWMI(System.String,System.String)">
<summary>
</summary>
<param name="scope"></param>
<param name="sql"></param>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetCpuId">
<summary>
获取CPU ID
@ -10052,6 +10085,12 @@
</summary>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetMonitorPnpDeviceId">
<summary>
获取显示器的相关硬件ID
</summary>
<returns></returns>
</member>
<member name="M:RyHardWare.HardWare.GetMainHardware(System.Boolean)">
<summary>
获取主要硬件信息
@ -12887,6 +12926,11 @@
</summary>
<returns></returns>
</member>
<member name="P:ryCommonDb.IDbInterface.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.MSSQLDb">
<summary>
@ -13281,6 +13325,11 @@
</summary>
</member>
<member name="P:ryCommonDb.SqlDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.ClsMySQLDb">
<summary>
@ -13675,6 +13724,11 @@
</summary>
</member>
<member name="P:ryCommonDb.MySqlDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:ryCommonDb.SQLIitem">
<summary>
SQL字段类型
@ -14368,6 +14422,11 @@
</summary>
</member>
<member name="P:ryCommonDb.SQLiteDataProvider.UseTime">
<summary>
用时
</summary>
</member>
<member name="T:OneKeyCreate.FrmAddNoticeUser">
<summary>
@ -15034,12 +15093,24 @@
</summary>
</member>
<member name="P:RyWeb.QuickWeb.CurPageUrl">
<summary>
当前页面
</summary>
</member>
<member name="M:RyWeb.QuickWeb.#ctor(System.Int32)">
<summary>
</summary>
<param name="Timeout">超时时间</param>
</member>
<member name="M:RyWeb.QuickWeb.#ctor(System.Int32,System.Int32)">
<summary>
</summary>
<param name="Timeout">超时时间</param>
<param name="RetryCount">重试次数</param>
</member>
<member name="M:RyWeb.QuickWeb.Post(System.String,System.String,System.String)">
<summary>
以post方式获取网页源码
@ -15075,6 +15146,11 @@
<param name="post"></param>
<returns></returns>
</member>
<member name="P:RyWeb.QuickWeb.RetryCount">
<summary>
重试次数
</summary>
</member>
<member name="P:RyWeb.QuickWeb.HeadText">
<summary>
头信息
@ -15219,6 +15295,13 @@
<param name="str"></param>
<returns></returns>
</member>
<member name="M:RyWeb.QuickWeb.ConvertUrl(System.String)">
<summary>
将相对网址转换成绝对网址
</summary>
<param name="rel_url"></param>
<returns></returns>
</member>
<member name="M:RyWeb.QuickWeb.ConvertUrl(System.String,System.String)">
<summary>
将相对网址转换成绝对网址
@ -24090,16 +24173,21 @@
存储类型
</summary>
</member>
<member name="F:ryControls.RySetting.FilePath">
<member name="P:ryControls.RySetting.FilePath">
<summary>
配置存储路径
</summary>
</member>
<member name="F:ryControls.RySetting.SettingXML">
<member name="P:ryControls.RySetting.SettingXML">
<summary>
设置XML内容
</summary>
</member>
<member name="P:ryControls.RySetting.SettingContent">
<summary>
获取/设置配置的内容(适用于xml和json)
</summary>
</member>
<member name="M:ryControls.RySetting.Add(System.String,System.Windows.Forms.Control)">
<summary>
添加控件
@ -24217,6 +24305,81 @@
保存配置
</summary>
</member>
<member name="P:ryControls.RySetting.MemObject">
<summary>
保存到内存中的对象
</summary>
</member>
<member name="M:ryControls.RySetting.ReadToMem">
<summary>
读取内容到内存中
</summary>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int32)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int64)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Boolean)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Double)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Decimal)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.String)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:ryControls.RySetting.GetFromMem(System.String,System.Int32,System.Int32,System.Int32)">
<summary>
从内存中读取配置
</summary>
<param name="name"></param>
<param name="min"></param>
<param name="max"></param>
<param name="defValue"></param>
<returns></returns>
</member>
<member name="T:ryControls.ColorHSL">
<summary>
类 名:ColorHSL

View File

@ -1,9 +1,35 @@
## :date:2025-08-16 星期六更新
## :date:2026-06-04 星期四更新
### RaUI V4.0.2606.0401
- :cactus:[新增]QuickWeb新增支持重试次数。
- :cactus:[新增]RySetting类新增支持json格式设置存储和获取。
- :cactus:[新增]RySetting类新增支持读取设置到内存,然后按配置名称读取。
- :cactus:[新增]新增SuperFileSearch类,文件查找。
- :cactus:[新增]QuickWeb新增CurPageUrl属性。
- :cactus:[新增]HardWare新增支持获取显示器信息。
- :cactus:[新增]HardWare新增GetWMI函数。
- :100:[改进]QuickWeb类的UA从IE改为Edge。
- :100:[改进]Hosts类IP与域名分隔符从\t改为三个空格。
- :100:[改进]RyImage的CropOrFill函数,如果输入的长宽比例与原图一致,则返回原图的副本而不是原图。
- :100:[改进]RySoft类的CompareVer函数支持特殊格式的版本号。
- :100:[改进]QuickWeb的ConvertUrl函数新增支持自动从CurPageUrl获取。
- :100:[改进]DateDiff函数对时间差异小于等于10秒的,自动加上毫秒数据。
- :lady_beetle:[修复]修复ObjectListView控件的AspectGetter方法可能调用null对象的问题。
- :lady_beetle:[修复]修复日期选择控件在获取节假日数据时,会因为节假日文件夹无法访问而报错的问题。
- :lady_beetle:[修复]修复某些情况下剪切板权限问题导致ObjectListView控件报错。
- :lady_beetle:[修复]修复RyImage的CropOrFill函数图片比例不一致时也是返回原图副本的BUG。
### Itrycn_Project2 V1.0.2606.0401
- :100:[改进]将公共调用,无需新增内容的部分代码,改到Public文件夹下
## :date:2025-08-16 星期六更新
### rycUpdate V1.0.2506.0401
- :lady_beetle:[修复]修复文件替换失败,不会失败提示的BUG。
### RaUI V4.0.2508.1601
- :cactus:[新增]ChromeTabControl控件支持设置SizeMode属性。
- :cactus:[新增]HotkeyTextBox新增支持传入热键文本进行自动转换。
- :cactus:[新增]ryQuickSQL类新增GetJsonData方法。
@ -20,6 +46,7 @@
## :date:2025-06-27 星期五更新
### RaUI V4.0.2506.2701
- :cactus:[新增]RediskCheck类新增支持对.NET3.5和.NET6-.NET9安装状态的判断。
- :cactus:[新增]RyImage类的LoadPic方法新增Timeout参数设置。
- :cactus:[新增]ChromeTabControl控件新增OnTabAddButtonClick和OnTabCloseButtonClick事件。

View File

@ -1,3 +1,23 @@
## 睿元公用控件组
睿元公用控件组是一款公用的多功能控件组,集成了通用数据库操作类,并提供了各种常用功能的API接口,让代码编写更容易。
#### Itrycn_Project2
毕方项目模板,新建项目时,可以以本项目为底层,快速创建新项目。
#### OnLineUpgradeConfig
一键升级配置程序,利用本程序,可以快速设置升级配置。
#### RaUIV4
公共控件和API库将常用的API方法和控件集中在一个dll文件里方便调用。
#### rycUpdate
升级替换工具,本工具主要用于升级过程中替换文件。
#### SkinPreview
皮肤预览和设置程序,利用本程序,可以预览和新增皮肤。

View File

@ -1,10 +1,12 @@
using System;
using Config;
using Itrycn_Project2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Itrycn_Project2.Config
namespace Config
{
class Init
{
@ -23,8 +25,6 @@ namespace Itrycn_Project2.Config
{
Public_Config.LoadSetting();
Application.Run(new FrmStart(args));
//Application.Run(new FrmTest2());
//Application.Run(new WindowsFormsApp2.Form1());
}
}
}

View File

@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Itrycn_Project2
namespace Config
{
/// <summary>
/// 配置类,保存在文件中的配置信息(本系统基于乘黄V2架构)
@ -16,10 +16,10 @@ namespace Itrycn_Project2
public static bool HideByCloseBtn = false;
public static void LoadSetting()
{
ryCommon.Storage Stor = new ryCommon.Storage();
Stor.LoadFromFile(Soft_ConstInfo.UserDataFolder+"\\Setting.xml");
Stor.SelectNodeBySet();
HideByCloseBtn = Stor.GetAttrValue("HideByCloseBtn", false);
ryControls.RySetting mySetting = new ryControls.RySetting();
mySetting.FilePath = Soft_ConstInfo.UserDataFolder + "\\Setting.xml";
mySetting.ReadToMem();
HideByCloseBtn = mySetting.GetFromMem("HideByCloseBtn", false);
//low_count = Stor.GetAttrValue("LowCount", 10);
}
}

View File

@ -5,7 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Itrycn_Project2
namespace Config
{
/// <summary>
/// 运行期间存储的变量,不会存储在文件中,只存储内存中.每次启动软件会初始化变量。

View File

@ -1,120 +0,0 @@
<?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>
</root>

View File

@ -1,59 +0,0 @@
namespace Itrycn_Project2
{
partial class Form1
{
/// <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.chinaCalendar1 = new ryControls.FhChinaCalendar();
this.SuspendLayout();
//
// chinaCalendar1
//
this.chinaCalendar1.BackColor = System.Drawing.Color.White;
this.chinaCalendar1.DateTime = new System.DateTime(2022, 6, 8, 16, 4, 14, 729);
this.chinaCalendar1.Location = new System.Drawing.Point(-1, -2);
this.chinaCalendar1.Name = "chinaCalendar1";
this.chinaCalendar1.Size = new System.Drawing.Size(801, 451);
this.chinaCalendar1.TabIndex = 0;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.chinaCalendar1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private ryControls.FhChinaCalendar chinaCalendar1;
}
}

View File

@ -1,20 +0,0 @@
using RaUI.UI.LayeredForm;
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;
namespace Itrycn_Project2
{
public partial class Form1 : ILayeredForm
{
public Form1()
{
InitializeComponent();
}
}
}

View File

@ -1,60 +0,0 @@
namespace Itrycn_Project2
{
partial class FormTest
{
/// <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.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(43, 75);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(363, 108);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// FormTest
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(483, 422);
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Controls.Add(this.button1);
this.Name = "FormTest";
this.Text = "FormTest";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
}
}

View File

@ -1,22 +0,0 @@
using RaUI.UI.LayeredForm;
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;
namespace Itrycn_Project2
{
public partial class FormTest : ILayeredForm
{
public FormTest()
{
InitializeComponent();
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using Config;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;

View File

@ -44,27 +44,15 @@
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.chromeTabControl1 = new ryControls.ChromeTabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.textBoxEx21 = new ryControls.TextBoxEx2();
this.buttonEx1 = new ryControls.ButtonEx();
this.hotkeyTextBox1 = new ryControls.HotkeyTextBox();
this.rySearch1 = new ryControls.rySearch();
this.doubleText1 = new ryControls.DoubleText();
this.ryComboBox1 = new ryControls.ComboBoxEx2();
this.textBoxEx1 = new ryControls.TextBoxEx();
this.richTextBox21 = new ryControls.Controls.RichTextBox2();
this.htmlPanel1 = new TheArtOfDev.HtmlRenderer.WinForms.HtmlPanel();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.TabLogs = new System.Windows.Forms.TabPage();
this.LvLogs = new BrightIdeasSoftware.ObjectListView();
this.OlvLogTime = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.OlvLogText = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.CbbInterval = new ryControls.RyComboBox();
this.MenuTray.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.chromeTabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.TabLogs.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.LvLogs)).BeginInit();
this.SuspendLayout();
@ -173,17 +161,7 @@
// tabPage1
//
this.tabPage1.AutoScroll = true;
this.tabPage1.Controls.Add(this.textBoxEx21);
this.tabPage1.Controls.Add(this.buttonEx1);
this.tabPage1.Controls.Add(this.hotkeyTextBox1);
this.tabPage1.Controls.Add(this.rySearch1);
this.tabPage1.Controls.Add(this.doubleText1);
this.tabPage1.Controls.Add(this.ryComboBox1);
this.tabPage1.Controls.Add(this.textBoxEx1);
this.tabPage1.Controls.Add(this.richTextBox21);
this.tabPage1.Controls.Add(this.htmlPanel1);
this.tabPage1.Controls.Add(this.pictureBox2);
this.tabPage1.Controls.Add(this.pictureBox1);
this.tabPage1.Controls.Add(this.CbbInterval);
this.tabPage1.Location = new System.Drawing.Point(1, 29);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
@ -192,143 +170,6 @@
this.tabPage1.Text = "首页";
this.tabPage1.UseVisualStyleBackColor = true;
//
// textBoxEx21
//
this.textBoxEx21.BackColor = System.Drawing.Color.White;
this.textBoxEx21.EmptyText = "fggzgftgg ";
this.textBoxEx21.Location = new System.Drawing.Point(161, 30);
this.textBoxEx21.LongTime = 2000;
this.textBoxEx21.MaxLength = 999999999;
this.textBoxEx21.MaxUndoRedoSteps = 50;
this.textBoxEx21.Multiline = true;
this.textBoxEx21.Name = "textBoxEx21";
this.textBoxEx21.OnlyNumeric = false;
this.textBoxEx21.PasswordChar = '\0';
this.textBoxEx21.ReadOnly = false;
this.textBoxEx21.SelectedText = "";
this.textBoxEx21.SelectionLength = 0;
this.textBoxEx21.SelectionStart = 0;
this.textBoxEx21.Size = new System.Drawing.Size(339, 179);
this.textBoxEx21.TabIndex = 31;
this.textBoxEx21.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.textBoxEx21.ToolTip = "";
this.textBoxEx21.WordWrap = true;
//
// buttonEx1
//
this.buttonEx1.BackColor = System.Drawing.Color.Gray;
this.buttonEx1.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95)))));
this.buttonEx1.ImageTextSpace = 0;
this.buttonEx1.ImageWidth = 12;
this.buttonEx1.Location = new System.Drawing.Point(180, 153);
this.buttonEx1.Name = "buttonEx1";
this.buttonEx1.Size = new System.Drawing.Size(61, 27);
this.buttonEx1.TabIndex = 30;
this.buttonEx1.Text = "测试";
this.buttonEx1.UseVisualStyleBackColor = false;
//
// hotkeyTextBox1
//
this.hotkeyTextBox1.BackColor = System.Drawing.Color.White;
this.hotkeyTextBox1.HotKey = "0+0";
this.hotkeyTextBox1.Location = new System.Drawing.Point(161, 215);
this.hotkeyTextBox1.Name = "hotkeyTextBox1";
this.hotkeyTextBox1.Size = new System.Drawing.Size(220, 27);
this.hotkeyTextBox1.T_Key = System.Windows.Forms.Keys.None;
this.hotkeyTextBox1.T_Modifiers = 0;
this.hotkeyTextBox1.TabIndex = 29;
//
// rySearch1
//
this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244)))));
this.rySearch1.ButtonRoundBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244)))));
this.rySearch1.EmptyText = "dd顶顶顶顶顶";
this.rySearch1.Location = new System.Drawing.Point(564, 296);
this.rySearch1.Name = "rySearch1";
this.rySearch1.Size = new System.Drawing.Size(225, 28);
this.rySearch1.TabIndex = 27;
//
// doubleText1
//
this.doubleText1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244)))));
this.doubleText1.Location = new System.Drawing.Point(141, 265);
this.doubleText1.Name = "doubleText1";
this.doubleText1.SelectName = "";
this.doubleText1.Size = new System.Drawing.Size(240, 27);
this.doubleText1.TabIndex = 26;
//
// ryComboBox1
//
this.ryComboBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244)))));
this.ryComboBox1.ButtonRoundBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244)))));
this.ryComboBox1.EmptyText = "";
this.ryComboBox1.Items.Add("fffffsss手上但事实上少时诵诗书是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒是撒");
this.ryComboBox1.Items.Add("gggg");
this.ryComboBox1.Items.Add("ddddd");
this.ryComboBox1.Items.Add("ddd");
this.ryComboBox1.Location = new System.Drawing.Point(746, 228);
this.ryComboBox1.MaxPopupHeight = 0;
this.ryComboBox1.MaxPopupWidth = 0;
this.ryComboBox1.Name = "ryComboBox1";
this.ryComboBox1.SelectedIndex = -1;
this.ryComboBox1.SelectedItem = null;
this.ryComboBox1.Size = new System.Drawing.Size(238, 36);
this.ryComboBox1.TabIndex = 25;
this.ryComboBox1.ToolTipText = "";
//
// textBoxEx1
//
this.textBoxEx1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxEx1.EmptyText = "这是一个测试,请查看";
this.textBoxEx1.Location = new System.Drawing.Point(130, 117);
this.textBoxEx1.MaxUndoRedoSteps = 50;
this.textBoxEx1.Name = "textBoxEx1";
this.textBoxEx1.OnlyNumeric = false;
this.textBoxEx1.Size = new System.Drawing.Size(202, 21);
this.textBoxEx1.TabIndex = 23;
//
// richTextBox21
//
this.richTextBox21.EmptyText = "";
this.richTextBox21.Font = new System.Drawing.Font("Courier New", 10F);
this.richTextBox21.Location = new System.Drawing.Point(417, 26);
this.richTextBox21.Name = "richTextBox21";
this.richTextBox21.OnlyInputText = false;
this.richTextBox21.Size = new System.Drawing.Size(359, 266);
this.richTextBox21.TabIndex = 21;
this.richTextBox21.Text = "怪兽公主是一款充满日系风情的女友养成游戏。在游戏中,玩家将迎来一位怪兽公主的到来,展开一段独特而甜蜜的同居生活。玩家们可以通过与怪兽公主互动,选择不同的故事线路," +
"赢得道具和奖励,培养她的感情,解锁不同的结局。这款游戏将带给你与怪兽公主共度时光的乐趣与刺激。";
this.richTextBox21.WordWrap = true;
//
// htmlPanel1
//
this.htmlPanel1.AutoScroll = true;
this.htmlPanel1.AutoScrollMinSize = new System.Drawing.Size(469, 20);
this.htmlPanel1.BackColor = System.Drawing.SystemColors.Window;
this.htmlPanel1.BaseStylesheet = null;
this.htmlPanel1.Location = new System.Drawing.Point(188, 346);
this.htmlPanel1.Name = "htmlPanel1";
this.htmlPanel1.Size = new System.Drawing.Size(469, 160);
this.htmlPanel1.TabIndex = 19;
this.htmlPanel1.Text = "htmlPanel1";
//
// pictureBox2
//
this.pictureBox2.Location = new System.Drawing.Point(172, 330);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(518, 189);
this.pictureBox2.TabIndex = 18;
this.pictureBox2.TabStop = false;
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(75, 3);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(742, 625);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// TabLogs
//
this.TabLogs.Controls.Add(this.LvLogs);
@ -371,6 +212,19 @@
this.OlvLogText.Text = "日志说明";
this.OlvLogText.Width = 500;
//
// CbbInterval
//
this.CbbInterval.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
this.CbbInterval.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CbbInterval.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CbbInterval.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.CbbInterval.FormattingEnabled = true;
this.CbbInterval.Location = new System.Drawing.Point(427, 305);
this.CbbInterval.MaxUndoRedoSteps = 50;
this.CbbInterval.Name = "CbbInterval";
this.CbbInterval.Size = new System.Drawing.Size(149, 24);
this.CbbInterval.TabIndex = 64;
//
// FrmStart
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -393,9 +247,6 @@
this.menuStrip1.PerformLayout();
this.chromeTabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.TabLogs.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.LvLogs)).EndInit();
this.ResumeLayout(false);
@ -420,16 +271,6 @@
private BrightIdeasSoftware.ObjectListView LvLogs;
private BrightIdeasSoftware.OLVColumn OlvLogTime;
private BrightIdeasSoftware.OLVColumn OlvLogText;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private TheArtOfDev.HtmlRenderer.WinForms.HtmlPanel htmlPanel1;
private ryControls.Controls.RichTextBox2 richTextBox21;
private ryControls.TextBoxEx textBoxEx1;
private ryControls.ComboBoxEx2 ryComboBox1;
private ryControls.DoubleText doubleText1;
private ryControls.rySearch rySearch1;
private ryControls.HotkeyTextBox hotkeyTextBox1;
private ryControls.ButtonEx buttonEx1;
private ryControls.TextBoxEx2 textBoxEx21;
private ryControls.RyComboBox CbbInterval;
}
}

File diff suppressed because one or more lines are too long

View File

@ -119,6 +119,7 @@
this.chromeTabControl1.Controls.Add(this.tabPage1);
this.chromeTabControl1.Controls.Add(this.tabPage2);
this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default;
this.chromeTabControl1.DrawTabBorder = true;
this.chromeTabControl1.ImageList = this.imageList1;
this.chromeTabControl1.ItemSize = new System.Drawing.Size(200, 25);
this.chromeTabControl1.Location = new System.Drawing.Point(12, 34);
@ -127,7 +128,6 @@
this.chromeTabControl1.ShowAddButton = true;
this.chromeTabControl1.ShowCloseButton = true;
this.chromeTabControl1.Size = new System.Drawing.Size(656, 320);
this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.chromeTabControl1.TabContextMenuStrip = null;
this.chromeTabControl1.TabIndex = 38;
this.chromeTabControl1.TabMaxWidth = 200;

View File

@ -124,117 +124,117 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABm
HgAAAk1TRnQBSQFMAgEBBAEAASABAAEgAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk
HgAAAk1TRnQBSQFMAgEBBAEAATABAAEwAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEgBgABIP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AIgABOgF8Af0B/wEx
AXsB+gH/ATMBeAH6Af8BMgF8AfwB/wEzAX4B+wH/ATgBfAH6Af8BNQF8AfwB/wE0AXsB/AH/ATQBewH8
Af8BNQF8AfwB/wE2AX0B/QH/ATQBewH9Af8BMAF+AfcB/wE0AXkB+QH/AVIBigH5Af8B2QHlAfgB/wMW
AR0BUgFeAWgBwQEcAXsBzQH2ARkBfAHaAfgBGgF8AdoB+AEZAXwB2gH4ARkBfAHaAfgBGQF8AdoB+AEZ
AXwB2gH4ARkBfAHaAfgBGQF8AdoB+AEZAX0B2gH4ARoBfgHaAfgBGgF6AdoB+AFBAWwBnQHmAzwBZgFl
AR0BVwFcAV4BwQElAXkBvgH2AR8BfAHMAfgBIAF8AcwB+AEfAXwBzAH4AR8BfAHMAfgBHwF8AcwB+AEf
AXwBzAH4AR8BfAHMAfgBHwF8AcwB+AEfAXwBzAH4ASABfAHMAfgBIAF6AcwB+AFOAWoBiwHmAzwBZgFl
AbcBKQH/AWgBuAErAf8BagG5ASoB/wFoAbYBKwH/AWYBuAErAf8BZQG5AS0B/wFlAbgBJgH/AWgBtgEt
Af8BYwG5ASoB/wFlAbkBKgH/AW0BtwEtAf8BZgG4ASwB/wFmAboBKAH/AWUBugEqAf8BYgG3ASgB/wFp
AbgBKwX/AfwC/QH/AfoB/wH+Af8B/QH+AfoB/wH2AvwB/wL+AfsC/wL+Af8B+wL9Af8B/gH7Af0B/wH9
Af4B/AH/Af4B/wH+Af8B/AH/AfwC/wH8Av8B+wH+AfsB/wL9Av8B/QH+Af0B/wE0AXgB+wH/ATMBeQH6
Af8BPQF4Av8BQAF0AfsB/wEzAXIB+AH/ATQBeAL/ATgBdgH+Af8BNwF1Af0B/wE3AXUB/QH/ATcBdQH9
Af8BNwF1Af0B/wE4AXcB/AH/AT4BcwL/ATQBeQH+Af8BJwFyAv8BUgGMAfkB/wFVAWEBbQHIAQEBiQL/
Af8BNwF1Af0B/wE4AXcB/AH/AT4BcwL/ATQBeQH+Af8BJwFyAv8BUgGMAfkB/wFbAV8BZAHIAQEBiQL/
AQEBfgL/AQEBlAL/AQABkQL/AQMBjQL/AU0BowH1Af8BhQG8Ae0B/wGUAcMB6gH/AWQBqQHxAf8BCgF1
Af4B/wEAAWQC/wEBAWsC/wEBAZAC/wEBAZEC/wEvAXcBsgHvAWgBugErAf8BZwG3AS8B/wFiAbcBJQH/
Af4B/wEAAWQC/wEBAWsC/wEBAZAC/wEBAZEC/wE6AXMBnwHvAWgBugErAf8BZwG3AS8B/wFiAbcBJQH/
AWYBuQEsAf8BYwG1ASwB/wFiAbcBIwH/AWABtAEgAf8BWwG0ARkB/wFeAb0BGAH/AWcBuAEwAf8BawGy
ASwB/wFpAbgBKQH/AWkBuAEpAf8BagG5ASgB/wFnAbcBKAH/AWQBuQEsAf8B0QHvAv8BZgHRAf4B/wFu
AdUB/AH/AXkB1QH+Af8BcQHdAv8BawHVAf4B/wFxAd0B/AH/AfMB+gH+Av8B/gL/Aa0B6wH9Af8BZAHW
AfsB/wFwAdcC/wFxAdUC/wFtAdkC/wFvAdUC/wGaAeEB/AH/AUMBcwH3Af8BNgFyAfoB/wE7AXIB/QH/
ATcBdAH5Af8BMgFyAfwB/wEwAWkB/QH/AS4BawH8Af8BLwFsAfwB/wEvAWwB/QH/ATABbQH9Af8BLwFs
Af0B/wE0AXUB+wH/AToBcwH7Af8BOAF1AfkB/wEwAXMB+wH/ATcBcAH8Af8BJgGHAcMB8wEBAY8C/wEB
Af0B/wE0AXUB+wH/AToBcwH7Af8BOAF1AfkB/wEwAXMB+wH/ATcBcAH8Af8BMQGCAbIB8wEBAY8C/wEB
AYYC/wEAAZkC/wFSAbEB9QH/AcYB3QHlAf8B5wHrAeEB/wH0AfAB3wH/AfUB8AHfAf8B7QHuAeAB/wHa
AeYB4gH/AYcBtwHuAf8BAwFjAv8BAQGVAv8BAAGYAv8BFAGEAeEB+gFpAcABKQH/AWYBvAEtAf8BYwG4
AeYB4gH/AYcBtwHuAf8BAwFjAv8BAQGVAv8BAAGYAv8BGwF+AdkB+gFpAcABKQH/AWYBvAEtAf8BYwG4
AS8B/wFjAbcBIwH/AWQBsQEiAf8BiwHGAV4B/wGpAdoBiwH/AbEB3QGZAf8BmQHQAXIB/wFwAbsBOAH/
AVkBsgEYAf8BYwG3ASgB/wFkAboBKgH/AWcBtgEtAf8BagG3AS4B/wFkAboBJwH/AfEB/AH7Af8BVgHP
AfcB/wEDAb4B+AH/ARIBvgH6Af8BEgG/AfoB/wEQAbgB+wH/ARIBvwH6Af8B8QHrAdUC/wHjAbQB/wF7
AdwB/QH/AQoBtwH8Af8BFgG8AfwB/wEYAb4B+AH/AQkBvAH5Af8BIwG7AfMB/wHTAfQB+wH/ATYBbwL/
ATQBcgH8Af8BNwFsAfwB/wEzAWwB+QH/ATcBawH0Af8BTAF+AfUB/wFIAXsB+QH/AUcBegH4Af8BSAF7
AfkB/wFHAXoB+AH/AUYBeQH3Af8BIQFfAf4B/wFBAXEB9QH/ATwBcgH6Af8BQgFrAv8BNQFvAf0B/wEu
AYMBsAHvAQEBkwL/AQABhQL/AVQBvAH1Av8B9AHfAf8B5gHrAeQB/wHfAeYB5QH/AYsBxQHvAf8BggG+
AfAB/wHCAdkB6AH/AfUB8wHiAf8B6AHwAeMB/wG2AcwB6gH/AQABngL/AQEBqQL/ARkBkQHaAfgBaQG7
AfkB/wFHAXoB+AH/AUYBeQH3Af8BIQFfAf4B/wFBAXEB9QH/ATwBcgH6Af8BQgFrAv8BNQFvAf0B/wE6
AXsBnwHvAQEBkwL/AQABhQL/AVQBvAH1Av8B9AHfAf8B5gHrAeQB/wHfAeYB5QH/AYsBxQHvAf8BggG+
AfAB/wHCAdkB6AH/AfUB8wHiAf8B6AHwAeMB/wG2AcwB6gH/AQABngL/AQEBqQL/AR8BiwHMAfgBaQG7
ATIB/wFlAb0BKgH/AWkBwQEtAf8BZQGyAR4B/wHdAfcB2QH/AfsB/wH8A/8B/gH/Af0B+gH+A/8B/AH/
AfgC/QH/Aa8B2wGUAf8BVwGsARcB/wFiAbwBMwH/AWYBvgEmAf8BZgG1ASYB/wFmAbgBKwL/AfgC/wHg
AfQB/QH/AQsBsgH7Af8BJAHCAf4B/wEkAcIB9wH/ASQBxAH2Af8BJAHWAv8B2wG3AWQB/wHsAZcBAQH/
AX0B3gHsAf8BDQG8AfsB/wEvAcYB9gH/ARsBwwH4Af8BDwG/AfkB/wHVAfAD/wH9Av8BOgFqAf4B/wFA
AWwB+QH/ASsBYwH+Af8BbQGQAfUB/wHiAfEB+wH/AfkB/AL/AfsB/AH+Af8B+gH7Af0B/wH7AfwB/gH/
AfoB/AH+Af8B+QH6AfwB/wGzAcYB+AH/ASwBXAH8Af8BOQFpAfsB/wE4AWoC/wE8AWwB+QH/AS4BgwGw
AfoB/AH+Af8B+QH6AfwB/wGzAcYB+AH/ASwBXAH8Af8BOQFpAfsB/wE4AWoC/wE8AWwB+QH/AToBewGf
Ae8BAAGiAv8BCQGcAf4B/wHOAeQB6QH/AesB7QHmAf8BjQHDAfAB/wEXAasB/QH/ASwBsAH6Af8BCQGk
Af4B/wERAZ0B/QH/AVYBpgH2Af8B2gHmAegB/wHzAfUB5QH/AWEBsgH1Af8BAQGCAv8BGQF8AdoB+AFm
Af4B/wERAZ0B/QH/AVYBpgH2Af8B2gHmAegB/wHzAfUB5QH/AWEBsgH1Af8BAQGCAv8BHwF8AcwB+AFm
AbsBKwH/AWcBvQEuAf8BWgG1AREB/wGyAeABmQH/AesB8gHmAf8B6wHyAdgB/wHoAfYB5QH/AboB3QGh
Af8B5gH2AdwB/wP+Af8C/QH8Af8B0gHvAcEB/wFVAaoBFAH/AWMBtQEqAf8BawG7ASgB/wFlAbgBKwH/
AfwB/gL/AfoB/QH7Af8BqQHnAv8BGAG+AfoB/wEWAcAB9wH/AY4B5AH9Af8B5gHfAa0B/wHaAZQBGQH/
Ad8BlgEaAf8B4gHAAW0B/wHgAfwC/wEmAcUB+wH/ARoBwAH+Af8BbwHUAfkB/wH6Af8B+wH/AfoB/AH+
Af8BPAFnAf4B/wE0AWEB/QH/AU4BbQHyAf8B3wHnAfQB/wHhAeYC/wHdAeUB/gH/AeEB6QH2Af8B4gHm
AfwB/wHcAeAB+AH/AeIB5gH4Af8B+AH5Af0C/wH+Av8BgwGlAfkB/wEwAVgB/gH/ATgBZwH4Af8BNwFn
AfwB/wEuAYMBsAHvAQABpAL/AWgBygH1Af8B9gHzAegB/wHYAecB6wH/AQ0BkQH+Av8B+QHlAf8BdwHN
AfQB/wF9AdMB8wH/AvIB5wH/AdgB5gHrAf8B1gHmAesB/wHYAecB6wH/AbwB3AHtAf8BAAFpAv8BGQF5
AdoB+AFoAbgBLwH/AWQBwAEmAf8BWAGrAQkB/wHnAfQB3AH/AcEB2QGfAf8B9gH/AfYB/wHYAe4B2wH/
AfwB/wE6AXsBnwHvAQABpAL/AWgBygH1Af8B9gHzAegB/wHYAecB6wH/AQ0BkQH+Av8B+QHlAf8BdwHN
AfQB/wF9AdMB8wH/AvIB5wH/AdgB5gHrAf8B1gHmAesB/wHYAecB6wH/AbwB3AHtAf8BAAFpAv8BHwF5
AcwB+AFoAbgBLwH/AWQBwAEmAf8BWAGrAQkB/wHnAfQB3AH/AcEB2QGfAf8B9gH/AfYB/wHYAe4B2wH/
AUoBqgECAf8BSgGqAQIB/wHGAekBtgL/AfwE/wH8Af8BsQHRAZgB/wFVAbEBGAH/AWQBugEuAf8BaAG4
ASkD/wH7Af8B/AH9AfwD/wH8Af8BWgHSAfsB/wEnAcEB8gH/ASgBwQHgAf8B+gGRAQQB/wHfAZoBJgH/
Ad0BmAEjAf8B5wGYARYB/wFAAccB3QH/ARQBwwH9Af8BBAG6AfUB/wHkAfcD/wH7Av8B+AH/AfoB/wE7
AWQB+gH/AUABZQH7Af8BPgFkAfcB/wE4AWEB+QH/AVEBcgH1Af8BUwF3AfwB/wFZAXkB9gH/AVEBdgH5
Af8BWgF4AfcB/wFJAWsB+AH/AbQBwwH3Af8B/gH/Af0B/wG2AcAB+AH/ASwBVQH9Af8BPwFkAfgB/wFC
AWMB/QH/AS4BgwGwAe8BAAGmAv8BrQHdAfEC/wH4AesB/wFYAbsB+QH/AWYBtwH3Av8B+wHpAf8BYAHI
AfgB/wFiAc8B9wH/AeIB8AHsAf8B3gHrAe4B/wHdAekB7gH/Ad4B6QHuAf8BuAHaAfAB/wEAAXYC/wEZ
AXsB2gH4AWsBvAExAf8BYQG6ASsB/wFpAb8BIwH/AcMB4wGoAf8B8QH4Ae8B/wH7Af4B/AH/AZkB0wFy
AWMB/QH/AToBewGfAe8BAAGmAv8BrQHdAfEC/wH4AesB/wFYAbsB+QH/AWYBtwH3Av8B+wHpAf8BYAHI
AfgB/wFiAc8B9wH/AeIB8AHsAf8B3gHrAe4B/wHdAekB7gH/Ad4B6QHuAf8BuAHaAfAB/wEAAXYC/wEf
AXsBzAH4AWsBvAExAf8BYQG6ASsB/wFpAb8BIwH/AcMB4wGoAf8B8QH4Ae8B/wH7Af4B/AH/AZkB0wFy
Af8BWgGzARoB/wFkAbUBJgH/AWEBsQEiAf8B2QHvAcUB/wP9Af8B9QH/AfMB/wFrAboBMAH/AWUBugEm
Af8BZgG2AS0B/wH+Av0C/wH+Av8B+QH+AfwB/wHZAfMB/gH/AREByAH+Af8BiAGgAWMB/wHDAZIBGwH/
AeIBowEuAf8B6wGyAUMB/wHRAZMBGQH/AbkBkAEgAf8BLgG9AeAB/wHFAfAB/QH/Af0B/wH8Af8B+gH/
AfoB/wL9Av8BPAFhAv8BQgFbAf4B/wFFAVsC/wE5AVgB/QH/AfUB+AH8Av8B/AH+Av8B/QT/AfsD/wH7
A/8B/QL/Af4B+QH/AfcB+gH+Af8BWgFtAfYB/wEzAVcB+wH/AT8BYgH4Af8BPQFfAf0B/wEvAYMBsAHv
A/8B/QL/Af4B+QH/AfcB+gH+Af8BWgFtAfYB/wEzAVcB+wH/AT8BYgH4Af8BPQFfAf0B/wE6AXsBnwHv
AQABqAL/AcUB5QHyAv8B+gHuAf8BQwGzAfsB/wF6AcgB+AL/AfcB7wH/AXUB1AH4Af8BAAGmAv8BAAGp
Av8BAAGYAv8BAAGQAv8BAAGRAv8BAAGLAv8BBQGOAf4B/wEaAXwB2gH4AWgBugErAf8BZwG+ATMB/wFc
Av8BAAGYAv8BAAGQAv8BAAGRAv8BAAGLAv8BBQGOAf4B/wEgAXwBzAH4AWgBugErAf8BZwG+ATMB/wFc
AbQBJQH/AZEBzQFhAf8B8wH3AfgB/wH6A/8BiwHFAVgB/wFbAbYBGQH/AWYBugEyAf8BZAG1ASkB/wFY
AbIBEwH/AfIB+wHwAf8B/QP/AY0BygFdAf8BaAG3ASoB/wFlAbgBKgH/Af0B/wH7Af8B/QH+A/8B+wP/
Av0B/wG6AdYBqwH/AbkBiQESAf8BxwGNAQsB/wHUAcYBjwH/Af0B/gH6Af8BvQGPARoB/wG/AY4BIAH/
AbIBswFsAv8C/QH/Af0B/gH9A/8B+gH/Av4B/QH/AUEBWwH6Af8BQwFdAfsB/wFDAVoB/QH/AToBVgH5
Af8BuQHEAfgB/wHFAdEB+wH/AcMBywH4Af8BxAHMAfoB/wLHAv8BvAHGAf0B/wHqAeYB+gH/AfkB/AH+
Af8BhgGOAfcB/wEzAVEB+wH/AUQBXQH4Af8BQwFZAfwB/wEzAYUBsAHvAQQBmwL/AaIB1gH3Af8C/QHy
Af8BhgGOAfcB/wEzAVEB+wH/AUQBXQH4Af8BQwFZAfwB/wE9AX4BnwHvAQQBmwL/AaIB1gH3Af8C/QHy
Af8BuwHdAfYB/wFCAaEB/AP/AfEB/wHvAfQB8wH/Ac8B6wH0Af8BzQHsAfQB/wHQAe4B9AH/AbgB6AH1
Af8BQAHCAfwB/wEHAbMC/wENAbAB/gH/AR0BlgHaAfgBaQG/ASgB/wFmAboBLAH/AWUBvwEsAf8BYgG1
Af8BQAHCAfwB/wEHAbMC/wENAbAB/gH/ASMBkgHMAfgBaQG/ASgB/wFmAboBLAH/AWUBvwEsAf8BYgG1
ASAB/wHdAfEB1QH/Af0B/wH7Af8BiQHHAVUB/wFeAbgBHgH/AWkBvgEnAf8BYwG6ASwB/wFKAawBBwH/
AccB4wGzAf8B/gH/AfsB/wGWAc4BbgH/AWMBtwEkAf8BZwG6ASoC/wH9Av8B+wH+Af0B/wH4Af8B/AH/
AfoB8AHWAf8B3gGVARAB/wHRAZIBFwH/AacBmAE9Af8BMAHJAe4B/wE8AdMB/gH/AWIBrAGPAf8ByQGQ
AQ8B/wHhAZgBGQH/AfYB5wHLAf8B/AH9AfwD/wH7Af8D/QH/AUYBXQH1Af8BRwFVAfwB/wFEAVwB9gH/
ATwBWwH3Af8BJQFDAfYB/wETAS8B+wH/ASQBPwHzAf8BHwE7AfQB/wEpATsB8gH/ARMBKwH2Af8BkQGr
Ae0D/wH9Af8BwQHFAfYB/wEyAUgB+gH/AUkBVwH3Af8BSQFWAfsB/wE0AYgBsAHvAQkBoAL/AUcBtQH8
Ae0D/wH9Af8BwQHFAfYB/wEyAUgB+gH/AUkBVwH3Af8BSQFWAfsB/wE+AX8BnwHvAQkBoAL/AUcBtQH8
Af8B+gH7AfYD/wH0Af8BUQGmAfwB/wFeAb4B/AH/AfoB/QH1A/8B9AP/AfUC/wH+AfUD/wH0A/8B9AH/
ARUBuAL/ARYBsQH+Af8BIwGYAdoB+AFiAbwBIwH/AWsBuwEuAf8BYgG7ASUB/wFYAbYBGAH/AakB2AGJ
ARUBuAL/ARYBsQH+Af8BKgGUAcwB+AFiAbwBIwH/AWsBuwEuAf8BYgG7ASUB/wFYAbYBGAH/AakB2AGJ
Af8B/QL+Af8BoQHXAX0B/wFZAbcBFwH/AW8BvwEsAf8BZQG9AS4B/wFSAbABCwH/AbgB3AGcAf8B+wH/
AfwB/wGFAccBVgH/AWMBvAEmAf8BZwG2ASsB/wHzAf4B9gH/Af0B/gH9Af8B+wH/AfsB/wHmAbgBYwH/
AdIBnwErAf8B2gGVAR0B/wEXAb4B/QH/ASABxAL/AScBwAL/ARYBwgL/AdYBmwEgAf8B3QGWARsB/wHQ
AY8BDgH/AvoB6gL/AfwC/wH9Af8B+gH/AUMBVAH6Af8BSAFSAfsB/wFIAVIB/QH/AUUBUQH8Af8BOgFF
AfcB/wKlAfYB/wLyAv8B9QH2AfwB/wH2AfcB/AH/AfQB9gH8Af8B/AH+Af0B/wHxAfQB/QH/AWEBbgHx
Af8BPAFKAfgB/wFKAVEB+gH/AUYBVAH5Af8BOgGJAbAB7wEcAakC/wEFAZgC/wG8AeAB+gH/AfoB+wH5
Af8BPAFKAfgB/wFKAVEB+gH/AUYBVAH5Af8BQgF/AZ8B7wEcAakC/wEFAZgC/wG8AeAB+gH/AfoB+wH5
Af8B4wHyAfgB/wFqAcEB/QH/AT0BuQH+Af8BUQHAAf0B/wFPAcQB/QH/AU0BzQH9Af8BTAHKAf0B/wFE
AcYB/QH/ARsBuQH+Af8BIQG2Av8BLQGaAdoB+AFoAb8BLQH/AWgBuQEtAf8BaQG+ASwB/wFiAb0BJAH/
AcYB/QH/ARsBuQH+Af8BIQG2Av8BNQGWAcwB+AFoAb8BLQH/AWgBuQEtAf8BaQG+ASwB/wFiAb0BJAH/
AWgBtgEoAf8B6gH4AewB/wHYAfQB0gH/AVoBtQEhAf8BZQG6AS0B/wFrAbwBLQH/AU8BrwEOAf8BxgHj
Aa8B/wHyAfsB8AH/AWcBtwErAf8BYQG2ASwB/wFpAbkBKgH/Av4B/QH/AfwB/gH8Af8B8AHYAacB/wHZ
AZQBFwH/AdkBlQEVAf8B7AHSAY8B/wGnAfUB7wH/ARkBvwH3Af8BGwG+AfwB/wFoAd0B9QL/AfsB5AH/
Ad0BnwEqAf8B3gGWARUB/wHmAb0BbgH/Av0C/wH8Af8B/gH/AUQBRgL/AU0BUwH3Af8BQAFMAfgB/wE6
AUcB+gH/AZwBpgHzAf8B+AH6AfwB/wHwAfQB+QH/AfAB9AH5Af8B8QH1AfoB/wHwAfQB+QH/AewB8AH1
Af8BfAF9AfgB/wE1AT0B9QH/AUUBVAH7Af8BSAFRAfUB/wFBAVAB+QH/AT4BjAGwAe8BJwG1Av8BMAG6
Af8BfAF9AfgB/wE1AT0B9QH/AUUBVAH7Af8BSAFRAfUB/wFBAVAB+QH/AUYBggGfAe8BJwG1Av8BMAG6
Af4B/wEuAbIE/wH7Af8B/gH9AfsD/wH6A/8B+gP/AfoD/wH6Av8B/gH6A/8B+gH/AfEC+wH/AVABvgH+
Af8BJQGpAv8BNwGXAdoB+AFnAbwBKgH/AWoBvQEwAf8BZgG8ASgB/wFnAbwBKwH/AVcBsgEPAf8BtAHb
Af8BJQGpAv8BOgGTAcwB+AFnAbwBKgH/AWoBvQEwAf8BZgG8ASgB/wFnAbwBKwH/AVcBsgEPAf8BtAHb
AZcB/wH7Af4B/AH/AYYBxgFTAf8BYQG3ASMB/wFeAbgBKgH/AUUBrAEKAf8B6wH5Ae0B/wGGAcIBUAH/
AVsBsAEXAf8BbAG9ASsB/wFmAbYBLwL/Af0C/wH8AfIB4QH/AdYBiAENAf8B3gGbAR8B/wHcAaIBJAH/
AdwBmQErAf8B8QGnASsB/wFgAc8B8gH/AQEBwwL/Ad8BxQGLAf8B3QGTAR0B/wHhAaEBLQH/AdwBnwEp
Af8B2AGRARYC/wHvAd4B/wH9A/8BTwFKAfgB/wFGAUsB9wH/AkgB/QH/AUkBSgH7Af8BUgFTAfgB/wFG
AUcB+wH/AUgBRgH6Af8BSAFGAfoB/wFJAUcB+wH/AUcBRQH5Af8BRgFEAfgB/wE+AUAB9wH/AUoBSwH9
Af8BSQFKAfoB/wFIAUsB9gH/AUcBSAH+Af8BRAGSAbwB8QExAboC/wE4Ab4C/wEzAbgB/gH/ATkBuQH+
Af8BSQFKAfoB/wFIAUsB9gH/AUcBSAH+Af8BSgGJAasB8QExAboC/wE4Ab4C/wEzAbgB/gH/ATkBuQH+
Af8BoAHdAf0B/wHfAfMB/QH/AfoC/QH/Af4B/wH9Af8C/gH9Af8C/gH9Af8C/gH9Af8B/QH+Af0B/wHa
AfAB/QH/ARkBogL/ATkBmQHaAfgBZwG8AS0B/wFnAbsBLQH/AWgBuwEwAf8BZwG7ASwB/wFqAbwBMwH/
AfAB/QH/ARkBogL/ATsBlQHMAfgBZwG8AS0B/wFnAbsBLQH/AWgBuwEwAf8BZwG7ASwB/wFqAbwBMwH/
AV0BugEbAf8BqQHZAYUB/wHaAe0BzQH/AX4ByQFYAf8BfAHJAVIB/wHlAfUB0AH/AZkB0AFxAf8BWQG1
ARkB/wFpAbwBLQH/AWUBtQEwAf8BZQG6ASgB/wL9AfoB/wHeAa8BWgH/AdEBkgENAf8B2gGWARkB/wHQ
AZUBFwH/AdYBkAEOAf8B2wGRAQ8B/wHWAfQB7wH/AbIB7wH9Af8B7gHGAXoB/wHYAYsBBwH/AdUBlQET
Af8B1gGUAR8B/wHVAZIBDwH/AdYBkQEnAf8B9AHtAdcB/wFqAWAB+gH/ATwBNQL/AV0BSgH9Af8BTQFE
AfoB/wFOAUUB+QH/AU0BSAH7Af8BSQFGAfoB/wFKAUcB+wH/AUoBRwH7Af8BSgFHAfsB/wFLAUgB/AH/
AUwBRgH4Af8BUQFDAv8BTAFKAfcB/wFMAUkB/QH/AVEBSQH4Af8BRAGYAcMB8wE6AbwC/wFBAcAC/wFG
AUwBRgH4Af8BUQFDAv8BTAFKAfcB/wFMAUkB/QH/AVEBSQH4Af8BSgGPAbIB8wE6AbwC/wFBAcAC/wFG
Ab4C/wFOAcAB/gH/ATsBuAH+Af8BNQGvAf4B/wFeAb4B/gH/AWgBwgH+Af8BZgHGAf4B/wFkAdIB/gH/
AWEBzwH+Af8BXQHOAv8BWgHAAv8BPwGxAv8BMwGbAecB/AFoAb0BKwH/AWgBvgEsAf8BZQG4AS0B/wFn
AWEBzwH+Af8BXQHOAv8BWgHAAv8BPwGxAv8BMQGVAd0B/AFoAb0BKwH/AWgBvgEsAf8BZQG4AS0B/wFn
Ab4BKAH/AWYBtQE2Af8BbQG+ATQB/wFYAbABHAH/AWIBuQEkAf8BqwHaAY4B/wGkAdgBgAH/AVcBrgEW
Af8BXQG4ARcB/wFnAb8BLwH/AWcBvQEpAf8BYAHBASoB/wFlAbcBKAH/AfQB6QHVAf8B4wGtAUoB/wHk
AbEBUwH/AekBswFYAf8B7QG6AVIB/wHdAbQBVwH/AeIBtwFWAf8B/gH5AfQB/wH9Af4B+gH/AfEB1gGi
@ -242,19 +242,19 @@
AT4B9gH/AT0BNgH2Af8BTAFFAfcB/wFKAUIB+wH/AU8BQgH8Af8BTQFEAfoB/wFMAUMB+QH/AU0BRAH6
Af8BTQFEAfoB/wFMAUMB+QH/AU4BQwH5Af8BSwFEAfgB/wFIAUQB+wH/AUoBRAH8Af8BSwFDAfoB/wFC
AkMBdQFBAbsC/wFIAb4C/wFPAcAC/wFVAcIC/wFZAcMC/wFcAcAB/gH/AVcBvgH+Af8BVgG9Af4B/wFV
AcAB/gH/AVIBxgL/AU0BwwL/AUgBwgL/AUIBuQL/AUUBtwL/AVgBZQFtAcUBZAG9ASYB/wFkAboBKwH/
AcAB/gH/AVIBxgL/AU0BwwL/AUgBwgL/AUIBuQL/AUUBtwL/AVsBXwFhAcUBZAG9ASYB/wFkAboBKwH/
AWUBvQEoAf8BZAG9AScB/wFmAbwBLwH/AWIBvwEjAf8BZgG9ASsB/wFlAbkBJAH/AV4BtwEbAf8BWgG2
ARkB/wFlAbsBKQH/AWUBuwEvAf8BaQG9AS8B/wFkAbsBKwH/AWMBvAEuAf8BaAG6ASwB/wH6Af0B/AH/
Av4B+wH/AfsB/wH8Af8C/gH9Af8C/AH6Af8B/QH/Af4D/wH9Af8C/AH+Af8B+QH9Af4C/wH9Af4B/wH9
Af8B/QH/AfwB/gL/Av0B/gH/Af0B/wH7Av8C/AH/AfwB/gH8A/8B+AH/AdoB2QH3Af8BaQFdAfUB/wFO
ATwB9wH/AUUBPwH4Af8BTgE/AfcB/wFNAT8B+QH/AU4BQAH6Af8BTQE/AfkB/wFNAT8B+QH/AU4BQAH6
Af8BTAE9Af4B/wFKAUIB8wH/AVEBPgH3Af8BVgE9Af0B/wFOAUIB9QH/BAADQAFuAVkBggGgAekBWgGZ
AbsB8QFcAZQBsAHvAWIBlAGwAe8BZgGcAbAB7wFnAZ0BsAHvAWcBnAGwAe8BZwGZAbAB7wFkAZEBsAHv
AV8BkQGwAe8BWQGOAbAB7wFZAZUBsQHvAVYBWwFdAbUDGAEgAWcBvgEuAf8BagG/ATMB/wFoAbwBNAH/
AWoBwQEwAf8BZQG4ATQB/wFqAb8BMwH/AWoBugE3Af8BbAHAATIB/wFlAbkBMQH/AWkBvwE1Af8BaAG+
ATIB/wFrAcABLQH/AWgBwAEtAf8BaAHCATEB/wFwAbkBNQH/AWwBwAExAf8B9AH/AfwD/wH+Af8B/QH8
Av8B/AH+Af0B/wH0Af0D/wH9B/8C/gL/Af4B/Qb/Af4C/wH5Af8B/gP/AfgB/wH4Af4D/wH9Av8B+QH+
Av8BQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD//sAAYAFAAs=
Af8BTAE9Af4B/wFKAUIB8wH/AVEBPgH3Af8BVgE9Af0B/wFOAUIB9QH/BAADQAFuAVoBeAGMAekBXAGQ
AaoB8QFcAYgBnwHvAWIBiAGfAe8BZgGOAZ8B7wFnAY8BnwHvAWcBjgGfAe8BZwGMAZ8B7wFkAYYBnwHv
AV8BhgGfAe8BWQGDAZ8B7wFZAYkBnwHvAVYCVwG1AxgBIAFnAb4BLgH/AWoBvwEzAf8BaAG8ATQB/wFq
AcEBMAH/AWUBuAE0Af8BagG/ATMB/wFqAboBNwH/AWwBwAEyAf8BZQG5ATEB/wFpAb8BNQH/AWgBvgEy
Af8BawHAAS0B/wFoAcABLQH/AWgBwgExAf8BcAG5ATUB/wFsAcABMQH/AfQB/wH8A/8B/gH/Af0B/AL/
AfwB/gH9Af8B9AH9A/8B/Qf/Av4C/wH+Af0G/wH+Av8B+QH/Af4D/wH4Af8B+AH+A/8B/QL/AfkB/gL/
AUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA//7AAGABQAL
</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -8,7 +8,7 @@
<OutputType>WinExe</OutputType>
<RootNamespace>Itrycn_Project2</RootNamespace>
<AssemblyName>Itrycn_Project2</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
@ -64,6 +64,7 @@
</Reference>
<Reference Include="System.Design" />
<Reference Include="System.Management" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
@ -75,34 +76,22 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsForm.cs" />
<Compile Include="Public\Class\LogInfo.cs" />
<Compile Include="Config\Init.cs" />
<Compile Include="Config\Itrycn_Db.cs" />
<Compile Include="Public\Fun\Itrycn_Db.cs" />
<Compile Include="Config\Public_Config.cs" />
<Compile Include="DbOp\FrmAdd.cs">
<Compile Include="OTools\DbOp\FrmAdd.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DbOp\FrmAdd.Designer.cs">
<Compile Include="OTools\DbOp\FrmAdd.Designer.cs">
<DependentUpon>FrmAdd.cs</DependentUpon>
</Compile>
<Compile Include="DbOp\FrmView.cs">
<Compile Include="OTools\DbOp\FrmView.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DbOp\FrmView.Designer.cs">
<Compile Include="OTools\DbOp\FrmView.Designer.cs">
<DependentUpon>FrmView.cs</DependentUpon>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FormTest.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormTest.Designer.cs">
<DependentUpon>FormTest.cs</DependentUpon>
</Compile>
<Compile Include="FrmAbout.cs">
<SubType>Form</SubType>
</Compile>
@ -127,26 +116,26 @@
<Compile Include="FrmTest2.Designer.cs">
<DependentUpon>FrmTest2.cs</DependentUpon>
</Compile>
<Compile Include="MdiForm\FrmFileBrowser_New.cs">
<Compile Include="OTools\MdiForm\FrmFileBrowser_New.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MdiForm\FrmFileBrowser_New.Designer.cs">
<Compile Include="OTools\MdiForm\FrmFileBrowser_New.Designer.cs">
<DependentUpon>FrmFileBrowser_New.cs</DependentUpon>
</Compile>
<Compile Include="MdiForm\FrmMainEditor.cs">
<Compile Include="OTools\MdiForm\FrmMainEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MdiForm\FrmMainEditor.Designer.cs">
<Compile Include="OTools\MdiForm\FrmMainEditor.Designer.cs">
<DependentUpon>FrmMainEditor.cs</DependentUpon>
</Compile>
<Compile Include="MdiForm\FrmTitle.cs">
<Compile Include="OTools\MdiForm\FrmTitle.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MdiForm\FrmTitle.Designer.cs">
<Compile Include="OTools\MdiForm\FrmTitle.Designer.cs">
<DependentUpon>FrmTitle.cs</DependentUpon>
</Compile>
<Compile Include="MdiForm\MyFileSystemInfo.cs" />
<Compile Include="MdiForm\ShellUtilities.cs" />
<Compile Include="OTools\MdiForm\MyFileSystemInfo.cs" />
<Compile Include="OTools\MdiForm\ShellUtilities.cs" />
<Compile Include="OTools\FrmScan.cs">
<SubType>Form</SubType>
</Compile>
@ -168,38 +157,32 @@
<Compile Include="Config\Soft_Info.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SkinForms\FrmMessageBox.cs">
<Compile Include="Public\SkinForms\FrmMessageBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SkinForms\FrmMessageBox.Designer.cs">
<Compile Include="Public\SkinForms\FrmMessageBox.Designer.cs">
<DependentUpon>FrmMessageBox.cs</DependentUpon>
</Compile>
<Compile Include="SkinForms\Msg.cs" />
<Compile Include="SkinForms\SKinForm.cs">
<Compile Include="Public\SkinForms\Msg.cs" />
<Compile Include="Public\SkinForms\SKinForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SkinForms\SKinForm.Designer.cs">
<Compile Include="Public\SkinForms\SKinForm.Designer.cs">
<DependentUpon>SKinForm.cs</DependentUpon>
</Compile>
<Compile Include="SkinForms\SkinMdiForm.cs">
<Compile Include="Public\SkinForms\SkinMdiForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SkinForms\SkinMdiForm.Designer.cs">
<Compile Include="Public\SkinForms\SkinMdiForm.Designer.cs">
<DependentUpon>SkinMdiForm.cs</DependentUpon>
</Compile>
<Compile Include="SkinForms\ThemeForm.cs" />
<EmbeddedResource Include="DbOp\FrmAdd.resx">
<Compile Include="Public\SkinForms\ThemeForm.cs" />
<EmbeddedResource Include="OTools\DbOp\FrmAdd.resx">
<DependentUpon>FrmAdd.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DbOp\FrmView.resx">
<EmbeddedResource Include="OTools\DbOp\FrmView.resx">
<DependentUpon>FrmView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormTest.resx">
<DependentUpon>FormTest.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmAbout.resx">
<DependentUpon>FrmAbout.cs</DependentUpon>
</EmbeddedResource>
@ -212,13 +195,13 @@
<EmbeddedResource Include="FrmTest2.resx">
<DependentUpon>FrmTest2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MdiForm\FrmFileBrowser_New.resx">
<EmbeddedResource Include="OTools\MdiForm\FrmFileBrowser_New.resx">
<DependentUpon>FrmFileBrowser_New.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MdiForm\FrmMainEditor.resx">
<EmbeddedResource Include="OTools\MdiForm\FrmMainEditor.resx">
<DependentUpon>FrmMainEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MdiForm\FrmTitle.resx">
<EmbeddedResource Include="OTools\MdiForm\FrmTitle.resx">
<DependentUpon>FrmTitle.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="OTools\FrmScan.resx">
@ -240,13 +223,13 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SkinForms\FrmMessageBox.resx">
<EmbeddedResource Include="Public\SkinForms\FrmMessageBox.resx">
<DependentUpon>FrmMessageBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SkinForms\SKinForm.resx">
<EmbeddedResource Include="Public\SkinForms\SKinForm.resx">
<DependentUpon>SKinForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SkinForms\SkinMdiForm.resx">
<EmbeddedResource Include="Public\SkinForms\SkinMdiForm.resx">
<DependentUpon>SkinMdiForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="app.config" />
@ -269,7 +252,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Folder Include="API\" />
<Content Include="结构说明.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\RaUI\RaUIV4.csproj">

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>

View File

@ -1,4 +1,5 @@
using ryCommon;
using Public.Fun;
using ryCommon;
using ryCommonDb;
using System;
using System.Collections.Generic;

View File

@ -1,4 +1,5 @@
using ryCommon;
using Public.Fun;
using ryCommon;
using ryCommonDb;
using System;
using System.Collections.Generic;

View File

@ -39,13 +39,13 @@
this.OlvAddTime = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.TabLogs = new System.Windows.Forms.TabPage();
this.LvLogs = new BrightIdeasSoftware.FastObjectListView();
this.OlvLogText = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.OlvLogTime = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.OlvLogText = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn()));
this.MenuLogs = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.TsState = new System.Windows.Forms.ToolStripStatusLabel();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.chromeTabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.LvCbResult)).BeginInit();
@ -65,14 +65,14 @@
this.chromeTabControl1.Controls.Add(this.tabPage1);
this.chromeTabControl1.Controls.Add(this.TabLogs);
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(1, 30);
this.chromeTabControl1.Name = "chromeTabControl1";
this.chromeTabControl1.SelectedIndex = 0;
this.chromeTabControl1.ShowAddButton = false;
this.chromeTabControl1.ShowCloseButton = false;
this.chromeTabControl1.Size = new System.Drawing.Size(802, 538);
this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.chromeTabControl1.Size = new System.Drawing.Size(900, 547);
this.chromeTabControl1.TabContextMenuStrip = null;
this.chromeTabControl1.TabIndex = 0;
this.chromeTabControl1.TabMaxWidth = 100;
@ -84,7 +84,7 @@
this.tabPage1.Location = new System.Drawing.Point(1, 29);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(800, 508);
this.tabPage1.Size = new System.Drawing.Size(898, 517);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "首页";
this.tabPage1.UseVisualStyleBackColor = true;
@ -117,10 +117,9 @@
this.LvCbResult.HideSelection = false;
this.LvCbResult.Location = new System.Drawing.Point(3, 47);
this.LvCbResult.Name = "LvCbResult";
this.LvCbResult.RowHeight = 25;
this.LvCbResult.ShowGroups = false;
this.LvCbResult.ShowItemToolTips = true;
this.LvCbResult.Size = new System.Drawing.Size(794, 458);
this.LvCbResult.Size = new System.Drawing.Size(892, 467);
this.LvCbResult.TabIndex = 84;
this.LvCbResult.UseCompatibleStateImageBehavior = false;
this.LvCbResult.UseFiltering = true;
@ -166,7 +165,6 @@
this.LvLogs.HideSelection = false;
this.LvLogs.Location = new System.Drawing.Point(3, 3);
this.LvLogs.Name = "LvLogs";
this.LvLogs.RowHeight = 25;
this.LvLogs.ShowGroups = false;
this.LvLogs.ShowItemToolTips = true;
this.LvLogs.Size = new System.Drawing.Size(794, 483);
@ -176,17 +174,16 @@
this.LvLogs.View = System.Windows.Forms.View.Details;
this.LvLogs.VirtualMode = true;
//
// OlvLogText
//
this.OlvLogText.DisplayIndex = 0;
this.OlvLogText.Text = "日志";
this.OlvLogText.Width = 400;
//
// OlvLogTime
//
this.OlvLogTime.Text = "日志时间";
this.OlvLogTime.Width = 180;
//
// OlvLogText
//
this.OlvLogText.Text = "日志";
this.OlvLogText.Width = 400;
//
// MenuLogs
//
this.MenuLogs.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -202,13 +199,20 @@
this.ToolStripMenuItem.Text = "复制日志信息";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 导出日志ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "导出日志ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(148, 22);
this.ToolStripMenuItem.Text = "导出日志";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.TsState});
this.statusStrip1.Location = new System.Drawing.Point(1, 573);
this.statusStrip1.Location = new System.Drawing.Point(1, 582);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(802, 22);
this.statusStrip1.Size = new System.Drawing.Size(900, 22);
this.statusStrip1.TabIndex = 3;
this.statusStrip1.Text = "statusStrip1";
//
@ -218,18 +222,11 @@
this.TsState.Size = new System.Drawing.Size(83, 17);
this.TsState.Text = "状态:准备就绪";
//
// 导出日志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);
//
// FrmScan
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(804, 596);
this.ClientSize = new System.Drawing.Size(902, 605);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.chromeTabControl1);
this.Location = new System.Drawing.Point(0, 0);

View File

@ -24,10 +24,10 @@ namespace Itrycn_Project2
//配置软件信息
OlvGameName.AspectGetter = delegate (object x) { return ((ItemInfo)x).Name; };
OlvAddTime.AspectGetter = delegate (object x) { return ((ItemInfo)x).AddTime.ToDateTimeStr(); };
OlvLogTime.AspectGetter = delegate (object x) { return ((LogInfo)x).LogTime.ToDateTimeStr(); };
OlvLogText.AspectGetter = delegate (object x) { return ((LogInfo)x).LogText; };
OlvLogTime.AspectGetter = delegate (object x) { return ((Public.Class.LogInfo)x).LogTime.ToDateTimeStr(); };
OlvLogText.AspectGetter = delegate (object x) { return ((Public.Class.LogInfo)x).LogText; };
LvLogs.FormatRow += delegate (object x, BrightIdeasSoftware.FormatRowEventArgs e) {
LogInfo item = (LogInfo)e.Model;
Public.Class.LogInfo item = (Public.Class.LogInfo)e.Model;
if (item.Color != Color.Black)
{
e.Item.ForeColor = item.Color;
@ -79,7 +79,7 @@ namespace Itrycn_Project2
{
LvLogs.RemoveObject(LvLogs.GetModelObject(count - 1));
}
LvLogs.InsertObjects(0, new LogInfo[] { new LogInfo() { LogTime = DateTime.Now, LogText = log, LogTag = tag, Color = color } });
LvLogs.InsertObjects(0, new Public.Class.LogInfo[] { new Public.Class.LogInfo() { LogTime = DateTime.Now, LogText = log, LogTag = tag, Color = color } });
OlvLogTime.Text = "时间(" + LvLogs.GetItemCount() + ")";
}));
}
@ -133,31 +133,9 @@ namespace Itrycn_Project2
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (LvLogs.SelectedObject == null) { return; }
var item = (LogInfo)LvLogs.SelectedObject;
var item = (Public.Class.LogInfo)LvLogs.SelectedObject;
RyFiles.CopyToClip(item.LogText);
}
/// <summary>
/// 日志信息
/// </summary>
class LogInfo
{
/// <summary>
/// 日志时间
/// </summary>
public DateTime LogTime { get; set; } = DateTime.Now;
/// <summary>
/// 日志内容
/// </summary>
public string LogText { get; set; }
/// <summary>
/// 日志Tag
/// </summary>
public string LogTag { get; set; }
/// <summary>
/// 日志文字颜色
/// </summary>
public Color Color { get; set; } = Color.Black;
}
class ItemInfo
{
public string Name { get; set; } = "";

View File

@ -1,5 +1,6 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Public.Fun;
using ryCommon;
using System;
using System.Drawing;
@ -271,7 +272,7 @@ namespace Itrycn_Project2
{
if (EditorState.Length == 0)
{
EditorState = Itrycn_Db.GetSetting("EditorState", "");
EditorState =Itrycn_Db.GetSetting("EditorState", "");
}
if (EditorState.Length == 0) { return 0; }
JObject jo = EditorState.Length == 0 ? new JObject() : JObject.Parse(EditorState);

View File

@ -1,4 +1,5 @@
using Itrycn_Project2;
using Config;
using Itrycn_Project2;
using ryCommon;
using RyHardWare;
using System;

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.2406.1101")]
[assembly: AssemblyFileVersion("1.0.2406.1101")]
[assembly: AssemblyVersion("1.0.2606.0401")]
[assembly: AssemblyFileVersion("1.0.2606.0401")]

View File

@ -19,7 +19,7 @@ namespace Itrycn_Project2.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {

View File

@ -12,7 +12,7 @@ namespace Itrycn_Project2.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Public.Class
{
/// <summary>
/// 日志信息
/// </summary>
public class LogInfo
{
/// <summary>
/// 日志时间
/// </summary>
public DateTime LogTime { get; set; } = DateTime.Now;
/// <summary>
/// 日志内容
/// </summary>
public string LogText { get; set; }
/// <summary>
/// 日志Tag
/// </summary>
public string LogTag { get; set; }
/// <summary>
/// 日志对象(可选)
/// </summary>
public object LogObject { get; set; } = null;
/// <summary>
/// 日志文字颜色
/// </summary>
public Color Color { get; set; } = Color.Black;
}
}

View File

@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using static ryCommonDb.DataProvider;
namespace Itrycn_Project2
namespace Public.Fun
{
public static class Itrycn_Db
{

View File

@ -1,120 +0,0 @@
<?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>
</root>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>

View File

@ -1,62 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace Itrycn
{
public static class MDIClientSupport
{
[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", ExactSpelling = true)]
private static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
private const int GWL_EXSTYLE = -20;
private const int WS_EX_CLIENTEDGE = 0x200;
private const uint SWP_NOSIZE = 0x0001;
private const uint SWP_NOMOVE = 0x0002;
private const uint SWP_NOZORDER = 0x0004;
private const uint SWP_NOREDRAW = 0x0008;
private const uint SWP_NOACTIVATE = 0x0010;
private const uint SWP_FRAMECHANGED = 0x0020;
private const uint SWP_SHOWWINDOW = 0x0040;
private const uint SWP_HIDEWINDOW = 0x0080;
private const uint SWP_NOCOPYBITS = 0x0100;
private const uint SWP_NOOWNERZORDER = 0x0200;
private const uint SWP_NOSENDCHANGING = 0x0400;
public static bool SetBevel(this Form form, bool show)
{
foreach (Control c in form.Controls)
{
switch (c)
{
case MdiClient client:
if (client != null)
{
int windowLong = GetWindowLong(c.Handle, GWL_EXSTYLE);
if (show)
{
windowLong |= WS_EX_CLIENTEDGE;
}
else
{
windowLong &= ~WS_EX_CLIENTEDGE;
}
SetWindowLong(c.Handle, GWL_EXSTYLE, windowLong);
// Update the non-client area.
SetWindowPos(client.Handle, IntPtr.Zero, 0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
return true;
}
break;
}
}
return false;
}
}
}

View File

@ -1,4 +1,5 @@
using RaUI.UI.LayeredForm;
using Config;
using RaUI.UI.LayeredForm;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -34,7 +35,7 @@ namespace Itrycn_Project2
ryCommon.RyRegedit.SetAutoRun(ChkAutoRun.Checked, Soft_ConstInfo.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" "+ Soft_ConstInfo.Soft_Pram);
DialogResult = DialogResult.OK;
}
ryControls.RySetting mySetting = new ryControls.RySetting();
private ryControls.RySetting mySetting = new ryControls.RySetting();
private void FrmSetting_Load(object sender, EventArgs e)
{
mySetting.FilePath = Soft_ConstInfo.UserDataFolder + "\\Setting.xml";

View File

@ -0,0 +1,2 @@

Public文件夹:表示公共部分,建议不要修改,后续如果存在新版项目底层,可以直接复制替换。

View File

@ -15,7 +15,7 @@ namespace Config
/// <summary>
/// sql连接字符串
/// </summary>
public static string SQLConnStr = "Data Source=192.168.1.193;Initial Catalog=qoData;Persist Security Info=False;User ID=sa;Password=DYdy123;pooling=false";
public static string SQLConnStr { get { return "Data Source="+DyAPI.API.Static_Config.MsSQL_Host+";Initial Catalog=qoData;Persist Security Info=False;User ID=sa;Password=DYdy123;pooling=false"; } }
//public static string SQLConnStr = "Data Source=192.168.1.191;Initial Catalog=qoData;Persist Security Info=False;User ID=sa;Password=123";
public static string HeadUrl = "http://192.168.1.191/headPic/";
public static string FileUrl = "http://192.168.1.191/UploadFiles/";

View File

@ -146,6 +146,7 @@ namespace LiveUpdate
}
private void frmUpdateFile_Load(object sender, EventArgs e)
{
DyAPI.API.Static_Config.InitConfig();
//var aa= ProcessExt.GetPath(3424);
UpdateFilesDir = Application.StartupPath + "\\";
GetSetting();
@ -238,9 +239,16 @@ namespace LiveUpdate
switch (MessageBox.Show("是否要马上向选择的用户进行定向推送?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2))
{
case DialogResult.Yes:
var ProcUpdateUrl = cmbProcUpdateUrl.Text;
var iPos = ProcUpdateUrl.LastIndexOf("/");
var root_url = "http://192.168.1.191/OnlineUpgrade";
if (iPos > 0)
{
root_url = ProcUpdateUrl.Substring(0, iPos);
}
QuickWeb web = new QuickWeb();
web.Post("http://gs2.dangyou.com:1881/process", "a=send&touser=" +web.UrlEncode(user.UserList.Replace(",",";")) + "&type="+ ryMessageConst.MsType.MustUpdate +
"&msg=" + web.UrlEncode("http://192.168.1.191/OnlineUpgrade/" + System.IO.Path.GetFileName(update_fullpath)));
web.Post(DyAPI.API.Static_Config.WinServerSite+ "/process", "a=send&touser=" +web.UrlEncode(user.UserList.Replace(",",";")) + "&type="+ ryMessageConst.MsType.MustUpdate +
"&msg=" + web.UrlEncode(root_url+"/" + System.IO.Path.GetFileName(update_fullpath)));
break;
}
}

View File

@ -11,6 +11,7 @@ namespace ryCommon
/// </summary>
public static class Hosts
{
private static readonly string Paddings = " ";
/// <summary>
/// 获取并转换hosts内容
/// </summary>
@ -144,7 +145,7 @@ namespace ryCommon
}
else
{
sys_content += sys_list[i].IP + "\t" + sys_list[i].Domain;
sys_content += sys_list[i].IP + Paddings + sys_list[i].Domain;
}
}
target_list = sys_content;
@ -183,7 +184,7 @@ namespace ryCommon
/// <returns>0表示无需新增,-1表示添加失败,1表示追加成功</returns>
public static int AddHosts(HostInfo item)
{
return AddHosts(item.IP + "\t" + item.Domain);
return AddHosts(item.IP + Paddings + item.Domain);
}
/// <summary>
/// 追加内容到hosts里
@ -193,7 +194,7 @@ namespace ryCommon
/// <returns>0表示无需新增,-1表示添加失败,1表示追加成功</returns>
public static int AddHosts(string ip,string domain)
{
return AddHosts(ip + "\t" + domain);
return AddHosts(ip + Paddings + domain);
}
/// <summary>
/// 从hosts文件里删除内容
@ -229,7 +230,7 @@ namespace ryCommon
}
else
{
text += from_list[i].IP+"\t"+ from_list[i].Domain;
text += from_list[i].IP+ Paddings + from_list[i].Domain;
}
}
if (IsDel)

View File

@ -62,7 +62,11 @@ namespace ryCommon.Pram
/// <summary>
/// XML
/// </summary>
XML
XML,
/// <summary>
/// Json
/// </summary>
Json
}
/// <summary>
///对象值

View File

@ -810,7 +810,10 @@ namespace ryCommon
Bitmap bitmap = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.InterpolationMode = mode;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality = CompositingQuality.HighQuality;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
g.SmoothingMode= SmoothingMode.HighQuality;
g.Clear(Color.Empty);
g.DrawImage(i, new Rectangle(0, 0, width, height), new Rectangle(0, 0, i.Width, i.Height), GraphicsUnit.Pixel);
}
@ -831,6 +834,9 @@ namespace ryCommon
using (Graphics g = Graphics.FromImage(bitmap))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality= CompositingQuality.HighQuality;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
g.SmoothingMode = SmoothingMode.HighQuality;
g.Clear(Color.Empty);
g.DrawImage(i, new Rectangle(0, 0, width, height), new Rectangle(0, 0, i.Width, i.Height), GraphicsUnit.Pixel);
}
@ -882,10 +888,17 @@ namespace ryCommon
/// <exception cref="Exception">操作失败</exception>
private static System.Drawing.Image CropOrFill(this System.Drawing.Image image, int width, int height, Color background, InterpolationMode mode)
{
if (Math.Abs((image.Width/(float)image.Height)-(width/(float)height))<=0.01)
{
return (Image)image.Clone();
}
Bitmap bitmap = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.InterpolationMode = mode;
g.CompositingQuality = CompositingQuality.HighQuality;
g.TextRenderingHint = TextRenderingHint.AntiAlias;
g.SmoothingMode = SmoothingMode.HighQuality;
int srcX = GetSrc(image.Width, width);
int srcY = GetSrc(image.Height, height);
g.Clear(background);

View File

@ -1,4 +1,5 @@
using ryCommon.Pram;
using Newtonsoft.Json.Linq;
using ryCommon.Pram;
using ryControls;
using System;
using System.Collections.Generic;
@ -11,6 +12,7 @@ namespace ryCommon
/// <summary>
/// 设置管理类,快速添加设置。
/// </summary>
[Obsolete("当前类已经过期")]
public class RySetting
{
/// <summary>
@ -34,11 +36,26 @@ namespace ryCommon
/// <summary>
/// 配置存储路径
/// </summary>
public string FilePath = "";
public string FilePath { get; set; } = "";
/// <summary>
/// 设置XML内容
/// </summary>
public string SettingXML = "";
[Obsolete("当前属性已过期,请使用SettingContent代替")]
public string SettingXML
{
get
{
return SettingContent;
}
set
{
SettingContent = value;
}
}
/// <summary>
/// 获取/设置配置的内容(适用于xml和json)
/// </summary>
public string SettingContent { get; set; } = "";
private string Section = "Setting";
private List<Control_Info> list = new List<Control_Info>();
/// <summary>
@ -47,19 +64,19 @@ namespace ryCommon
/// <param name="_id"></param>
/// <param name="ctl"></param>
/// <returns></returns>
public int Add(string _id,Control ctl)
public int Add(string _id, Control ctl)
{
return Add(_id, ctl, CValueType.Default,"");
return Add(_id, ctl, CValueType.Default, "");
}
/// <summary>
/// 设置值
/// </summary>
/// <param name="_id"></param>
/// <param name="value"></param>
/// <returns></returns>
public int Add(string _id,string value)
/// <summary>
/// 设置值
/// </summary>
/// <param name="_id"></param>
/// <param name="value"></param>
/// <returns></returns>
public int Add(string _id, string value)
{
return Add(_id, null, CValueType.Default,value);
return Add(_id, null, CValueType.Default, value);
}
/// <summary>
/// 添加控件
@ -69,10 +86,10 @@ namespace ryCommon
/// <param name="valuetype"></param>
/// <param name="_defValue"></param>
/// <returns></returns>
public int Add(string _id, Control ctl,CValueType valuetype,object _defValue)
public int Add(string _id, Control ctl, CValueType valuetype, object _defValue)
{
if(_id.ToLower()== Section.ToLower()) { return -1; }
list.Add(new Control_Info() { id = _id, control = ctl, value_type= valuetype, defValue= _defValue });
if (_id.ToLower() == Section.ToLower()) { return -1; }
list.Add(new Control_Info() { id = _id, control = ctl, value_type = valuetype, defValue = _defValue });
return 1;
}
/// <summary>
@ -147,25 +164,25 @@ namespace ryCommon
public void Read()
{
string filepath = FilePath;
if (FileType==SettingType.XML)
if (FileType == SettingType.XML)
{
ryCommon.Storage myXML = new Storage();
if (filepath == "")
{
myXML.LoadFromXMLText(SettingXML);
myXML.LoadFromXMLText(SettingContent);
}
else
{
myXML.LoadFromFile(filepath);
}
myXML.SelectNode2("id", Section);
for(int i=0;i<list.Count;i++)
for (int i = 0; i < list.Count; i++)
{
Control_Info item = list[i];
switch (item.control)
{
case CheckBox chk:
chk.Checked = myXML.GetAttrValue(item.id,item.defValue.ToBool());
chk.Checked = myXML.GetAttrValue(item.id, item.defValue.ToBool());
break;
case TextBox txt:
txt.Text = myXML.GetAttrValue(item.id, item.defValue.ToString());
@ -266,7 +283,7 @@ namespace ryCommon
txt.Text = myIni.ReadIni(Section, item.id, item.defValue.ToString());
break;
case NumericUpDown num:
num.Value = myIni.ReadIni(Section, item.id, item.defValue.ToString()).ToDecimal(num.Minimum,num.Maximum, (decimal)item.defValue);
num.Value = myIni.ReadIni(Section, item.id, item.defValue.ToString()).ToDecimal(num.Minimum, num.Maximum, (decimal)item.defValue);
break;
case DateTimePicker dt_picker:
try
@ -346,6 +363,113 @@ namespace ryCommon
}
}
}
else if (FileType == SettingType.Json)
{
JObject myJson = new JObject();
try
{
if (filepath == "")
{
myJson = JObject.Parse(SettingContent);
}
else
{
myJson = JObject.Parse(RyFiles.ReadAllText(filepath));
}
}
catch { }
for (int i = 0; i < list.Count; i++)
{
Control_Info item = list[i];
switch (item.control)
{
case CheckBox chk:
chk.Checked = myJson.GetJsonValue(item.id, item.defValue.ToBool());
break;
case TextBox txt:
txt.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
case NumericUpDown num:
num.Value = myJson.GetJsonValue(item.id, item.defValue.ToDecimal()).ToDecimal(num.Minimum, num.Maximum, (decimal)item.defValue);
break;
case DateTimePicker dt_picker:
try
{
dt_picker.Value = RyDate.UnixTimeToDateTime(myJson.GetJsonValue(item.id, RyDate.DateTimeToUnixTime((DateTime)item.defValue).ToString()));
}
catch
{
dt_picker.Value = (DateTime)item.defValue;
}
break;
case ComboBox cbb:
#region ComboBox
if (item.value_type == CValueType.ItemIndex || item.value_type == CValueType.Default)
{
int def_value = item.defValue.ToInt(0);
int value = myJson.GetJsonValue(item.id, item.defValue.ToInt(0));
if (cbb.Items.Count > value && value >= 0)
{
cbb.SelectedIndex = value;
}
else
{
if (cbb.Items.Count > def_value && def_value >= 0)
cbb.SelectedIndex = def_value;
else
cbb.SelectedIndex = 0;
}
}
else if (item.value_type == CValueType.ItemText)
{
try
{
cbb.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
}
catch { cbb.Text = item.defValue.ToString(); }
}
else if (item.value_type == CValueType.ObjectItem)
{
#region ObjectItem
string _id = myJson.GetJsonValue(item.id, item.defValue.ToString());
bool haveRecord = false;
for (int m = 0; m < cbb.Items.Count; m++)
{
switch (cbb.Items[m])
{
case ObjectItem c_item:
if (c_item.Id == _id)
{
cbb.SelectedIndex = m;
haveRecord = true;
break;
}
break;
}
}
if (!haveRecord)
{
cbb.SelectedIndex = 0;
}
#endregion
}
break;
#endregion
default:
var type = item.control.GetType().Name;
if (type == "HotkeyTextBox")
{
dynamic cc = item.control;
cc.HotKey = myJson.GetJsonValue(item.id, item.defValue.ToString());
}
else
{
item.control.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
}
break;
}
}
}
}
/// <summary>
/// 保存配置
@ -358,7 +482,7 @@ namespace ryCommon
ryCommon.Storage myXML = new Storage();
if (filepath == "")
{
myXML.LoadFromXMLText(SettingXML);
myXML.LoadFromXMLText(SettingContent);
}
else
{
@ -420,11 +544,8 @@ namespace ryCommon
break;
}
}
if (filepath == "")
{
SettingXML=myXML.XMLText;
}
else
SettingContent = myXML.XMLText;
if (filepath.Length > 0)
{
myXML.SaveToFile(filepath);
}
@ -489,6 +610,107 @@ namespace ryCommon
}
}
}
else if (FileType == SettingType.Json)
{
JObject myJson = new JObject();
try
{
if (filepath == "")
{
myJson = JObject.Parse(SettingContent);
}
else
{
myJson = JObject.Parse(RyFiles.ReadAllText(filepath));
}
}
catch { }
for (int i = 0; i < list.Count; i++)
{
Control_Info item = list[i];
switch (item.control)
{
case CheckBox chk:
myJson[item.id] = chk.Checked;
break;
case TextBox txt:
myJson[item.id] = txt.Text;
break;
case NumericUpDown num:
myJson[item.id] = num.Value;
break;
case DateTimePicker dt_picker:
myJson[item.id] = RyDate.DateTimeToUnixTime(dt_picker.Value).ToString();
break;
case ComboBox cbb:
#region ComboBox
if (item.value_type == CValueType.ItemIndex || item.value_type == CValueType.Default)
{
myJson[item.id] = cbb.SelectedIndex;
}
else if (item.value_type == CValueType.ItemText)
{
myJson[item.id] = cbb.Text;
}
else if (item.value_type == CValueType.ObjectItem)
{
switch (cbb.SelectedItem)
{
case ObjectItem c_item:
myJson[item.id] = c_item.Id;
break;
}
}
break;
#endregion
case null:
myJson[item.id] = item.defValue.ToString();
break;
default:
var type = item.control.GetType().Name;
if (type == "HotkeyTextBox")
{
dynamic cc = item.control;
myJson[item.id] = cc.HotKey;
}
else
{
myJson[item.id] = item.control.Text;
}
break;
}
}
SettingContent = myJson.ToString();
if (filepath.Length > 0)
{
RyFiles.WriteAllText(filepath, myJson.ToString());
}
}
}
/// <summary>
/// 保存到内存中的对象
/// </summary>
private object MemObject { get; set; } = null;
/// <summary>
/// 读取内容到内存中
/// </summary>
public void ReadToMem()
{
string filepath = FilePath;
if (FileType == SettingType.XML)
{
ryCommon.Storage myXML = new Storage();
if (filepath.Length == 0)
{
myXML.LoadFromXMLText(SettingContent);
}
else
{
myXML.LoadFromFile(filepath);
}
myXML.SelectNode2("id", Section);
MemObject = myXML;
}
}
}
}

View File

@ -85,8 +85,8 @@ namespace ryCommon
{
if (oldVer == newVer) { return 0; }
if(oldVer==null || newVer == null) { return -1000; }
var _oldVer = oldVer;
var _newVer = newVer;
var _oldVer = oldVer.Replace("-",".");
var _newVer = newVer.Replace("-", ".");
if (_oldVer.StartsWith("v", StringComparison.OrdinalIgnoreCase)) { _oldVer = _oldVer.Substring(1); }
if (_newVer.StartsWith("v", StringComparison.OrdinalIgnoreCase)) { _newVer = _newVer.Substring(1); }
//var have_ts = false;
@ -132,24 +132,63 @@ namespace ryCommon
public static string GetVer(string text)
{
if (string.IsNullOrEmpty(text)) { return ""; }
var end=text.Length-1;
if(text.IndexOfEx("patch")>0)
var m_text = text;
var m_ver = "";
List<string> ver_list = new List<string>();
while(true)
{
end = text.LastIndexOf("patch",StringComparison.OrdinalIgnoreCase);
}
var start = false;
var ver = "";
for (int i = end; i >= 0; i--)
{
var word = text[i];
if (!start && word >= '0' && word <= '9') { ver = word.ToString(); start = true; }
else if (start)
var mver = get_ver(m_text, out var m_iPos);
if (mver.Length > 0)
{
if ((word >= '0' && word <= '9') || word == '.') { ver = word.ToString() + ver; }
else { break; }
ver_list.Add(mver);
}
else
{
break;
}
if(m_iPos>0)
{
m_text = m_text.Substring(0, m_iPos);
}
else
{
break;
}
}
return ver;
if(ver_list.Count==1)
{
return ver_list[0];
}
else if (ver_list.Count>1)
{
if (ver_list[1].IndexOfEx(".")>0)
{
return ver_list[1]+"."+ver_list[0];
}
else
{
return ver_list[0];
}
}
return m_ver;
string get_ver(string txt,out int iPos)
{
iPos = -1;
var end = txt.Length - 1;
var start = false;
var ver = "";
for (int i = end; i >= 0; i--)
{
var word = txt[i];
if (!start && word >= '0' && word <= '9') { ver = word.ToString(); start = true; }
else if (start)
{
if ((word >= '0' && word <= '9') || word == '.') { ver = word.ToString() + ver; }
else { iPos = i; break; }
}
}
return ver;
}
}
/// <summary>
/// 比较版本号

View File

@ -0,0 +1,246 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ryCommon
{
/// <summary>
/// 超级文件搜索
/// </summary>
public class SuperFileSearch
{
/// <summary>
/// 取消选项
/// </summary>
public enum CancelActions
{
/// <summary>
/// 不取消,继续
/// </summary>
No //不取消,继续
,
/// <summary>
/// 只取消当前目录
/// </summary>
CurrentDirectory //只取消当前目录
,
/// <summary>
/// 取消后面的所有搜索
/// </summary>
AllDirectories //取消后面的所有搜索
}
private CancelActions _Cancel; //取消
/// <summary>
/// 是否取消
/// </summary>
public CancelActions Cancel
{
get
{
return _Cancel;
}
set
{
_Cancel = value;
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="Fileinfo"></param>
/// <param name="AddToResult">是否将该文件添加到结果</param>
public delegate void SearchFileHandler(SuperFileSearch sender,FileInfo Fileinfo,ref bool AddToResult);
/// <summary>
/// 搜索文件事件
/// </summary>
public event SearchFileHandler OnSearchFile;
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="DirInfo"></param>
/// <param name="Cancel"></param>
public delegate void SearchDirHandler(SuperFileSearch sender, DirectoryInfo DirInfo,ref CancelActions Cancel);
/// <summary>
/// 搜索目录事件
/// </summary>
public event SearchDirHandler OnSearchDir;
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="id"></param>
/// <param name="ex"></param>
public delegate void SearchErrorHandler(SuperFileSearch sender,int id, Exception ex);
/// <summary>
/// 错误事件
/// </summary>
public event SearchErrorHandler OnError;
/// <summary>
/// 是否查找搜索子目录
/// </summary>
public bool GetSubFolder { get; set; } = true;
/// <summary>
/// 查找发现的文件列表
/// </summary>
public List<FileInfo> ResultFiles = [];
/// <summary>
/// 查找发现的目录列表
/// </summary>
public List<DirectoryInfo> ResultDirs = [];
/// <summary>
/// 结果对应的文件数量
/// </summary>
public int ResultFilesCount
{
get {return ResultFiles.Count; }
}
/// <summary>
/// 结果对应的目录数量
/// </summary>
public int ResultDirsCount
{
get { return ResultDirs.Count; }
}
/// <summary>
/// 结果对应的文件+目录数量
/// </summary>
public int ResultCount
{
get { return ResultFiles.Count+ResultDirs.Count; }
}
/// <summary>
///
/// </summary>
public object Tag { get; set; } = null;
/// <summary>
/// 搜索查找文件
/// </summary>
/// <param name="SearchPath"></param>
/// <param name="SearchExts"></param>
public List<FileInfo> Search(string SearchPath, string SearchExts)
{
return Search(new List<string>() { SearchPath }, SearchExts);
}
/// <summary>
/// 搜索查找文件
/// </summary>
/// <param name="SearchPaths"></param>
/// <param name="SearchExts"></param>
public List<FileInfo> Search(List<string> SearchPaths, string SearchExts)
{
ResultFiles.Clear();
ResultDirs.Clear();
_Cancel = CancelActions.No;
List<FileInfo> list_files = [];
for (int i = 0; i < SearchPaths.Count; i++)
{
list_files.AddRange(GetFiles(SearchPaths[i],SearchExts, GetSubFolder));
}
ResultFiles.AddRange(list_files);
return list_files;
}
/// <summary>
/// 获取指定文件夹下的文件列表,支持多个扩展名获取,支持获取子文件夹的数据
/// </summary>
/// <param name="folder"></param>
/// <param name="exts"></param>
/// <param name="GetSubFolder">是否获取子文件夹数据</param>
/// <returns></returns>
private List<FileInfo> GetFiles(string folder, string exts,bool GetSubFolder)
{
if(GetSubFolder)
{
var result= GetFiles(folder, exts);
try
{
DirectoryInfo dir = new(folder);
var dirs = dir.GetDirectories();
if (dirs != null && dirs.Length > 0)
{
for (int i = 0; i < dirs.Length; i++)
{
if (_Cancel == CancelActions.AllDirectories) { break; }
if (OnSearchDir != null)
{
CancelActions cancel = CancelActions.No;
OnSearchDir?.Invoke(this, dirs[i], ref cancel);
if (cancel == CancelActions.CurrentDirectory) { continue; }
else if (cancel == CancelActions.AllDirectories) { Cancel = CancelActions.AllDirectories; break; }
}
ResultDirs.Add(dirs[i]);
result.AddRange(GetFiles(dirs[i].FullName, exts, true));
}
}
}
catch (Exception ex)
{
OnError?.Invoke(this,1000,ex);
}
return result;
}
else
{
return GetFiles(folder,exts);
}
}
/// <summary>
/// 获取指定文件夹下的文件列表,支持多个扩展名获取(子文件夹里的文件不会去获取)。如果
/// 文件夹不存在,则获取空列表(本函数不会返回null值)
/// </summary>
/// <param name="folder">要获取的文件夹路径</param>
/// <param name="exts">要获取的扩展名列表(例如:*.mp3;*.wav)</param>
/// <returns></returns>
private List<FileInfo> GetFiles(string folder, string exts)
{
if (!System.IO.Directory.Exists(folder))
{
return [];
}
else
{
var result = new List<FileInfo>();
var ext_split = exts.Split(';');
for (int i = 0; i < ext_split.Length; i++)
{
if (ext_split[i].Length == 0) { continue; }
try
{
DirectoryInfo dir = new(folder);
var files = dir.GetFiles(ext_split[i]);
if (files != null && files.Length > 0)
{
if (OnSearchFile != null)
{
for (int j = 0; j < files.Length; j++)
{
if (_Cancel == CancelActions.AllDirectories) { break; }
var AddToResult = true;
OnSearchFile?.Invoke(this, files[j], ref AddToResult);
if (AddToResult)
{
result.Add(files[j]);
}
}
}
else
{
result.AddRange(files);
}
}
}
catch(Exception ex) {
OnError?.Invoke(this,1001, ex);
}
}
return result;
}
}
}
}

View File

@ -84,25 +84,43 @@ namespace RyHardWare
var ddr = ObjToStr(item["PartNumber"].Value);
if (ddr.IndexOfEx("DDR3") >= 0) { ddr = "DDR3"; }
else if (ddr.IndexOfEx("DDR4") >= 0) { ddr = "DDR4"; }
else if (Manufacturer == "Corsair")
{
var _s = ddr.GetStr("GD", "C");
if (_s.IsInt())
{
Speed = _s.ToInt();
}
if (ddr.StartsWith("CM5")) { ddr = "DDR5"; }
else if (ddr.StartsWith("CM4")) { ddr = "DDR4"; }
else if (ddr.StartsWith("CM3")) { ddr = "DDR3"; }
}
else if (ddr.IndexOfEx("D4") >= 0) { ddr = "DDR4"; }
else if (ddr.IndexOfEx("D3") >= 0) { ddr = "DDR3"; }
else if (Speed == 266 || Speed == 333 || Speed == 400)
if (!ddr.Length.IsInRange(3,4))
{
ddr = "DDR";
if (Speed == 266 || Speed == 333 || Speed == 400)
{
ddr = "DDR";
}
else if (Speed == 533 || Speed == 667 || Speed == 800)
{
ddr = "DDR2";
}
else if (Speed == 1066 || Speed == 1333 || Speed == 1600)
{
ddr = "DDR3";
}
else if (Speed == 2400 || Speed == 2133 || Speed == 2666 || Speed == 2667 || Speed == 3200)
{
ddr = "DDR4";
}
else if (Speed >= 4000)
{
ddr = "DDR5";
}
else { ddr = "未知"; }
}
else if (Speed == 533 || Speed == 667 || Speed == 800)
{
ddr = "DDR2";
}
else if (Speed == 1066 || Speed == 1333 || Speed == 1600)
{
ddr = "DDR3";
}
else if (Speed == 2400 || Speed == 2133 || Speed == 2666 || Speed == 2667 || Speed == 3200)
{
ddr = "DDR4";
}
else { ddr = "未知"; }
if (Manufacturer == "Kingston") { Manufacturer = "金士顿"; }
else if (Manufacturer == "A-DATA Technology") { Manufacturer = "威刚"; }
else { Manufacturer = GetManufacturer(Manufacturer); }
@ -275,6 +293,72 @@ namespace RyHardWare
}
return result;
}
private static string BytesToString(byte[] bytes)
{
if (bytes == null) return "";
try
{
return System.Text.Encoding.UTF8.GetString(bytes).Replace("\0", "").Trim();
}
catch
{
return "";
}
}
/// <summary>
///
/// </summary>
/// <param name="scope"></param>
/// <param name="sql"></param>
/// <returns></returns>
public static List<Dictionary<string,string>> GetWMI(string scope, string sql)
{
var list_result = new List<Dictionary<string, string>>();
try
{
System.Management.ManagementObjectSearcher mos = scope.Length == 0 ? new System.Management.ManagementObjectSearcher(sql) :
new System.Management.ManagementObjectSearcher(scope, sql);
System.Management.ManagementObjectCollection.ManagementObjectEnumerator moe = mos.Get().GetEnumerator();
//注意
//Properties["Manufacturer"].Value 可能为Null意味着没有厂商信息
while (moe.MoveNext())
{
Dictionary<string, string> item_result = new Dictionary<string, string>();
foreach (var item in moe.Current.Properties)
{
if (item.Value != null)
{
if (item.Value is string[])
{
var list = (string[])item.Value;
for (int i = 0; i < list.Length; i++)
{
item_result[item.Name+"_"+i] = list[i];
}
}
else if (item.Value is UInt16[])
{
var list = (UInt16[])item.Value;
var bytes = new byte[list.Length];
for (int i = 0; i < list.Length; i++)
{
bytes[i] = (byte)list[i];
//result += "\r\n" + item.Name + "=>数组" + i + "=>" + list[i];
}
item_result[item.Name] = BytesToString(bytes);
}
else
{
item_result[item.Name] = item.Value.ToString();
}
}
}
list_result.Add(item_result);
}
}
catch { }
return list_result;
}
private static string GetManufacturer(string Manufacturer)
{
var ini_path = Application.StartupPath + "\\UserDb\\Manufacturer.ini";
@ -390,15 +474,82 @@ namespace RyHardWare
return GetMainHardware(false);
}
/// <summary>
/// 获取显示器的相关硬件ID
/// </summary>
/// <returns></returns>
public static List<string> GetMonitorPnpDeviceId()
{
List<string> monitors = new List<string>();
var result = GetWMI("root\\WMI", "SELECT * FROM WmiMonitorID");
for (int i = 0; i < result.Count; i++)
{
var item = result[i];
var txt = "";
var ManufacturerName = GetValue("ManufacturerName");
var UserFriendlyName = GetValue("UserFriendlyName");
var YearOfManufacture = GetValue("YearOfManufacture").ToInt();
var WeekOfManufacture = GetValue("WeekOfManufacture").ToInt();
if(ManufacturerName.Length>0 && UserFriendlyName.Length>0)
{
if (UserFriendlyName.StartsWith(ManufacturerName))
{
txt = UserFriendlyName;
}
else
{
txt = ManufacturerName + " " + UserFriendlyName;
}
if(txt== "LIX RuiTian2310P")
{
txt = "联想瑞天23.8寸(2310P)";
}
}
if (YearOfManufacture > 0 && WeekOfManufacture>0) {
var month = new DateTime(YearOfManufacture, 1, 1).AddDays(WeekOfManufacture*7).Month;
txt += "(" + YearOfManufacture + "年" + month + "月)";
}
if(txt.Length>0)
{
monitors.Add(txt);
}
string GetValue(string name)
{
if(item.ContainsKey(name))
{
return item[name];
}
else
{
return "";
}
}
}
return monitors;
}
/// <summary>
/// 获取主要硬件信息
/// </summary>
/// <param name="getbyXML">是否获取XML格式</param>
/// <returns></returns>
public static string GetMainHardware(bool getbyXML)
{
var Monitor = GetMonitorPnpDeviceId();
var Monitor_list = "";
if (Monitor.Count > 0)
{
for (int i = 0; i < Monitor.Count; i++)
{
if (Monitor_list.Length > 0) { Monitor_list += "/"; }
Monitor_list += Monitor[i];
}
}
if (getbyXML)
{
ryCommon.Storage mStor = new Storage();
if(Monitor_list.Length>0)
{
addValue("显示器", Monitor_list);
}
addValue("主板", GetBaseBoardInfo());
addValue("处理器", GetCPU());
addValue("显卡", GetVideoInfo());
@ -417,7 +568,12 @@ namespace RyHardWare
}
else
{
var content = "主板 " + HardWare.GetBaseBoardInfo();
string content="";
if (Monitor_list.Length > 0)
{
content = "显示器 " + Monitor_list+"\r\n";
}
content += "主板 " + HardWare.GetBaseBoardInfo();
content += "\r\n处理器 " + HardWare.GetCPU();
content += "\r\n显卡 " + HardWare.GetVideoInfo();
content += "\r\n内存 " + HardWare.GetMemoryInfo();

View File

@ -211,5 +211,9 @@ namespace ryCommonDb
/// </summary>
/// <returns></returns>
string GetLastError();
/// <summary>
/// 用时
/// </summary>
long UseTime { get; }
}
}

View File

@ -7,6 +7,7 @@ using DataParameter = System.Data.SqlClient.SqlParameter;
using DataCommand = System.Data.SqlClient.SqlCommand;
using DataAdapter = System.Data.SqlClient.SqlDataAdapter;
using ryCommon;
using System.Diagnostics;
namespace ryCommonDb
{
@ -214,8 +215,14 @@ namespace ryCommonDb
/// <returns></returns>
public System.Data.DataSet ReadData(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
try
{
if (myDb.SQL_cn.State == System.Data.ConnectionState.Closed)
{
myDb.SQL_cn.Open();
}
error_text = "";
DataCommand cmd = myDb.SQL_cn.CreateCommand();
cmd.Parameters.Clear();
@ -228,9 +235,16 @@ namespace ryCommonDb
ad.Dispose();
cmd.Parameters.Clear();
cmd.Dispose();
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return ds;
}
catch(Exception ex) { error_text = ex.Message; return new System.Data.DataSet(); }
catch(Exception ex) {
error_text = ex.Message;
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return new System.Data.DataSet();
}
}
/// <summary>
///
@ -282,8 +296,14 @@ namespace ryCommonDb
/// <returns></returns>
public int ExecuteNonQuery(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
try
{
if(myDb.SQL_cn.State== System.Data.ConnectionState.Closed)
{
myDb.SQL_cn.Open();
}
error_text = "";
DataCommand cmd = myDb.SQL_cn.CreateCommand();
cmd.Parameters.Clear();
@ -293,9 +313,15 @@ namespace ryCommonDb
int i = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cmd.Dispose();
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return i;
}
catch(Exception ex) { error_text = ex.Message; return -1; }
catch(Exception ex) {
error_text = ex.Message;
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return -1; }
}
/// <summary>
/// 执行SQL语句
@ -440,5 +466,9 @@ namespace ryCommonDb
list_param.Clear();
myDb.CloseDb();
}
/// <summary>
/// 用时
/// </summary>
public long UseTime { get;private set; } = 0;
}
}

View File

@ -9,6 +9,7 @@ using DataAdapter = MySql.Data.MySqlClient.MySqlDataAdapter;
using ryCommonDb;
using ryCommon;
using Newtonsoft.Json.Linq;
using System.Diagnostics;
namespace ryCommonDb
{
@ -226,6 +227,8 @@ namespace ryCommonDb
/// <returns></returns>
public System.Data.DataSet ReadData(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
try
{
error_text = "";
@ -247,9 +250,16 @@ namespace ryCommonDb
ad.Dispose();
cmd.Parameters.Clear();
cmd.Dispose();
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return ds;
}
catch(Exception ex) { error_text = ex.Message; return new System.Data.DataSet(); }
catch(Exception ex) {
error_text = ex.Message;
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return new System.Data.DataSet();
}
}
/// <summary>
///
@ -302,6 +312,8 @@ namespace ryCommonDb
/// <returns></returns>
public int ExecuteNonQuery(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
error_text = "";
try
{
@ -318,16 +330,20 @@ namespace ryCommonDb
{
retry_index = 0;
}
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return i;
}
catch(Exception ex) {
if(ex.Message.IndexOfEx("Connection must be valid and open.")>=0)
swt.Stop();
if (ex.Message.IndexOfEx("Connection must be valid and open.")>=0)
{
retry_index++;
ConnDb(myDb.fv_ConnStr);
return ExecuteNonQuery(sql, Parameter);
}
error_text = ex.Message;
UseTime = swt.ElapsedMilliseconds;
return -1; }
}
/// <summary>
@ -474,5 +490,9 @@ namespace ryCommonDb
list_param.Clear();
myDb.CloseDb();
}
/// <summary>
/// 用时
/// </summary>
public long UseTime { get;private set; } = 0;
}
}

View File

@ -8,6 +8,7 @@ using DataCommand = System.Data.SQLite.SQLiteCommand;
using DataAdapter = System.Data.SQLite.SQLiteDataAdapter;
using System.Windows.Forms;
using ryCommon;
using System.Diagnostics;
namespace ryCommonDb
{
@ -220,6 +221,8 @@ namespace ryCommonDb
/// <returns></returns>
public System.Data.DataSet ReadData(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
try
{
error_text = "";
@ -233,9 +236,16 @@ namespace ryCommonDb
ad.Fill(ds);
ad.Dispose();
cmd.Dispose();
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return ds;
}
catch(Exception ex) { error_text = ex.Message;return new System.Data.DataSet(); }
catch(Exception ex) {
error_text = ex.Message;
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return new System.Data.DataSet();
}
}
/// <summary>
///
@ -287,6 +297,8 @@ namespace ryCommonDb
/// <returns></returns>
public int ExecuteNonQuery(string sql, object[] Parameter)
{
Stopwatch swt = new Stopwatch();
swt.Start();
try
{
error_text = "";
@ -297,9 +309,15 @@ namespace ryCommonDb
cmd.CommandText = sql;
int i = cmd.ExecuteNonQuery();
cmd.Dispose();
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return i;
}
catch(Exception ex) { error_text = ex.Message; return -1; }
catch(Exception ex) {
error_text = ex.Message;
swt.Stop();
UseTime = swt.ElapsedMilliseconds;
return -1; }
}
/// <summary>
/// 执行SQL语句
@ -500,5 +518,9 @@ namespace ryCommonDb
list_param.Clear();
myDb.CloseDb();
}
/// <summary>
/// 用时
/// </summary>
public long UseTime { get;private set; } = 0;
}
}

View File

@ -22,6 +22,10 @@ namespace RyWeb
}
/// <summary>
/// 当前页面
/// </summary>
public string CurPageUrl { get; private set; } = "";
/// <summary>
///
/// </summary>
/// <param name="Timeout">超时时间</param>
@ -30,6 +34,16 @@ namespace RyWeb
this.Timeout= Timeout;
}
/// <summary>
///
/// </summary>
/// <param name="Timeout">超时时间</param>
/// <param name="RetryCount">重试次数</param>
public QuickWeb(int Timeout,int RetryCount)
{
this.Timeout = Timeout;
this.RetryCount = RetryCount;
}
/// <summary>
/// 以post方式获取网页源码
/// </summary>
/// <param name="url"></param>
@ -73,6 +87,10 @@ namespace RyWeb
return Post(url, post, "application/json", "");
}
/// <summary>
/// 重试次数
/// </summary>
public int RetryCount { get; set; } = 0;
/// <summary>
/// 头信息
/// </summary>
public string HeadText { get; set; } = "";
@ -89,22 +107,26 @@ namespace RyWeb
{
try
{
CurPageUrl = url;
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
URL = url,
Encoding = System.Text.Encoding.GetEncoding("utf-8"),
Accept = "text/html, application/xhtml+xml, */*",//Accept 可选项
Postdata = post,
PostEncoding= System.Text.Encoding.GetEncoding("utf-8"),
ContentType = ContentType,
Method = "POST",
Timeout = Timeout,
ReadWriteTimeout = Timeout,
UserAgent = UserAgent,
Referer=Referer,
KeepAlive = false,
ProxyIp= ProxyIp,
ProxyUserName= ProxyUserName,
ProxyPwd=ProxyPassWord,
Allowautoredirect= AllowAutoRedirect
Allowautoredirect= AllowAutoRedirect,
ResultType = ResultType.String
};
if (HeadText.Length > 0)
{
@ -119,6 +141,22 @@ namespace RyWeb
m.Cookie = cookie;
}
HttpResult r = t.GetHtml(m);
if (RetryCount > 0)
{
int retry = 0;
while (retry<RetryCount)
{
if (r.StatusCode == HttpStatusCode.RequestTimeout || r.StatusCode == HttpStatusCode.GatewayTimeout)
{
retry++;
r = t.GetHtml(m);
}
else
{
break;
}
}
}
return r;
}
catch
@ -165,6 +203,7 @@ namespace RyWeb
/// <returns></returns>
public long GetSize(string url,out string errormsg,out string RedirectUrl)
{
CurPageUrl = url;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, error) => true;
errormsg = "";
@ -188,7 +227,23 @@ namespace RyWeb
ProxyPwd = ProxyPassWord,
};
HttpResult r = t.GetHtml(m);
RedirectUrl=r.ResponseUri;
if (RetryCount > 0)
{
int retry = 0;
while (retry < RetryCount)
{
if (r.StatusCode == HttpStatusCode.RequestTimeout || r.StatusCode == HttpStatusCode.GatewayTimeout)
{
retry++;
r = t.GetHtml(m);
}
else
{
break;
}
}
}
RedirectUrl =r.ResponseUri;
if (r.Header!=null && r.Header["Refresh"]!=null)
{
var Refresh = r.Header["Refresh"].ToString();
@ -278,6 +333,10 @@ namespace RyWeb
size = r.Header["Content-Length"].ToInt64(0);
}
}
if (size == 0)
{
return 0;
}
if (size <=1000)
{
System.Net.ServicePointManager.DefaultConnectionLimit = 512;
@ -347,7 +406,7 @@ namespace RyWeb
public string UserAgent
{
get; set;
} = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
} = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0";
/// <summary>
/// 是否自动跳转
/// </summary>
@ -367,6 +426,7 @@ namespace RyWeb
{
try
{
CurPageUrl = url;
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
@ -397,6 +457,22 @@ namespace RyWeb
m.ProxyUserName = ProxyUserName;
m.ProxyPwd = ProxyPassWord;
HttpResult r = t.GetHtml(m);
if (RetryCount > 0)
{
int retry = 0;
while (retry < RetryCount)
{
if (r.StatusCode == HttpStatusCode.RequestTimeout || r.StatusCode == HttpStatusCode.GatewayTimeout)
{
retry++;
r = t.GetHtml(m);
}
else
{
break;
}
}
}
return r;
}
catch
@ -439,6 +515,7 @@ namespace RyWeb
{
try
{
CurPageUrl = url;
HttpHelper t = new HttpHelper();
HttpItem m = new HttpItem()
{
@ -467,6 +544,22 @@ namespace RyWeb
m.ProxyUserName = ProxyUserName;
m.ProxyPwd = ProxyPassWord;
HttpResult r = t.GetHtml(m);
if (RetryCount > 0)
{
int retry = 0;
while (retry < RetryCount)
{
if (r.StatusCode == HttpStatusCode.RequestTimeout || r.StatusCode == HttpStatusCode.GatewayTimeout)
{
retry++;
r = t.GetHtml(m);
}
else
{
break;
}
}
}
return r;
}
catch
@ -517,6 +610,12 @@ namespace RyWeb
byte[] byStr = encode.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
for (int i = 0; i < byStr.Length; i++)
{
if (byStr[i] >= 'a' && byStr[i] <= 'z' || byStr[i] >= 'A' && byStr[i] <= 'Z' || byStr[i] >= '0' && byStr[i] <= '9' || byStr[i] == '-' || byStr[i] == '_' || byStr[i] == '.' || byStr[i] == '~')
{
var aa = ((char)byStr[i]).ToString();
sb.Append(aa);
continue;
}
var item = Convert.ToString(byStr[i], 16);
if (item.Length == 1) { item = "0" + item; }
sb.Append(@"%" + item);
@ -536,6 +635,15 @@ namespace RyWeb
/// <summary>
/// 将相对网址转换成绝对网址
/// </summary>
/// <param name="rel_url"></param>
/// <returns></returns>
public string ConvertUrl(string rel_url)
{
return ConvertUrl(rel_url, CurPageUrl);
}
/// <summary>
/// 将相对网址转换成绝对网址
/// </summary>
/// <param name="rel_url">相对网址</param>
/// <param name="cur_pageUrl">当前页面地址</param>
/// <returns>转换后的绝对网址</returns>

View File

@ -167,6 +167,12 @@ namespace RyWeb
byte[] byStr = encode.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
for (int i = 0; i < byStr.Length; i++)
{
if(byStr[i]>='a' && byStr[i]<='z' || byStr[i]>='A' && byStr[i]<='Z' || byStr[i]>='0' && byStr[i]<='9' || byStr[i]=='-' || byStr[i]=='_' || byStr[i]=='.' || byStr[i]=='~')
{
var aa=((char) byStr[i]).ToString();
sb.Append(aa);
continue;
}
var item = Convert.ToString(byStr[i], 16);
if (item.Length == 1) { item = "0" + item; }
sb.Append(@"%" + item);

View File

@ -156,6 +156,10 @@ namespace ryCommon
if (ts.Seconds != 0 && seconds)
{
dateDiff += ts.Seconds.ToString() + "秒";
if(ts.TotalSeconds<=10)
{
dateDiff += ts.Milliseconds.ToString() + "毫秒";
}
}
}
catch

View File

@ -389,6 +389,13 @@ namespace ryCommon
SetFileAssociation(ExtName, sName, AssDes, filePath,iconPath);
SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero);
}
/// <summary>
/// 通知系统设置发生变化
/// </summary>
public static void UpdateSetNotify()
{
SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero);
}
[DllImport("shell32.dll")]
private static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
private static bool ClearUserChoice(string extension)

View File

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

View File

@ -91,10 +91,10 @@
<Compile Include="Common\FileFuns\Pram.cs" />
<Compile Include="Common\FileFuns\RyFiles.cs" />
<Compile Include="Common\FileFuns\RyImage.cs" />
<Compile Include="Common\FileFuns\RySetting.cs" />
<Compile Include="Common\FileFuns\SoundPlay.cs" />
<Compile Include="Common\FileFuns\Storage.cs" />
<Compile Include="Common\FileFuns\sType.cs" />
<Compile Include="Common\FileFuns\SuperFileSearch.cs" />
<Compile Include="Common\FileFuns\TxtFileEncoder.cs" />
<Compile Include="Common\FileFuns\WebP.cs" />
<Compile Include="Common\HardWare\HardWare.cs" />

View File

@ -133,32 +133,38 @@ namespace ryControls
SolidBrush brush = new SolidBrush(Color.FromArgb(255, 255, 255));
e.Graphics.FillRectangle(brush, e.Bounds);
}
Rectangle textRect = new Rectangle(3, e.Bounds.Y + 1, e.Bounds.Width-5, e.Bounds.Height - 2);
Rectangle textRect = new Rectangle(2, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height - 2);
switch (this.Items[e.Index])
{
case clsCbbItem item:
Image img = item.Img;
//图片绘制的区域
Rectangle imgRect = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img, imgRect);
//文本内容显示区域
textRect = new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height - 2);
Image img = item?.Img;
if (img != null)
{
//图片绘制的区域
Rectangle imgRect = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img, imgRect);
//文本内容显示区域
textRect = new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height);
}
break;
case ComboPopupItem item2:
Image img2 = item2.Image;
//图片绘制的区域
Rectangle imgRect2 = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img2, imgRect2);
//文本内容显示区域
textRect = new Rectangle(imgRect2.Right + 2, imgRect2.Y, e.Bounds.Width - imgRect2.Width, e.Bounds.Height - 2);
Image img2 = item2?.Image;
if (img2 != null)
{
//图片绘制的区域
Rectangle imgRect2 = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img2, imgRect2);
//文本内容显示区域
textRect = new Rectangle(imgRect2.Right + 2, imgRect2.Y, e.Bounds.Width - imgRect2.Width, e.Bounds.Height);
}
break;
}
//获得项文本内容,绘制文本
@ -167,9 +173,11 @@ namespace ryControls
//文本格式垂直居中
StringFormat strFormat = new StringFormat()
{
LineAlignment = StringAlignment.Center
LineAlignment = StringAlignment.Center,
};
e.Graphics.DrawString(itemText, new Font("微软雅黑", 11), Brushes.Black, textRect, strFormat);
TextFormatFlags flags = TextFormatFlags.VerticalCenter;
TextRenderer.DrawText(e.Graphics, itemText, this.Font, textRect, Color.Black, Color.Transparent, flags);
//e.Graphics.DrawString(itemText, Font, Brushes.Black, textRect, strFormat);
});
}

View File

@ -296,7 +296,7 @@ namespace BrightIdeasSoftware
public virtual bool Filter(object modelObject) {
if (this.ValueGetter == null || this.PossibleValues == null || this.PossibleValues.Count == 0)
return false;
if (modelObject == null) { return false; }
object result = this.ValueGetter(modelObject);
IEnumerable enumerable = result as IEnumerable;
if (result is string || enumerable == null)

View File

@ -4370,8 +4370,11 @@ namespace BrightIdeasSoftware
object data = null;
if (this.CopySelectionOnControlCUsesDragSource && this.DragSource != null)
data = this.DragSource.StartDrag(this, MouseButtons.Left, this.ModelToItem(selection[0]));
Clipboard.SetDataObject(data ?? new OLVDataObject(this, selection));
try
{
Clipboard.SetDataObject(data ?? new OLVDataObject(this, selection));
}
catch { }
}
/// <summary>
@ -4385,7 +4388,11 @@ namespace BrightIdeasSoftware
// the data object, like we do with CopySelectionToClipboard() above.
OLVDataObject dataObject = new OLVDataObject(this, objectsToCopy);
dataObject.CreateTextFormats();
Clipboard.SetDataObject(dataObject);
try
{
Clipboard.SetDataObject(dataObject);
}
catch { }
}
/// <summary>
/// 将所有对象的文本和HTML表示复制到剪贴板上。

View File

@ -454,10 +454,18 @@ namespace ryControls
{
if (ini != null)
{
Ini ini2 = new Ini(HolidayFolder + "\\" + dt_2.Year + ".ini");
int state = ini2.ReadIni("date", dt_2.ToString("MMdd"), -2);
if (state != -2)
{ rest_state = state; }
var ini_path2 = holiday_folder + "\\" + dt_2.Year + ".ini";
if (holiday_folder.StartsWith(".\\"))
{
ini_path2 = Application.StartupPath + "\\" + holiday_folder.Substring(2) + "\\" + dt_2.Year + ".ini";
}
if (System.IO.File.Exists(ini_path2))
{
Ini ini2 = new Ini(ini_path2);
int state = ini2.ReadIni("date", dt_2.ToString("MMdd"), -2);
if (state != -2)
{ rest_state = state; }
}
}
}
var ChinaHoliday = ChinaDate.GetChinaHoliday(dt_2);

View File

@ -1,4 +1,5 @@
using ryCommon;
using Newtonsoft.Json.Linq;
using ryCommon;
using ryCommon.Pram;
using System;
using System.Collections.Generic;
@ -34,11 +35,26 @@ namespace ryControls
/// <summary>
/// 配置存储路径
/// </summary>
public string FilePath = "";
public string FilePath { get; set; } = "";
/// <summary>
/// 设置XML内容
/// </summary>
public string SettingXML = "";
[Obsolete("当前属性已过期,请使用SettingContent代替")]
public string SettingXML
{
get
{
return SettingContent;
}
set
{
SettingContent = value;
}
}
/// <summary>
/// 获取/设置配置的内容(适用于xml和json)
/// </summary>
public string SettingContent { get; set; } = "";
private string Section = "Setting";
private List<Control_Info> list = new List<Control_Info>();
/// <summary>
@ -185,7 +201,7 @@ namespace ryControls
ryCommon.Storage myXML = new Storage();
if (filepath == "")
{
myXML.LoadFromXMLText(SettingXML);
myXML.LoadFromXMLText(SettingContent);
}
else
{
@ -379,6 +395,113 @@ namespace ryControls
}
}
}
else if (FileType == SettingType.Json)
{
JObject myJson = [];
try
{
if (filepath == "")
{
myJson = JObject.Parse(SettingContent);
}
else
{
myJson = JObject.Parse(RyFiles.ReadAllText(filepath));
}
}
catch { }
for (int i = 0; i < list.Count; i++)
{
Control_Info item = list[i];
switch (item.control)
{
case CheckBox chk:
chk.Checked = myJson.GetJsonValue(item.id, item.defValue.ToBool());
break;
case TextBox txt:
txt.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
case TextBoxEx2 txt:
txt.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
case HotkeyTextBox txt:
txt.HotKey = myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
case DoubleText txt:
txt.selectId = myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
case NumericUpDown num:
num.Value = myJson.GetJsonValue(item.id, item.defValue.ToDecimal()).ToDecimal(num.Minimum, num.Maximum, (decimal)item.defValue);
break;
case DateTimePicker dt_picker:
try
{
dt_picker.Value = RyDate.UnixTimeToDateTime(myJson.GetJsonValue(item.id, RyDate.DateTimeToUnixTime((DateTime)item.defValue).ToString()));
}
catch
{
dt_picker.Value = (DateTime)item.defValue;
}
break;
case ComboBox cbb:
#region ComboBox
if (item.value_type == CValueType.ItemIndex || item.value_type == CValueType.Default)
{
int def_value = item.defValue.ToInt(0);
int value = myJson.GetJsonValue(item.id, item.defValue.ToInt(0));
if (cbb.Items.Count > value && value >= 0)
{
cbb.SelectedIndex = value;
}
else
{
if (cbb.Items.Count > def_value && def_value >= 0)
cbb.SelectedIndex = def_value;
else
cbb.SelectedIndex = 0;
}
}
else if (item.value_type == CValueType.ItemText)
{
try
{
cbb.Text = myJson.GetJsonValue(item.id, item.defValue.ToString());
}
catch { cbb.Text = item.defValue.ToString(); }
}
else if (item.value_type == CValueType.ObjectItem)
{
#region ObjectItem
string _id = myJson.GetJsonValue(item.id, item.defValue.ToString());
bool haveRecord = false;
for (int m = 0; m < cbb.Items.Count; m++)
{
switch (cbb.Items[m])
{
case ObjectItem c_item:
if (c_item.Id == _id)
{
cbb.SelectedIndex = m;
haveRecord = true;
break;
}
break;
}
}
if (!haveRecord)
{
cbb.SelectedIndex = 0;
}
#endregion
}
break;
#endregion
default:
item.control.Text=myJson.GetJsonValue(item.id, item.defValue.ToString());
break;
}
}
}
}
/// <summary>
/// 保存配置
@ -391,7 +514,7 @@ namespace ryControls
ryCommon.Storage myXML = new Storage();
if (filepath == "")
{
myXML.LoadFromXMLText(SettingXML);
myXML.LoadFromXMLText(SettingContent);
}
else
{
@ -453,11 +576,8 @@ namespace ryControls
break;
}
}
if (filepath == "")
{
SettingXML=myXML.XMLText;
}
else
SettingContent = myXML.XMLText;
if (filepath.Length>0)
{
myXML.SaveToFile(filepath);
}
@ -521,6 +641,261 @@ namespace ryControls
}
}
}
else if (FileType == SettingType.Json)
{
JObject myJson = new JObject();
try
{
if (filepath == "")
{
myJson = JObject.Parse(SettingContent);
}
else
{
myJson = JObject.Parse(RyFiles.ReadAllText(filepath));
}
}
catch { }
for (int i = 0; i < list.Count; i++)
{
Control_Info item = list[i];
switch (item.control)
{
case CheckBox chk:
myJson[item.id]= chk.Checked;
break;
case TextBox txt:
myJson[item.id] = txt.Text;
break;
case TextBoxEx2 txt:
myJson[item.id] = txt.Text;
break;
case HotkeyTextBox txt:
myJson[item.id] = txt.HotKey;
break;
case DoubleText txt:
myJson[item.id] = txt.selectId;
break;
case NumericUpDown num:
myJson[item.id] = num.Value;
break;
case DateTimePicker dt_picker:
myJson[item.id] = RyDate.DateTimeToUnixTime(dt_picker.Value).ToString();
break;
case ComboBox cbb:
#region ComboBox
if (item.value_type == CValueType.ItemIndex || item.value_type == CValueType.Default)
{
myJson[item.id] = cbb.SelectedIndex;
}
else if (item.value_type == CValueType.ItemText)
{
myJson[item.id] = cbb.Text;
}
else if (item.value_type == CValueType.ObjectItem)
{
switch (cbb.SelectedItem)
{
case ObjectItem c_item:
myJson[item.id] = c_item.Id;
break;
}
}
break;
#endregion
case null:
myJson[item.id] = item.defValue.ToString();
break;
default:
myJson[item.id] = item.control.Text;
break;
}
}
SettingContent = myJson.ToString();
if (filepath.Length > 0)
{
RyFiles.WriteAllText(filepath, myJson.ToString());
}
}
}
/// <summary>
/// 保存到内存中的对象
/// </summary>
private object MemObject { get; set; } = null;
/// <summary>
/// 读取内容到内存中
/// </summary>
public void ReadToMem()
{
string filepath = FilePath;
if (FileType == SettingType.XML)
{
ryCommon.Storage myXML = new Storage();
if (filepath.Length==0)
{
myXML.LoadFromXMLText(SettingContent);
}
else
{
myXML.LoadFromFile(filepath);
}
myXML.SelectNode2("id", Section);
MemObject = myXML;
}
else if (FileType == SettingType.Json)
{
JObject myJson =null;
try
{
if (filepath == "")
{
myJson = JObject.Parse(SettingContent);
}
else
{
myJson = JObject.Parse(RyFiles.ReadAllText(filepath));
}
}
catch { }
MemObject = myJson;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public int GetFromMem(string name,int defValue)
{
switch(MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public long GetFromMem(string name, long defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public bool GetFromMem(string name, bool defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public double GetFromMem(string name, double defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public decimal GetFromMem(string name, decimal defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public string GetFromMem(string name, string defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, defValue);
case JObject jo:
return jo.GetJsonValue(name, defValue);
default:
return defValue;
}
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public string GetFromMem(string name)
{
return GetFromMem(name, "");
}
/// <summary>
/// 从内存中读取配置
/// </summary>
/// <param name="name"></param>
/// <param name="min"></param>
/// <param name="max"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public int GetFromMem(string name, int min, int max, int defValue)
{
switch (MemObject)
{
case Storage myXML:
return myXML.GetAttrValue(name, min,max,defValue);
case JObject jo:
return jo.GetJsonValue(name, min, max, defValue);
default:
return defValue;
}
}
}
}

View File

@ -40,7 +40,7 @@ namespace ryControls
LinearGradientBrush brush = new LinearGradientBrush(e.Bounds, Color.FromArgb(255, 251, 237),
Color.FromArgb(255, 236, 181), LinearGradientMode.Vertical);
//填充区域
Rectangle borderRect = new Rectangle(3, e.Bounds.Y, e.Bounds.Width - 5, e.Bounds.Height - 2);
Rectangle borderRect = new Rectangle(2, e.Bounds.Y, e.Bounds.Width - 5, e.Bounds.Height - 1);
e.Graphics.FillRectangle(brush, borderRect);
//画边框
@ -57,27 +57,43 @@ namespace ryControls
{
case clsCbbItem item:
Image img = item.Img;
//图片绘制的区域
Rectangle imgRect = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img, imgRect);
//文本内容显示区域
textRect = new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height - 2);
if (img != null)
{
//图片绘制的区域
Rectangle imgRect = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img, imgRect);
//文本内容显示区域
textRect = new Rectangle(imgRect.Right + 2, imgRect.Y, e.Bounds.Width - imgRect.Width, e.Bounds.Height - 2);
}
else
{
//文本内容显示区域
//textRect = new Rectangle(2, e.Bounds.Y + 3, e.Bounds.Width, e.Bounds.Height - 2);
}
break;
case ComboPopupItem item2:
Image img2 = item2.Image;
//图片绘制的区域
Rectangle imgRect2 = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img2, imgRect2);
//文本内容显示区域
textRect = new Rectangle(imgRect2.Right + 2, imgRect2.Y, e.Bounds.Width - imgRect2.Width, e.Bounds.Height - 2);
if (img2 != null)
{
//图片绘制的区域
Rectangle imgRect2 = new Rectangle(6, e.Bounds.Y + 3, 16, 16);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
e.Graphics.DrawImage(img2, imgRect2);
//文本内容显示区域
textRect = new Rectangle(imgRect2.Right + 2, imgRect2.Y, e.Bounds.Width - imgRect2.Width, e.Bounds.Height - 2);
}
else
{
//文本内容显示区域
textRect = new Rectangle(2, e.Bounds.Y + 3, e.Bounds.Width, e.Bounds.Height - 2);
}
break;
}
//获得项文本内容,绘制文本
@ -88,7 +104,8 @@ namespace ryControls
{
LineAlignment = StringAlignment.Center
};
e.Graphics.DrawString(itemText, new Font("微软雅黑", 11), Brushes.Black, textRect, strFormat);
var txt_font = new Font(this.Font.FontFamily, this.Font.Size-1f);
e.Graphics.DrawString(itemText, txt_font, Brushes.Black, textRect, strFormat);
}
/// <summary>
///