From 800c766a67066f040d4f68a8173d2f05c8cd3cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=91=ABIntel?= Date: Sun, 27 Dec 2020 17:04:15 +0800 Subject: [PATCH] =?UTF-8?q?###=202020-12-27=20dev=E6=9B=B4=E6=96=B0=20####?= =?UTF-8?q?=20VSoft=20=20=20=20V1.0.2012.2701=20-=20*.[=E6=96=B0=E5=A2=9E]?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87=E5=8F=8C?= =?UTF-8?q?=E5=87=BB=E9=BC=A0=E6=A0=87=E4=B8=AD=E9=94=AE=E3=80=81=E4=BE=A7?= =?UTF-8?q?=E9=94=AE=E7=9A=84=E6=96=B9=E5=BC=8F=E6=9D=A5=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=BB=E7=95=8C=E9=9D=A2=E3=80=82=20-=20*.[=E6=94=B9?= =?UTF-8?q?=E8=BF=9B]=E5=BD=93=E5=A4=9A=E6=AC=A1=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E5=8C=96=E5=90=8E,=E4=B8=8D=E5=86=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E5=8C=96=E9=80=9A=E7=9F=A5=E3=80=82=20-=20*.?= =?UTF-8?q?[=E6=94=B9=E8=BF=9B]=E6=94=B9=E8=BF=9B=E6=A0=8F=E7=9B=AE?= =?UTF-8?q?=E5=92=8C=E5=88=86=E7=B1=BB=E6=8E=A7=E4=BB=B6=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bin/Debug/VSoft/DyLine.exe | Bin 11776 -> 11776 bytes Bin/Debug/VSoft/MyDb.dll | Bin 140800 -> 140800 bytes Bin/Debug/VSoft/MyDb.xml | 9693 +++++++++-------- Bin/Debug/VSoft/MyDb_SQLite.dll | Bin 16384 -> 16384 bytes Bin/Debug/VSoft/UserDb/Setting.xml | 4 +- Bin/Debug/VSoft/UserDb/Softs.dat | Bin 24576 -> 24576 bytes Bin/Debug/VSoft/UserDb/Win.dat | 2 +- Bin/Debug/VSoft/VSoft.dll | Bin 225792 -> 230912 bytes Bin/Debug/VSoft/VSoftBox.exe | Bin 94208 -> 94208 bytes Bin/Debug/VSoft/cUpdate.dat | 2 +- Bin/Debug/VSoft/ryControls.dll | Bin 451072 -> 455168 bytes Bin/Debug/VSoft/ryUpdate.dll | Bin 61440 -> 61440 bytes CHANGELOG.md | 23 +- Source/.vs/VSoft/v16/.suo | Bin 136192 -> 171520 bytes Source/DyLine/DyLine.csproj | 158 +- Source/VSoftBox/Properties/AssemblyInfo.cs | 4 +- Source/VSoftBox/VSoftBox.csproj | 184 +- Source/VSoft_Dll/Config/Soft_Config.cs | 12 +- .../VSoft_Dll/Config/frmSetting.Designer.cs | 341 +- Source/VSoft_Dll/Config/frmSetting.cs | 110 +- Source/VSoft_Dll/Config/frmSetting.resx | 398 +- Source/VSoft_Dll/FrmInCMD.Designer.cs | 3 - Source/VSoft_Dll/FrmInCMD.cs | 18 +- Source/VSoft_Dll/FrmVSoft.Designer.cs | 1054 +- Source/VSoft_Dll/FrmVSoft.cs | 2701 ++--- Source/VSoft_Dll/FrmVSoft.resx | 614 +- Source/VSoft_Dll/IconViewEx.cs | 8 +- Source/VSoft_Dll/Prams/GlobalMouseHandler.cs | 37 + Source/VSoft_Dll/Prams/MouseHook.cs | 207 + Source/VSoft_Dll/Prams/Run.cs | 266 +- Source/VSoft_Dll/Prams/SoftInfo.cs | 4 +- Source/VSoft_Dll/Properties/AssemblyInfo.cs | 4 +- Source/VSoft_Dll/TabList.cs | 107 +- Source/VSoft_Dll/VSoft.csproj | 348 +- 34 files changed, 8385 insertions(+), 7917 deletions(-) create mode 100644 Source/VSoft_Dll/Prams/GlobalMouseHandler.cs create mode 100644 Source/VSoft_Dll/Prams/MouseHook.cs diff --git a/Bin/Debug/VSoft/DyLine.exe b/Bin/Debug/VSoft/DyLine.exe index 1b4dc2996e0b29d07dfea794114d3011020c1d93..97e1b6720fad685ef156becf7d4971c2c16912f2 100644 GIT binary patch delta 161 zcmZpOX^5H7!Mv^h>%?wZ#$yv#hBFpUW@M~qJTtiwNG{#X$Yd-dz}c`ZWb(m#&P&a> z=RK2=OWy1vH-VMc%3wwd0}wC)apvTQ%G&aIdX5(V_i?+-s;CNT^nTdE2$XTPit(*f za7iplES{{d;wCiH38V)CHiOs-6BWgP7R^&BV4P^cvYAiq7c0{Vqs@Xk?}2=F0Ae39 AeE8_GcwjQUYOhnBv)=`WHOc!IGs??d35hz|24B` zl-1fk;@<2cH-VM6YTm=$3_!pH#JQ6nDr+nIrcT_SA-mssjmx&_?J>6Xj6fMztC(jU z6Q9p&d9r))^97BQwN>1B=Q@G(LBRIObt=+8i)N`5FmC2k`^Cz1#%Qyk&U?m*2J8UD C3pv~X diff --git a/Bin/Debug/VSoft/MyDb.dll b/Bin/Debug/VSoft/MyDb.dll index 87d72d05a60110283f3bf50877c758f6aa4b354e..16596cd4a1b435c3e4144b267449884eb1ac5183 100644 GIT binary patch delta 37667 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 delta 37372 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 diff --git a/Bin/Debug/VSoft/MyDb.xml b/Bin/Debug/VSoft/MyDb.xml index f4779a0..a2f065f 100644 --- a/Bin/Debug/VSoft/MyDb.xml +++ b/Bin/Debug/VSoft/MyDb.xml @@ -1,4829 +1,4864 @@ - - - - MyDb - - - - - 基于XML实现的权限类 - - - - - 用户名 - - - - - 用户id - - - - - 密码 - - - - - 权限控制Id - - - - - 用户备注 - - - - - 是否是管理员权限 - - - - - 是否是超级管理员权限 - - - - - 设置权限 - - 权限名称 - 权限值 - 返回是否设置成功 - - - - 获取权限 - - 权限名称 - 默认权限值 - 返回权限值 - - - - 获取权限 - - 权限名称 - 返回权限值 - - - - 批量导入权限 - - 权限相关的内容 - 返回是否执行成功 - - - - 导出权限 - - 返回导出文本 - - - - 清除所有权限 - - 返回是否执行成功 - - - - 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 - - - - - 汉字的机内码数组 - - - - - 机内码对应的拼音数组 - - - - - 把汉字转换成拼音(全拼) - - 汉字字符串 - 转换后的拼音(全拼)字符串 - - - - 把汉字转换成拼音(全拼) - - 汉字字符串 - 转换后的拼音(全拼)字符串 - - - - 把汉字转换成拼音(首拼) - - 汉字字符串 - 转换后的拼音(首拼)字符串 - - - - 把汉字转换成拼音(全拼) - - 汉字字符串 - 用指定字符分隔 - 转换后的拼音(全拼)字符串 - - - - 汉字转拼音缩写 - - 要转换的汉字字符串 - 拼音缩写 - - - - 汉字转拼音缩写 (字符串) (小写) (空格间隔) - - 要转换的汉字字符串 - 拼音缩写 - - - - 汉字转拼音缩写 (大写) - - 要转换的汉字字符串 - 拼音缩写 - - - - 汉字转拼音缩写 (字符串)(大写)(空格间隔) - - 要转换的汉字字符串 - 拼音缩写 - - - - 取单个字符的拼音声母 - - 要转换的单个汉字 - 拼音声母 - - - - 取单个字符的拼音声母 - - 要转换的单个汉字 - 拼音声母 - - - - Ini操作类 - - - - - 写入Ini - - - - - - - - - - 获取Ini - - - - - - - - - - - - 声明INI文件的读操作函数 GetPrivateProfileString() - - - - - - - - - - - - 声明INI文件的读操作函数 GetPrivateProfileString() - - - - - - - - - - 声明INI文件的读操作函数 GetPrivateProfileString() - - - - - - - - - - - - 获取所有节点名称(Section) - - 存放节点名称的内存地址,每个节点之间用\0分隔 - 内存大小(characters) - Ini文件 - 内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够 - - - - 编码 - - - - - Ini操作类 - - - - - - 根据section取所有key和值 - - - - - - - 读取INI文件中指定INI文件中的所有节点名称(Section) - - 所有节点,没有内容返回string[0] - - - - 读取INI文件 - - 段,格式[] - 键 - 返回byte类型的section组或键值组 - - - - 根据section取所有key - - - - - - - 写入ini - - - - - - - - 写入ini - - - - - - - - 写入ini - - - - - - - - 写入ini - - - - - - - - 写入ini - - - - - - - - 写入Ini - - - - - - - - 读取Ini - - - - - - - - 读取Ini - - - - - - - - - 读取Ini - - - - - - - - - 读取Ini - - - - - - - - - - - 写入ini - - - - - - - - - 删除Ini的Key - - - - - - - 删除Ini节点 - - - - - - 控件信息 - - - - - id - - - - - 控件对象 - - - - - 控件值类型 - - - - - 默认值 - - - - - 值类型 - - - - - 默认 - - - - - 取列表顺序值 - - - - - 取当前选择的列表值 - - - - - 取对象值 - - - - - 保存的设置类型 - - - - - Ini - - - - - XML - - - - - 对象值 - - - - - 显示的文本 - - - - - 图片序号 - - - - - id - - - - - Tag值 - - - - - 显示文本值 - - - - - - 星期数据 - - - - - 一周的开始时间 - - - - - 一周的结束时间 - - - - - XML操作类 - - - - - XML操作类 - - - - - 从XML文本中加载数据 - - - - - - 从指定的XML文本中加载 - - XML文本 - 如为1,表示加载成功,为0为失败 - - - - 载入空的XML文档 - - 如为1,表示加载成功,为0为失败 - - - - 从指定的文件中加载 - - XML文件路径 - 如为1,表示加载成功,为0为失败 - - - - 保存到指定文件中 - - 文件路径 - 如为1,表示保存成功,为0为失败 - - - - 判断节点是否存在 - - 属性名 - 属性值 - 返回1,表示存在,其它表示不存在 - - - - 定位节点 - - 属性名 - 属性值 - 返回第一个符合要求的结果 - - - - 定位节点,如果找不到节点,就新建一个节点 - - 属性名 - 属性值 - 返回第一个符合要求的结果 - - - - 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。 - - 返回第一个符合要求的结果 - - - - 定位设置节点 - - 返回第一个符合要求的结果 - - - - 在节点后插入数据 - - - - - - - 在节点前插入数据 - - - - - - - 获取节点数量 - - 属性名 - 属性值 - 返回符合要求的结果数量 - - - - 获取节点数量 - - 返回符合要求的结果数量 - - - - 获取节点数量 - - 属性名 - 属性值 - - - - 返回符合要求的结果数量 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 设置节点值 - - 属性名 - 属性值 - 如为1,表示加载成功,为0为失败 - - - - 读取指定节点的值 - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 获取属性值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取所有的节点名称 - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 读取指定节点的值 - - - - - - - - 获取XML文件的根元素 - - - - - 获取所有列表 - - 如为1,表示获取成功,为0为失败 - - - - 获取所有列表 - - 如为1,表示获取成功,为0为失败 - - - - 新增节点 - - - - - - - - 新增节点并定位到新节点 - - - - - - - - 新增设置节点并定位 - - - - - - 在指定节点前新增节点并定位到新节点 - - - - - - - - - 获取当前节点 - - - - - - 删除节点 - - - - - - 获取XML文本 - - - - - - 获取XML文本 - - - - - - 获取文本 - - - - - - 获取文本 - - - - - - 字符串操作类 - - - - - 字符串转Base64 - - - - - - - Base64转字符串 - - - - - - - 转换指定字符串为布尔类型 - - - - - 转换指定字符串为Double类型 - - - - - 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. - - 第一个日期和时间 - 第二个日期和时间 - - - - - 已重载.计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. - - 一个日期和时间 - - - - - 转换指定字符串为Int类型 - - - - - 转换指定字符串为Int类型 - - - - - 转换指定布尔类型为Int类型,true为1,false为0 - - - - - 判断指定字符串是否是布尔类型 - - - - - 判断指定字符串是否是Double类型 - - - - - 判断指定字符串是否是Int类型 - - - - - 根据年月日转换成日期 - - - - - - - - - 追加字符 - - - - - 获取2个字符串中间的内容,point1为空表示从首位开始算,point2为空表示算到结尾。 - - - - - 判断字符串是否只包含数字或英文 - - - - - - - 判断字符串是否匹配,支持?*通配符 - - 待匹配的字符串 - 匹配的通配符 - - - - - 通配符替换 - - - - - - - - - 获取匹配的内容 - - - - - - - - - 文件时间 - - - - - 创建时间 - - - - - 最后修改时间 - - - - - 访问时间 - - - - - 图片类型 - - - - - Bmp图片 - - - - - Jpeg图片 - - - - - Png图片 - - - - - Gif动态图片 - - - - - Tiff图片 - - - - - 对变量的拓展 - - - - - 替换文本(忽略大小写) - - - 需要替换的内容 - 替换后的内容 - - - - - 替换文本(忽略大小写),可支持通配符 - - - - - 是否是通配符表达式,不是,则普通替换,忽略大小写,是,则启用通配符替换 - - - - - 获取符合要求的第一个结果 - - - - 是否是正则 - - - - - 查找字符串,忽略大小写 - - - - - - - - - 查找字符串,忽略大小写 - - - - - - - - 判断字符串是否是数字或英文 - - - - - - - 是否在指定范围内 - - - - - - - - - 是否在指定范围内 - - - - - - - - - 转换指定字符串为Int类型 - - - 最小值 - 最大值 - 如果字符串不在范围内,则使用本默认值 - - - - - 转换指定布尔类型到Int类型,true为1,false为0 - - - - - - - 将指定类型转换成整型 - - - - - - - - 将指定类型转换成整型 - - - - - - - 将指定类型转换成长整型 - - - - - - - - 将指定类型转换成长整型 - - - - - - - 转换指定类型为Double类型 - - - - - - - - 转换指定类型为Double类型 - - - - - - - 转换DateTime类型到日期时间字符串 - - - - - - - 转换DateTime类型到日期字符串 - - - - - - - 转换DateTime类型到日期星期字符串 - - - - - - - 转换DateTime类型到Unix时间戳 - - - - - - - 转换Unix时间戳到DateTime类型 - - - - - - - 判断字符串是否与内容匹配 - - - - - - - - 将变量值转换成Double类型,如果不在指定区域范围内,则使用默认值 - - - - - - - - - - 转换到文件大小字符串 - - - - - - - 转换到文件大小字符串 - - - - - - - 转换指定类型为Decimal类型 - - - - - - - - 将变量值转换成Decimal类型 - - - - - - - 将变量值转换成Decimal类型,如果不在指定区域范围内,则使用默认值 - - - - - - - - - - 转换指定类型为DateTime类型 - - - - - - - - 将变量值转换成DateTime类型 - - - - - - - 转换指定类型为布尔类型 - - - - - - - 追加字符 - - - - - - - - 获取指定字符串之间的内容 - - - - - - - - - 获取指定字符串之间的内容 - - - - - - - - - - - - 判断指定字符串是否是Int类型 - - - - - - - 判断指定字符串是否是Double类型 - - - - - - - 判断是否是布尔类型 - - - - - - - 将字符串转换为Base64类型 - - - - - - - 判断字符串是否在指定长度 - - - - - - - - - 判断能否转换成日期格式 - - - - - - - 文件信息 - - - - - 获取版本号 - - - - - 获取版本号 - - - - - - - 判断是否是管理员方式运行 - - - - - - Hosts操作类 - - - - - 获取并转换hosts内容 - - hosts内容 - - - - - 获取hosts并转换hosts内容 - - hosts内容 - - - - - 追加内容到hosts里 - - 要追加的内容列表,每一行为ip 域名的格式 - 0表示无需新增,-1表示添加失败,1表示追加成功 - - - - 追加内容到hosts里 - - 要追加的内容 - 0表示无需新增,-1表示添加失败,1表示追加成功 - - - - 追加内容到hosts里 - - ip地址 - 域名 - 0表示无需新增,-1表示添加失败,1表示追加成功 - - - - 从hosts文件里删除内容 - - 要删除的内容 - 0表示无需删除,-1表示添加失败,1表示删除成功 - - - - 从hosts文件里删除内容 - - ip地址 - 域名 - 0表示无需删除,-1表示添加失败,1表示删除成功 - - - - Host信息 - - - - - IP - - - - - 域名 - - - - - 注释 - - - - - 是否要删除 - - - - - 音频播放类 - - - - - 临时音频文件 - - - - - 父窗口句柄 - - - - - 声音标签 - - - - play synchronously (default) - - - play asynchronously - - - silence (!default) if sound not found - - - pszSound points to a memory file - - - loop the sound until next sndPlaySound - - - don’t stop any currently playing sound - - - Stop Playing Wave - - - don’t wait if the driver is busy - - - name is a registry alias - - - alias is a predefined id - - - name is file name - - - name is resource name or atom - - - - 音频播放类 - - embedded music file - 临时保存的文件位置 - 父窗口句柄 - - - - 音频播放类 - - 要播放的音频位置 - 父窗口句柄 - - - - 音频播放类 - - - 父窗口句柄 - - - - 播放音频 - - - - - - 播放音频 - - - - - 关闭音频 - - - - - 文件操作类 - - - - - - - - - - 删除单个文件。 - - 删除的文件名 - 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 - 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 - 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 - 反馈错误消息的字符串 - 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 - - - - 删除单个文件。 - - 删除的文件名 - 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 - 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 - - - - 永久删除单个文件。 - - 永久删除的文件名 - 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 - - - - 删除一组文件。 - - 字符串数组,表示一组文件名 - 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 - 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 - 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 - 反馈错误消息的字符串 - 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 - - - - 移动文件到指定路径下 - - 要移动的文件名 - 移动到的目的路径 - - - - - 移动一个文件到指定路径下 - - 要移动的文件名 - 移动到的目的路径 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 指示是否显示进度对话框 - 指示当文件名重复时,是否自动为新文件加上后缀名 - 反馈错误消息的字符串 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 - - - - 移动一组文件到指定的路径下 - - 要移动的文件名数组 - 移动到的目的路径 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 指示是否显示进度对话框 - 指示当文件名重复时,是否自动为新文件加上后缀名 - 反馈错误消息的字符串 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 - - - - 复制文件到指定的文件名或路径 - - 要复制的文件名 - 复制到的目的文件名或路径 - - - - - 复制文件到指定的文件名或路径 - - 要复制的文件名 - 复制到的目的文件名或路径 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 指示是否显示进度对话框 - 指示当文件名重复时,是否自动为新文件加上后缀名 - 返回错误信息 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 - - - - 复制一组文件到指定的路径 - - 要复制的文件名数组 - 复制到的目的路径 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 指示是否显示进度对话框 - 指示当文件名重复时,是否自动为新文件加上后缀名 - 返回错误信息 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 - - - - 重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法 - - 要复制的文件名 - 复制到的目的文件名或路径 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 返回错误信息 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 - - - - 删除单个或多个文件 - - 删除的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 - 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 - 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 - 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 - 反馈错误消息的字符串 - 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 - - - - 移动或复制一个或多个文件到指定路径下 - - 操作类型,是移动操作还是复制操作 - 要移动或复制的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 - 移动到的目的位置 - 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 - 指示是否显示进度对话框 - 指示当文件名重复时,是否自动为新文件加上后缀名 - 反馈错误消息的字符串 - 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 - - - - 如果指定文件夹不存在,则创建文件夹 - - - - - - 获取一个文件的全名 - - 文件名 - 返回生成文件的完整路径名 - - - - 获取一个文件的全名 - - 文件名 - 返回生成文件的完整路径名 - - - - 解释错误代码 - - 代码号 - 返回关于错误代码的文字描述 - - - - 运行文件 - - - - - - - - /运行文件 - - - - - - - - 运行程序 - - - - - - - 打开文件 - - - - - - - 打开文件夹并定位文件 - - - - - - - 打开网址 - - - - - - - 判断文件名是否有效 - - - - - - - 转换到有效文件名 - - - - - - - 追加日志 - - - - - - 追加文件 - - - - - - 读取文件内容,可以自动识别文件编码 - - - - - - - 读取文件所有行,可以自动识别文件编码 - - - - - - - 写入所有文本行到文件,如果文件夹不存在,会自动创建 - - - - - - - - 写入所有文本到文件,如果文件夹不存在,会自动创建 - - - - - - - - 从文件中加载图片,使用本方法,不会导致图片文件被占用。 - - - - - - 获取文件大小 - - - - - - - 添加文件到指定文件夹,会进行自动重命名,并返回重命名后的文件名(含路径) - - 要添加的文件路径 - 要添加到的文件夹 - 是否根据时间进行重命名 - 返回是否成功执行 - 成功执行则返回路径,否则返回空 - - - - 获取文件大小字符串 - - - - - - - 获取文件大小字符串 - - - - - - - 复制内容到剪切板 - - - - - - 添加某个控件为支持拖放属性 - - - - - - - 保存高质量不失真照片 - - - - - - - - 保存高质量不失真照片 - - - - - - - - 保存高质量不失真照片 - - - - - - - - 获取绝对路径 - - - - - - - 获取相对路径 - - - - - - - 获取图标 - - - - - - - - - - - - - - 销毁图标 - - - - - - - 获取文件图标 - - - - - - - - - - 用于取得一个文本文件的编码方式(Encoding)。 - - - - - 用于取得一个文本文件的编码方式(Encoding)。 - - - - - 取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。 - - 文件名。 - - - - - 取得一个文本文件流的编码方式。 - - 文本文件流。 - - - - - 取得一个文本文件的编码方式。 - - 文件名。 - 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 - - - - - 取得一个文本文件流的编码方式。 - - 文本文件流。 - 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 - - - - - 通过给定的文件流,判断文件的编码类型 - - 文件流 - 文件的编码类型 - - - - 判断是否是不带 BOM 的 UTF8 格式 - - - - - - - 新模态窗体 - - - - - 设置窗体返回的结果值,并关闭窗体。 - - 当前窗体 - 模态变量 - 防止 - - - - 窗体返回的结果事件 - - - - - - - 当打开的窗体返回结果时激发 - - - - - 窗体返回的状态 - - - - - 实例化类 - - 父窗体,如果为null,则取桌面为父窗体 - - - - - 获取最顶级的父窗口 - - - - - - 显示新模态窗体,会暂时禁用父窗体,关闭当前窗体后,父窗体会恢复。 - - - - - 只运行一个实例,打开后,所有窗体都依然有效。 - - - - - - 显示窗体 - - 显示的位置 - - - - 显示在父窗体中间 - - - - - 窗体显示位置 - - - - - 右上角 - - - - - 顶部中间 - - - - - 顶部右边 - - - - - 中间 - - - - - 左下角 - - - - - 底部中间 - - - - - 右下角 - - - - - 父窗体居中 - - - - - 日期时间的操作类 - - - - - 获取当前是周几,周一到周日,分别是1-7. - - - - - - - 获取当前是周几,1-7,分别是返回一到日. - - - - - - - 获取当前是周几,输入日期,根据周几,分别是返回一到日. - - - - - - - 获取一周的开始和结束,开始时间为第一天的0点,结束时间以最后一天的0点为结束时间 - - - - - - - 获取2个日期相差几周 - - - - - - - - 获取2个日期相差几个月 - - - - - - - - 获取一个月的开始 - - - - - - - 判断是否在同一个星期。 - - - - - - - - 判断是否在同一个月。 - - - - - - - - 判断是否在同一天 - - - - - - - - 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. - - 第一个日期和时间 - 第二个日期和时间 - - - - - 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. - - 第一个日期和时间 - 第二个日期和时间 - 是否显示秒 - - - - - 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. - - 一个日期和时间 - - - - - 将c# DateTime时间格式转换为Unix时间戳格式 - - 时间 - long - - - - 时间戳转为C#格式时间 - - - - - - - 将c# DateTime时间格式转换为js时间戳格式 - - 时间 - long - - - - JS时间戳转为C#格式时间 - - - - - - - 根据年月日转换成日期 - - - - - - - - - 根据日期和时间转换成日期时间 - - - - - - - - 将时间转换成当前分钟开始的时间 - - - - - - - 将时间转换成当前秒钟开始的时间 - - - - - - - 当前时间在这一天里的秒数 - - - - - - - 窗体操作类 - - - - - 设置Comobox的行间距 - - - - - - - 移除关闭按钮。返回值,非零表示成功,零表示失败。 - - 窗口的句柄 - 是否成功 - - - - 把窗体放到最前 - - - - - - 显示窗体 - - - - - - - - 设置窗体是否置顶 - - - - - - - 显示没有焦点的窗口 - - - - - - 根据句柄获取窗口文本 - - - - - - - 根据句柄获取窗口类 - - - - - - - 获取当前活动的窗口句柄 - - - - - - 设置为当前活动窗口 - - - - - - - 根据窗口句柄来获得进程id - - - - - - - 显示窗体 - - - - - - 设置窗体父窗体为桌面,不会随着显示桌面而最小化,但无法设置窗体透明度 - - - - - - 结束进程 - - - - - - - 打开窗体,只打开一个实例(非模态) - - - - - - - 设置注册表操作,部分功能需要管理员权限 - - - - - 访问的注册表位置(64位还是32位) - - - - - 访问的注册表节点 - - - - - 设置是否开机启动 - - 是否开机启动 - 开机启动名称 - 启动命令 - - - - - 设置是否开机启动 - - 是否开机启动 - 开机启动名称 - - - - - 把指定文件设置为开机启动或取消开机启动 - - 是否开机启动 - 开机启动名称 - 要开机启动的文件路径 - - - - - 检查是否开机启动 - - 开机启动名称 - 开机启动命令 - - - - - 检查是否开机启动 - - 开机启动名称 - - - - - 判断指定文件是否是开机启动 - - 开机启动名称 - 文件路径 - - - - - 判断当前程序是否是开机启动 - - 开机启动名称 - - - - - 判断当前程序是否是开机启动 - - 开机启动名称 - 启动命令行 - - - - - 设置指定文件的浏览器控件内核版本 - - 文件名,要求不带路径 - 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 - - - - - 采用的IE模式 - - - - - IE7兼容视图 - - - - - IE8 标准模式 - - - - - IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 - - - - - IE9 标准模式 - - - - - IE9 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 - - - - - IE10 标准模式 - - - - - IE10 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 - - - - - 设置当前软件的浏览器控件内核版本 - - 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 - - - - - 设置指定文件的浏览器控件内核版本 - - 文件名,要求不带路径 - IE内核版本 - - - - - 设置当前软件的浏览器控件内核版本 - - IE内核版本 - - - - - 系统函数 - - - - - - - - - - 红 - - - - - 绿 - - - - - 蓝 - - - - - 获取屏幕伽马值 - - - - - - - - 设置屏幕伽马值 - - - - - - - - 获取键盘和鼠标没有操作的时间 - - - - - - 设置屏幕 Gamma值 - - - - - - - - - 设置屏幕亮度 - - - - - - - 获取系统 - - - - - - 窗体操作类 - - - - - 构造函数 - - - - - - 析构 - - - - - 设置让窗体支持移动 - - - - - 是否允许可调节大小 - - - - - 可调节窗体大小的宽度 - - - - - - - - - - - 给控件增加拖放功能的类 - - - - - 拖放实例 - - - - - 高级拖放事件 - - - - - - - - - - 使支持拖放属性 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 网络操作类 - - - - - 通过NetworkInterface读取网卡Mac - - - - - - 通过NetworkInterface读取网卡Mac - - - - - - 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null - - - - - - - 远程唤醒 - - - - - - - - 远程唤醒 - - - - - - - - - 消息客户端类 - - - - - 判断当前消息主服务器是否创建成功 - - - - - 最后一次接收消息的时间,可用来判断服务端是否有响应 - - - - - 主句柄 - - - - - 当收到消息时激发 - - - - - 连接上主服务器时触发 - - - - - 收到服务端关闭通知 - - - - - 收到服务端关闭通知,即将关闭 - - - - - 服务端大小改变时激发 - - - - - 实例化客户端 - - 服务端ID - 当前客户端ID,会向服务器报告当前ID - 客户端 - - - - - - - - - 断开服务端连接 - - - - - 发送消息,采用多线程发送 - - - - - - - 向服务端发送心跳包 - - - - - 判断服务端句柄是否存在。 - - - - - - 共享内存 - - - - - 写共享内存 - - 需要映射的文件的字节数量 - 映射对象(简单类型、结构体等) - 文件映射对象的名称 - - - - - 写共享内存 - - 需要映射的文件的字节数量 - 映射对象(简单类型、结构体等) - 文件映射对象的名称 - 发送消息的窗口句柄 - 发送消息 - - - - - 读共享内存 - - 需要映射的文件的字节数量 - 类型 - 文件映射对象的名称 - 返回读到的映射对象 - - - - 读共享内存 - - 需要映射的文件的字节数量 - 类型 - 文件映射对象的名称 - 返回读到的映射字节数据 - - - - 消息服务器 - - - - - 消息事件 - - - - - - - 大小改变事件 - - - - - - - - 即将关闭事件 - - - - - - - 当收到消息时激发 - - - - - 消息处理类 - - - - - - - - - - - - - - - - - - - - - - - 发送消息,采用单线程发送 - - 要发送到的句柄 - 编号 - 消息内容 - - - - 发送消息,采用多线程发送 - - 要发送到的句柄 - 编号 - 消息内容 - - - - 消息类 - - - - - 是否取消 - - - - - 来源句柄 - - - - - - - - - - 消息文本 - - - - - 需要回复的内容 - - - - - 消息服务端类 - - - - - 判断当前消息主服务器是否创建成功 - - - - - 当收到消息时激发 - - - - - 当收到自定义消息时(非系统消息)激发 - - - - - 有消息客户端发起连接请求时激发 - - - - - 有消息客户端连接成功时激发 - - - - - 有消息客户端断开连接时激发 - - - - - - - 服务端ID,需要唯一性,共客户端识别 - 服务端 - - - - 释放资源 - - - - - 判断是否包含指定客户端 - - - - - - - - - - - - 设置客户端大小 - - - - - 根据客户端ID,获取客户端对象 - - - - - - - 根据客户端句柄,获取客户端对象 - - - - - - - 关闭所有客户端 - - - - - 关闭指定客户端 - - - - - - 关闭指定客户端 - - - - - - 向所有客户端发送消息,单线程 - - - - - - - 向指定客户端发送消息 - - - - - - - - 关闭在指定时间前失去响应的子客户端 - - - - - - 客户端信息 - - - - - 客户端句柄 - - - - - 客户端ID - - - - - 客户端连接时间 - - - - - 心跳时间 - - - - - 数据库引擎 - - - - - 数据库枚举类型 - - - - - Odbc引擎 - - - - - OleDb引擎 - - - - - Oracle引擎 - - - - - MSSQL引擎 - - - - - SQLite引擎 - - - - - MySql引擎 - - - - - 判断DataSet是否包含数据 - - - - - - - 获取首行数据 - - - - - - - 获取第一行第一列的值 - - - - - - - 将DataSet类型转换为RyQuickSQL列表类型 - - - - - - - 将DataSet类型转换为RyQuickSQL列表类型 - - - - - - - - 数据库操作接口 - - - - - 连接数据库 - - - - - - 断开数据库 - - - - - - 获取数量 - - - - - - - - 获取分页语句 - - - - - - - - - 获取分页语句 - - - - - - - - - 获取分页语句 - - - - - - - - - - 获取分页语句 - - - - - - - - - - 添加Parameter参数 - - - - - - - 清空Parameter参数 - - - - - - - 获取Parameter值 - - - - - - 根据RyQuickSQL类来获取Parameter值 - - - - - - - 开始执行事务 - - - - - 提交事务 - - - - - 判断是否包含数据 - - - - - - - - 返回-1000表示该数据库不支持本接口 - - - - - - - 读取数据 - - - - - - - 读取数据 - - - - - - - - 读取数据 - - - - - - - - 根据id号获取数据 - - - - - - - - 执行SQL语句 - - - - - - - - 执行SQL语句 - - - - - - - - 执行SQL语句 - - - - - - - 根据id号删除数据 - - - - - - - - 创建数据库 - - - - - - - 释放资源 - - - - - SQL字段类型 - - - - - SQL字段类型 - - - - - - - SQL字段类型 - - - - - - - - SQL字段名 - - - - - SQL字段值 - - - - - SQL字段长度 - - - - - 不是真的值,而是用于计算的值 - - - - - SQL快速操作类 - - - - - SQL快速操作类 - - - - - - 表名 - - - - - 操作字段列表 - - - - - 清理使用资源 - - - - - 清理使用资源 - - - - - 操作参数列表 - - - - - 操作参数列表 - - - - - 添加字符串字段 - - - - - - - 添加null值字段 - - - - - - 添加日期字段 - - - - - - - 添加int字段 - - - - - - - 添加double字段 - - - - - - - 添加decimal字段 - - - - - - - 添加bool字段 - - - - - - - 添加用于计算的值 - - - - - - - 添加Int64字段 - - - - - - - 清空内容 - - - - - 数量 - - - - - - - - - - 输出多条件搜索。 - - 字段名,多个字段请用逗号分隔。 - 多个条件之间请用空格隔开 - - - - - 获取插入SQL语句 - - - - - - 获取更新SQL语句 - - - - - - 添加参数 - - - - - - - 获取Ole参数 - - - - - - 获取SQL参数 - - - - - - AES加密解密类 - - - - - AES加密算法 - - 明文字符串 - 密钥 - 返回加密后的密文字节数组 - - - - AES解密 - - 密文字节数组 - 密钥 - 返回解密后的字符串 - - - - 加密 - - - - - - - - 解码 - - - - - - - - 转换密钥到合法密钥 - - - - - - - Base64编码类 - - - - - 编码 - - - - - - - 把字符串编码成Base64字符串 - - - - - - - - 解码 - - - - - - - MD5和SHA1操作类 - - - - - 获取MD5 - - - - - - - 获取MD5 - - - - - - - 获取SHA1 - - - - - - - 获取SHA1 - - - - - - - 获取HmacSHA1 - - - - - - - - 获取SHA256 - - - - - - - 获取HmacSHA256 - - - - - - - 获取SHA224 - - - - - - - 获取SHA512 - - - - - - - 获取HmacSHA512 - - - - - - - 使用using代替lock操作的对象,可指定写入和读取锁定模式 - - - - 利用IDisposable的using语法糖方便的释放锁定操作 - 内部类 - - - - 读写锁对象 - - - - 是否为写入模式 - - - - 利用IDisposable的using语法糖方便的释放锁定操作 - 构造函数 - - 读写锁 - 写入模式为true,读取模式为false - - - 释放对象时退出指定锁定模式 - - - - 空的可释放对象,免去了调用时需要判断是否为null的问题 - 内部类 - - - - 空的可释放对象 - - - - 空的释放方法 - - - - 读写锁 - - - - 保存数据 - - - - 使用using代替lock操作的对象,可指定写入和读取锁定模式 - 构造函数 - - - - 使用using代替lock操作的对象,可指定写入和读取锁定模式 - 构造函数 - 为Data属性设置初始值 - - - - 获取或设置当前对象中保存数据的值 - - 获取数据时未进入读取或写入锁定模式 - 设置数据时未进入写入锁定模式 - - - 是否启用,当该值为false时,Read()和Write()方法将返回 Disposable.Empty - - - - 进入读取锁定模式,该模式下允许多个读操作同时进行 - 退出读锁请将返回对象释放,建议使用using语块 - Enabled为false时,返回Disposable.Empty; - 在读取或写入锁定模式下重复执行,返回Disposable.Empty; - - - - 进入写入锁定模式,该模式下只允许同时执行一个读操作 - 退出读锁请将返回对象释放,建议使用using语块 - Enabled为false时,返回Disposable.Empty; - 在写入锁定模式下重复执行,返回Disposable.Empty; - - 读取模式下不能进入写入锁定状态 - - - - 中国农历类,最大支持公元0-9999年 - - 日期:2019-02-09 - 作者:http://www.cnblogs.com/zjfree/ - - - - 日历类型 - - - - - 无效 - - - - - Julian 日历 - - - - - Gregorian 日历 - - - - - 有效 - - - - - 公历节日 - - - - - 农历节日 - - - - - 某个月第n个星期几 - - - - - 获取农历 - - - - - - - 获取农历 - - - - - - - - - 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 - - - - - - - 农历搜索方向 - - - - - 无效 - - - - - 向上 - - - - - 向下 - - - - - {* 日月食类型, 无, 日食, 月全食, 月偏食 } - - - - - 无 - - - - - 日食 - - - - - 月全食 - - - - - 月偏食 - - - - - {* 月相, 无, 朔, 望} - - - - - 无 - - - - - 朔 - - - - - 望 - - - - - 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 - - - - - - - - - - - - 获得某公历年月日的农历月数 - - - - - - - - - 获取阳历日期对应的农历日期 - - - - - - - - - - - - - 获得某公历年月日的农历月日和是否闰月的信息 - - - - - - - - - - - - 获得等效标准日数对应的某公历日,倒推而来 - - - - - - - - - - 比较两个农历日期(包括闰月信息),1 大于2返回1、1等于2返回0、1小于2返回-1 - - - - - - - - - - - - - - 获得某农历年月日(加是否闰月)的公历年月日 - 该函数采用反向二分法查找 - - - - - - - - - - - - - 获取农历某一个月的总天数 - - - - - - - - - 获取农历年份,范围约1901-2101年 - - - - - - - 获取农历年份,范围约0-9999年 - - - - - - - - - 获取农历月份,范围约1901-2101年 - - - - - - - 获取农历月份,范围约0-9999年 - - - - - - - - - 获取中文表示的农历月份 - - - - - - - 获取农历日,范围约1901-2101年 - - - - - - - 获取农历日,范围约0-9999年 - - - - - - - - - 获取农历日,范围约0-9999年 - - - - - - - 获取节气,范围约1901-2101年 - - - - - - - 获取节气,范围约0-9999年 - - - - - - - - - 返回y年第n个节气(如小寒为1)的日差天数值(pd取值真假,分别表示平气和定气) - - - - pd取值真假,分别表示平气和定气 - - - - - 获取等效标准日数 - - - - - - - - - 取本月天数,不考虑 1582 年 10 月的特殊情况 - - - - - - - - 获取节气,范围约1901-2101年 - - - - - - - 获取节气,范围约0-9999年 - - - - - - - - - 获取节气 - - - - - - - - - - - - 获取公历节日 - - - - - - - 获取公历节日 - - - - - - - - - 获取指定月份的第n个星期几的节日 - - - - - - - 返回星座,范围约1901-2101年 - - - - - 返回星座,范围约0-9999年 - - - - - 获取农历节日 - - - - - - - - - 获取农历节日 - - - - - - - 判断y年m月(1,2,..,12,下同)d日是Gregorian历还是Julian历(opt=1,2,3分别表示标准日历,Gregorge历和Julian历),是则返回1,是Julian历则返回0,若是Gregorge历所删去的那10天则返回-1 - - - - - 返回阳历y年m月d日的日差天数(在y年年内所走过的天数,如2000年3月1日为61) - - - - - 返回阳历y年日差天数为x时所对应的月日数(如y=2000,x=274时,返回1001(表示10月1日,即返回100*m+d)) - - - - - 获取指定日期的节气。 - - 要获取的年 - 要获取的月 - - - 立春:立是开始的意思,春是蠢动,表示万物开始有生气,这一天春天开始。 - 雨水:降雨开始,雨水将多。 - 惊蛰:春雷响动,惊动蛰伏地下冬眠的生物,它们将开始出土活动。 - 春分:这是春季九十天的中分点,这一天昼夜相等,所以古代曾称春分秋分为昼夜分。 - 清明:明洁晴朗,气候温暖,草木开始萌发繁茂。 - 谷雨:雨生百谷的意思。雨水增多,适时的降雨对谷物生长很为有利。 - 立夏:夏天开始,万物渐将随温暖的气候而生长。 - 小满:满指籽粒饱满,麦类等夏热作物这时开始结籽灌浆,即将饱满。 - 芒种:有芒作物开始成熟,此时也是秋季作物播种的最繁忙时节。 - 夏至:白天最长,黑夜最短,这一天中午太阳位置最高,日影短至终极,古代又称这一天为日北至或长日至。 - 小暑:暑是炎热,此时还未到达最热。 - 大暑:炎热的程度到达高峰。 - 立秋:秋天开始,植物快成熟了。 - 处暑:处是住的意思,表示暑气到此为止。 - 白露:地面水气凝结为露,色白,是天气开始转凉了。 - 秋分:秋季九十天的中间,这一天昼夜相等,同春分一样,太阳从正东升起正西落下。 - 寒露:水露先白而后寒,是气候将逐渐转冷的意思。 - 霜降:水气开始凝结成霜。 - 立冬:冬是终了,作物收割后要收藏起来的意思,这一天起冬天开始。 - 小雪:开始降雪,但还不多。 - 大雪:雪量由小增大。 - 冬至:这一天中午太阳在天空中位置最低,日影最长,白天最短, 黑夜最长,古代又称短日至或日南至。 - 小寒:冷气积久而为寒,此时尚未冷到顶点。 - 大寒:天候达到最寒冷的程度 - - - - - 获取年柱。 - - - - - 获得月柱 - - - - - - - 获取日柱。 - - - - - 返回甲子数x对应的天干数(如33为3) - - - - - 返回甲子数x对应的地支数(如33为9) - - - - - 获取日的天干地支 - - - - - - - 返回甲子数x对应的天干字符串 - - - - - 返回甲子数x对应的地支字符串 - - - - - 返回甲子数x对应的干支字符串 - - - - - - - 获取三伏开始时间 - - - 0表示1伏,1表示2伏,2表示3伏 - - - - - 节气 - - - - - 节气的时间。 - - - - - 节气名。 - - - - - 热键转换类 - - - - - 功能键。 - - - - - 修改键。 - - - - - 转换功能键到谷歌浏览器专用 - - - - - 将chrome功能键转换为普通功能键 - - - - - - - 按键值。 - - - - - 初始化类 的新实例。 - - The modifiers. - The key code. - - - - - - - - - - - - - - - - - 初始化类 的新实例。 - - - - - 加载热键 - - - - - - - 加载热键 - - - - - - 加载热键 - - - - - - 判断是否是热键 - - - - - 获取当前热键 - - - - - 已重载,返回“Ctrl+Alt+A”格式的字符串。 - - 类似“Ctrl+Alt+A”格式的字符串 - - - - 返回“Ctrl+Alt+A”格式的字符串。 - - 类似“Ctrl+Alt+A”格式的字符串 - - - - 功能键 - - - - - 无 - - - - - Alt键 - - - - - Ctrl键 - - - - - Shift键 - - - - - Win键 - - - - - 热键类 - - - - - 热键类 - - - - - - 热键注销 - - - - - 热键是否有效 - - - - - 释放热键 - - - - - 注册热键 - - - - - - - - - 注册热键 - - - - - - - - - 删除热键 - - - - - - - 删除所有热键 - - - - - 热键事件 - - - - - - 当使用热键时发生的事件 - - - - - 热键消息过滤 - - - - - - - 热键类型 - - - - - 热键id - - - - - 功能键 - - - - - 普通键 - - - - - 热键类型 - - - - - - - - Win32 API - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 获取当前前台窗口句柄 - - - - - - 获得当前活动窗体 - - - - - - 设置活动窗体 - - - - - - - 获取类名 - - - - - - - - - 获取当前线程对应的进程ID - - - - - - - - 判断指定句柄是否是一个窗口 - - - - - - - 获取窗口标题 - - - - - - - - - 查找窗口 - - - - - - - - 设置父窗口 - - - - - - - - 移动窗口 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 结束进程 - - - - - - - - 发送消息 - - - - - - - - - - 发送消息 - - - - - - - - - 获取窗口位置和大小 - - - - - - - - 矩形 - - - - - 最左坐标 - - - - - 最上坐标 - - - - - 最右坐标 - - - - - 最下坐标 - - - - - WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。 - - - - - 系统通道ID - - - - - 用户通道ID - - - - - - - - - - - - - - - - - - - - - - - - - 获取消息 - - - - - - - - 发送消息 - - - - - - - - - - 设置父窗口 - - - - - - - - + + + + MyDb + + + + + 基于XML实现的权限类 + + + + + 用户名 + + + + + 用户id + + + + + 密码 + + + + + 权限控制Id + + + + + 用户备注 + + + + + 是否是管理员权限 + + + + + 是否是超级管理员权限 + + + + + 设置权限 + + 权限名称 + 权限值 + 返回是否设置成功 + + + + 获取权限 + + 权限名称 + 默认权限值 + 返回权限值 + + + + 获取权限 + + 权限名称 + 返回权限值 + + + + 批量导入权限 + + 权限相关的内容 + 返回是否执行成功 + + + + 导出权限 + + 返回导出文本 + + + + 清除所有权限 + + 返回是否执行成功 + + + + 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 + + + + + 汉字的机内码数组 + + + + + 机内码对应的拼音数组 + + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(首拼) + + 汉字字符串 + 转换后的拼音(首拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 用指定字符分隔 + 转换后的拼音(全拼)字符串 + + + + 汉字转拼音缩写 + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串) (小写) (空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (大写) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串)(大写)(空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + Ini操作类 + + + + + 写入Ini + + + + + + + + + + 获取Ini + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 获取所有节点名称(Section) + + 存放节点名称的内存地址,每个节点之间用\0分隔 + 内存大小(characters) + Ini文件 + 内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够 + + + + 编码 + + + + + Ini操作类 + + + + + + 根据section取所有key和值 + + + + + + + 读取INI文件中指定INI文件中的所有节点名称(Section) + + 所有节点,没有内容返回string[0] + + + + 读取INI文件 + + 段,格式[] + 键 + 返回byte类型的section组或键值组 + + + + 根据section取所有key + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入Ini + + + + + + + + 读取Ini + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + + + 写入ini + + + + + + + + + 删除Ini的Key + + + + + + + 删除Ini节点 + + + + + + 控件信息 + + + + + id + + + + + 控件对象 + + + + + 控件值类型 + + + + + 默认值 + + + + + 值类型 + + + + + 默认 + + + + + 取列表顺序值 + + + + + 取当前选择的列表值 + + + + + 取对象值 + + + + + 保存的设置类型 + + + + + Ini + + + + + XML + + + + + 对象值 + + + + + 显示的文本 + + + + + 图片序号 + + + + + id + + + + + Tag值 + + + + + 显示文本值 + + + + + + 星期数据 + + + + + 一周的开始时间 + + + + + 一周的结束时间 + + + + + XML操作类 + + + + + XML操作类 + + + + + 从XML文本中加载数据 + + + + + + 从指定的XML文本中加载 + + XML文本 + 如为1,表示加载成功,为0为失败 + + + + 载入空的XML文档 + + 如为1,表示加载成功,为0为失败 + + + + 从指定的文件中加载 + + XML文件路径 + 如为1,表示加载成功,为0为失败 + + + + 保存到指定文件中 + + 文件路径 + 如为1,表示保存成功,为0为失败 + + + + 判断节点是否存在 + + 属性名 + 属性值 + 返回1,表示存在,其它表示不存在 + + + + 定位节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 定位节点,如果找不到节点,就新建一个节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。 + + 返回第一个符合要求的结果 + + + + 定位设置节点 + + 返回第一个符合要求的结果 + + + + 在节点后插入数据 + + + + + + + 在节点前插入数据 + + + + + + + 获取节点数量 + + 属性名 + 属性值 + 返回符合要求的结果数量 + + + + 获取节点数量 + + 返回符合要求的结果数量 + + + + 获取节点数量 + + 属性名 + 属性值 + + + + 返回符合要求的结果数量 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 读取指定节点的值 + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取属性值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取所有的节点名称 + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取XML文件的根元素 + + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 新增节点 + + + + + + + + 新增节点并定位到新节点 + + + + + + + + 新增设置节点并定位 + + + + + + 在指定节点前新增节点并定位到新节点 + + + + + + + + + 获取当前节点 + + + + + + 删除节点 + + + + + + 获取XML文本 + + + + + + 获取XML文本 + + + + + + 获取文本 + + + + + + 获取文本 + + + + + + 字符串操作类 + + + + + 字符串转Base64 + + + + + + + Base64转字符串 + + + + + + + 转换指定字符串为布尔类型 + + + + + 转换指定字符串为Double类型 + + + + + 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 已重载.计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定布尔类型为Int类型,true为1,false为0 + + + + + 判断指定字符串是否是布尔类型 + + + + + 判断指定字符串是否是Double类型 + + + + + 判断指定字符串是否是Int类型 + + + + + 根据年月日转换成日期 + + + + + + + + + 追加字符 + + + + + 获取2个字符串中间的内容,point1为空表示从首位开始算,point2为空表示算到结尾。 + + + + + 判断字符串是否只包含数字或英文 + + + + + + + 判断字符串是否只包含英文 + + + + + + + 判断字符串是否匹配,支持?*通配符 + + 待匹配的字符串 + 匹配的通配符 + + + + + 通配符替换 + + + + + + + + + 获取匹配的内容 + + + + + + + + + 文件时间 + + + + + 创建时间 + + + + + 最后修改时间 + + + + + 访问时间 + + + + + 图片类型 + + + + + Bmp图片 + + + + + Jpeg图片 + + + + + Png图片 + + + + + Gif动态图片 + + + + + Tiff图片 + + + + + 对变量的拓展 + + + + + 替换文本(忽略大小写) + + + 需要替换的内容 + 替换后的内容 + + + + + 替换文本(忽略大小写),可支持通配符 + + + + + 是否是通配符表达式,不是,则普通替换,忽略大小写,是,则启用通配符替换 + + + + + 获取符合要求的第一个结果 + + + + 是否是正则 + + + + + 查找字符串,忽略大小写 + + + + + + + + + 查找字符串,忽略大小写 + + + + + + + + 判断字符串是否是数字或英文 + + + + + + + 判断字符串是否是英文 + + + + + + + 是否在指定范围内 + + + + + + + + + 是否在指定范围内 + + + + + + + + + 转换指定字符串为Int类型 + + + 最小值 + 最大值 + 如果字符串不在范围内,则使用本默认值 + + + + + 转换指定布尔类型到Int类型,true为1,false为0 + + + + + + + 将指定类型转换成整型 + + + + + + + + 将指定类型转换成整型 + + + + + + + 将指定类型转换成长整型 + + + + + + + + 将指定类型转换成长整型 + + + + + + + 转换指定类型为Double类型 + + + + + + + + 转换指定类型为Double类型 + + + + + + + 转换DateTime类型到日期时间字符串 + + + + + + + 转换DateTime类型到日期字符串 + + + + + + + 转换DateTime类型到日期星期字符串 + + + + + + + 转换DateTime类型到Unix时间戳 + + + + + + + 转换Unix时间戳到DateTime类型 + + + + + + + 判断字符串是否与内容匹配 + + + + + + + + 将变量值转换成Double类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换到文件大小字符串 + + + + + + + 转换到文件大小字符串 + + + + + + + 转换指定类型为Decimal类型 + + + + + + + + 将变量值转换成Decimal类型 + + + + + + + 将变量值转换成Decimal类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换指定类型为DateTime类型 + + + + + + + + 将变量值转换成DateTime类型 + + + + + + + 转换指定类型为布尔类型 + + + + + + + 追加字符 + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + + + + 判断指定字符串是否是Int类型 + + + + + + + 判断指定字符串是否是Double类型 + + + + + + + 判断是否是布尔类型 + + + + + + + 将字符串转换为Base64类型 + + + + + + + 判断字符串是否在指定长度 + + + + + + + + + 判断能否转换成日期格式 + + + + + + + 文件信息 + + + + + 获取版本号 + + + + + 获取版本号 + + + + + + + 判断是否是管理员方式运行 + + + + + + Hosts操作类 + + + + + 获取并转换hosts内容 + + hosts内容 + + + + + 获取hosts并转换hosts内容 + + hosts内容 + + + + + 追加内容到hosts里 + + 要追加的内容列表,每一行为ip 域名的格式 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + write为true,追加内容到hosts里;为false,判断是否需要追加 + + 要追加的内容列表,每一行为ip 域名的格式 + 是否要写入,如果为false,则只判断是否需要追加,而不写入Hosts文件 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + 要追加的内容 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + ip地址 + 域名 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 从hosts文件里删除内容 + + 要删除的内容 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + 从hosts文件里删除内容 + + ip地址 + 域名 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + Host信息 + + + + + IP + + + + + 域名 + + + + + 注释 + + + + + 是否要删除 + + + + + 音频播放类 + + + + + 临时音频文件 + + + + + 父窗口句柄 + + + + + 声音标签 + + + + play synchronously (default) + + + play asynchronously + + + silence (!default) if sound not found + + + pszSound points to a memory file + + + loop the sound until next sndPlaySound + + + don’t stop any currently playing sound + + + Stop Playing Wave + + + don’t wait if the driver is busy + + + name is a registry alias + + + alias is a predefined id + + + name is file name + + + name is resource name or atom + + + + 音频播放类 + + embedded music file + 临时保存的文件位置 + 父窗口句柄 + + + + 音频播放类 + + 要播放的音频位置 + 父窗口句柄 + + + + 音频播放类 + + + 父窗口句柄 + + + + 播放音频 + + + + + + 播放音频 + + + + + 关闭音频 + + + + + 文件操作类 + + + + + + + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 永久删除单个文件。 + + 永久删除的文件名 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除一组文件。 + + 字符串数组,表示一组文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + + + + + 移动一个文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 移动一组文件到指定的路径下 + + 要移动的文件名数组 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制一组文件到指定的路径 + + 要复制的文件名数组 + 复制到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 删除单个或多个文件 + + 删除的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动或复制一个或多个文件到指定路径下 + + 操作类型,是移动操作还是复制操作 + 要移动或复制的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 移动到的目的位置 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 如果指定文件夹不存在,则创建文件夹 + + + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 解释错误代码 + + 代码号 + 返回关于错误代码的文字描述 + + + + 运行文件 + + + + + + + + /运行文件 + + + + + + + + 运行程序 + + + + + + + 打开文件 + + + + + + + 打开文件夹并定位文件 + + + + + + + 打开网址 + + + + + + + 判断文件名是否有效 + + + + + + + 转换到有效文件名 + + + + + + + 追加日志 + + + + + + 追加文件 + + + + + + 读取文件内容,可以自动识别文件编码 + + + + + + + 读取文件所有行,可以自动识别文件编码 + + + + + + + 写入所有文本行到文件,如果文件夹不存在,会自动创建 + + + + + + + + 写入所有文本到文件,如果文件夹不存在,会自动创建 + + + + + + + + 从文件中加载图片,使用本方法,不会导致图片文件被占用。 + + + + + + 获取文件大小 + + + + + + + 添加文件到指定文件夹,会进行自动重命名,并返回重命名后的文件名(含路径) + + 要添加的文件路径 + 要添加到的文件夹 + 是否根据时间进行重命名 + 返回是否成功执行 + 成功执行则返回路径,否则返回空 + + + + 获取文件大小字符串 + + + + + + + 获取文件大小字符串 + + + + + + + 复制内容到剪切板 + + + + + + 添加某个控件为支持拖放属性 + + + + + + + 使管理员方式运行时支持拖放 + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 获取绝对路径 + + + + + + + 获取相对路径 + + + + + + + 获取图标 + + + + + + + + + + + + + + 销毁图标 + + + + + + + 获取文件图标 + + + + + + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。 + + 文件名。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + + + + + 取得一个文本文件的编码方式。 + + 文件名。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 通过给定的文件流,判断文件的编码类型 + + 文件流 + 文件的编码类型 + + + + 判断是否是不带 BOM 的 UTF8 格式 + + + + + + + 新模态窗体 + + + + + 设置窗体返回的结果值,并关闭窗体。 + + 当前窗体 + 模态变量 + 防止 + + + + 窗体返回的结果事件 + + + + + + + 当打开的窗体返回结果时激发 + + + + + 窗体返回的状态 + + + + + 实例化类 + + 父窗体,如果为null,则取桌面为父窗体 + + + + + 获取最顶级的父窗口 + + + + + + 显示新模态窗体,会暂时禁用父窗体,关闭当前窗体后,父窗体会恢复。 + + + + + 只运行一个实例,打开后,所有窗体都依然有效。 + + + + + + 显示窗体 + + 显示的位置 + + + + 显示在父窗体中间 + + + + + 窗体显示位置 + + + + + 右上角 + + + + + 顶部中间 + + + + + 顶部右边 + + + + + 中间 + + + + + 左下角 + + + + + 底部中间 + + + + + 右下角 + + + + + 父窗体居中 + + + + + 日期时间的操作类 + + + + + 获取当前是周几,周一到周日,分别是1-7. + + + + + + + 获取当前是周几,1-7,分别是返回一到日. + + + + + + + 获取当前是周几,输入日期,根据周几,分别是返回一到日. + + + + + + + 获取一周的开始和结束,开始时间为第一天的0点,结束时间以最后一天的0点为结束时间 + + + + + + + 获取2个日期相差几周 + + + + + + + + 获取2个日期相差几个月 + + + + + + + + 获取一个月的开始 + + + + + + + 判断是否在同一个星期。 + + + + + + + + 判断是否在同一个月。 + + + + + + + + 判断是否在同一天 + + + + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + 是否显示秒 + + + + + 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 将c# DateTime时间格式转换为Unix时间戳格式 + + 时间 + long + + + + 时间戳转为C#格式时间 + + + + + + + 将c# DateTime时间格式转换为js时间戳格式 + + 时间 + long + + + + JS时间戳转为C#格式时间 + + + + + + + 根据年月日转换成日期 + + + + + + + + + 根据日期和时间转换成日期时间 + + + + + + + + 将时间转换成当前分钟开始的时间 + + + + + + + 将时间转换成当前秒钟开始的时间 + + + + + + + 当前时间在这一天里的秒数 + + + + + + + 窗体操作类 + + + + + 设置Comobox的行间距 + + + + + + + 移除关闭按钮。返回值,非零表示成功,零表示失败。 + + 窗口的句柄 + 是否成功 + + + + 把窗体放到最前 + + + + + + 显示窗体 + + + + + + + + 设置窗体是否置顶 + + + + + + + 显示没有焦点的窗口 + + + + + + 根据句柄获取窗口文本 + + + + + + + 根据句柄获取窗口类 + + + + + + + 获取当前活动的窗口句柄 + + + + + + 设置为当前活动窗口 + + + + + + + 根据窗口句柄来获得进程id + + + + + + + 显示窗体 + + + + + + 设置窗体父窗体为桌面,不会随着显示桌面而最小化,但无法设置窗体透明度 + + + + + + 结束进程 + + + + + + + 打开窗体,只打开一个实例(非模态) + + + + + + + 设置注册表操作,部分功能需要管理员权限 + + + + + 访问的注册表位置(64位还是32位) + + + + + 访问的注册表节点 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + 启动命令 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + + + + + 把指定文件设置为开机启动或取消开机启动 + + 是否开机启动 + 开机启动名称 + 要开机启动的文件路径 + + + + + 检查是否开机启动 + + 开机启动名称 + 开机启动命令 + + + + + 检查是否开机启动 + + 开机启动名称 + + + + + 判断指定文件是否是开机启动 + + 开机启动名称 + 文件路径 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + 启动命令行 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 采用的IE模式 + + + + + IE7兼容视图 + + + + + IE8 标准模式 + + + + + IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE9 标准模式 + + + + + IE9 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE10 标准模式 + + + + + IE10 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置当前软件的浏览器控件内核版本 + + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + IE内核版本 + + + + + 设置当前软件的浏览器控件内核版本 + + IE内核版本 + + + + + 系统函数 + + + + + + + + + + 红 + + + + + 绿 + + + + + 蓝 + + + + + 获取屏幕伽马值 + + + + + + + + 设置屏幕伽马值 + + + + + + + + 获取键盘和鼠标没有操作的时间 + + + + + + 设置屏幕 Gamma值 + + + + + + + + + 设置屏幕亮度 + + + + + + + 获取系统 + + + + + + 窗体操作类 + + + + + 构造函数 + + + + + + 析构 + + + + + 设置让窗体支持移动 + + + + + 是否允许可调节大小 + + + + + 可调节窗体大小的宽度 + + + + + + + + + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + + + + 消息客户端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 最后一次接收消息的时间,可用来判断服务端是否有响应 + + + + + 主句柄 + + + + + 当收到消息时激发 + + + + + 连接上主服务器时触发 + + + + + 收到服务端关闭通知 + + + + + 收到服务端关闭通知,即将关闭 + + + + + 服务端大小改变时激发 + + + + + 实例化客户端 + + 服务端ID + 当前客户端ID,会向服务器报告当前ID + 客户端 + + + + + + + + + 断开服务端连接 + + + + + 发送消息,采用多线程发送 + + + + + + + 向服务端发送心跳包 + + + + + 判断服务端句柄是否存在。 + + + + + + 共享内存 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + 发送消息的窗口句柄 + 发送消息 + + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射对象 + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射字节数据 + + + + 消息服务器 + + + + + 消息事件 + + + + + + + 大小改变事件 + + + + + + + + 即将关闭事件 + + + + + + + 当收到消息时激发 + + + + + 消息处理类 + + + + + + + + + + + + + + + + + + + + + + + 发送消息,采用单线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 发送消息,采用多线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 消息类 + + + + + 是否取消 + + + + + 来源句柄 + + + + + + + + + + 消息文本 + + + + + 需要回复的内容 + + + + + 消息服务端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 当收到消息时激发 + + + + + 当收到自定义消息时(非系统消息)激发 + + + + + 有消息客户端发起连接请求时激发 + + + + + 有消息客户端连接成功时激发 + + + + + 有消息客户端断开连接时激发 + + + + + + + 服务端ID,需要唯一性,共客户端识别 + 服务端 + + + + 释放资源 + + + + + 判断是否包含指定客户端 + + + + + + + + + + + + 设置客户端大小 + + + + + 根据客户端ID,获取客户端对象 + + + + + + + 根据客户端句柄,获取客户端对象 + + + + + + + 关闭所有客户端 + + + + + 关闭指定客户端 + + + + + + 关闭指定客户端 + + + + + + 向所有客户端发送消息,单线程 + + + + + + + 向指定客户端发送消息 + + + + + + + + 关闭在指定时间前失去响应的子客户端 + + + + + + 客户端信息 + + + + + 客户端句柄 + + + + + 客户端ID + + + + + 客户端连接时间 + + + + + 心跳时间 + + + + + 数据库引擎 + + + + + 数据库枚举类型 + + + + + Odbc引擎 + + + + + OleDb引擎 + + + + + Oracle引擎 + + + + + MSSQL引擎 + + + + + SQLite引擎 + + + + + MySql引擎 + + + + + 判断DataSet是否包含数据 + + + + + + + 获取首行数据 + + + + + + + 获取第一行第一列的值 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + + 数据库操作接口 + + + + + 连接数据库 + + + + + + 断开数据库 + + + + + + 获取数量 + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + + 获取分页语句 + + + + + + + + + + 添加Parameter参数 + + + + + + + 清空Parameter参数 + + + + + + + 获取Parameter值 + + + + + + 根据RyQuickSQL类来获取Parameter值 + + + + + + + 开始执行事务 + + + + + 提交事务 + + + + + 判断是否包含数据 + + + + + + + + 返回-1000表示该数据库不支持本接口 + + + + + + + 读取数据 + + + + + + + 读取数据 + + + + + + + + 读取数据 + + + + + + + + 根据id号获取数据 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + + + + + 根据id号删除数据 + + + + + + + + 创建数据库 + + + + + + + 释放资源 + + + + + SQL字段类型 + + + + + SQL字段类型 + + + + + + + SQL字段类型 + + + + + + + + SQL字段名 + + + + + SQL字段值 + + + + + SQL字段长度 + + + + + 不是真的值,而是用于计算的值 + + + + + SQL快速操作类 + + + + + SQL快速操作类 + + + + + + 表名 + + + + + 操作字段列表 + + + + + 清理使用资源 + + + + + 清理使用资源 + + + + + 操作参数列表 + + + + + 操作参数列表 + + + + + 添加字符串字段 + + + + + + + 添加null值字段 + + + + + + 添加日期字段 + + + + + + + 添加int字段 + + + + + + + 添加double字段 + + + + + + + 添加decimal字段 + + + + + + + 添加bool字段 + + + + + + + 添加用于计算的值 + + + + + + + 添加Int64字段 + + + + + + + 清空内容 + + + + + 数量 + + + + + + + + + + 输出多条件搜索。 + + 字段名,多个字段请用逗号分隔。 + 多个条件之间请用空格隔开 + + + + + 获取插入SQL语句 + + + + + + 获取更新SQL语句 + + + + + + 添加参数 + + + + + + + 获取Ole参数 + + + + + + 获取SQL参数 + + + + + + AES加密解密类 + + + + + AES加密算法 + + 明文字符串 + 密钥 + 返回加密后的密文字节数组 + + + + AES解密 + + 密文字节数组 + 密钥 + 返回解密后的字符串 + + + + 加密 + + + + + + + + 解码 + + + + + + + + 转换密钥到合法密钥 + + + + + + + Base64编码类 + + + + + 编码 + + + + + + + 把字符串编码成Base64字符串 + + + + + + + + 解码 + + + + + + + MD5和SHA1操作类 + + + + + 获取MD5 + + + + + + + 获取MD5 + + + + + + + 获取SHA1 + + + + + + + 获取SHA1 + + + + + + + 获取HmacSHA1 + + + + + + + + 获取SHA256 + + + + + + + 获取HmacSHA256 + + + + + + + 获取SHA224 + + + + + + + 获取SHA512 + + + + + + + 获取HmacSHA512 + + + + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 内部类 + + + + 读写锁对象 + + + + 是否为写入模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 构造函数 + + 读写锁 + 写入模式为true,读取模式为false + + + 释放对象时退出指定锁定模式 + + + + 空的可释放对象,免去了调用时需要判断是否为null的问题 + 内部类 + + + + 空的可释放对象 + + + + 空的释放方法 + + + + 读写锁 + + + + 保存数据 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + 为Data属性设置初始值 + + + + 获取或设置当前对象中保存数据的值 + + 获取数据时未进入读取或写入锁定模式 + 设置数据时未进入写入锁定模式 + + + 是否启用,当该值为false时,Read()和Write()方法将返回 Disposable.Empty + + + + 进入读取锁定模式,该模式下允许多个读操作同时进行 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在读取或写入锁定模式下重复执行,返回Disposable.Empty; + + + + 进入写入锁定模式,该模式下只允许同时执行一个读操作 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在写入锁定模式下重复执行,返回Disposable.Empty; + + 读取模式下不能进入写入锁定状态 + + + + 中国农历类,最大支持公元0-9999年 + + 日期:2019-02-09 + 作者:http://www.cnblogs.com/zjfree/ + + + + 日历类型 + + + + + 无效 + + + + + Julian 日历 + + + + + Gregorian 日历 + + + + + 有效 + + + + + 公历节日 + + + + + 农历节日 + + + + + 某个月第n个星期几 + + + + + 获取农历 + + + + + + + 获取农历 + + + + + + + + + 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 + + + + + + + 农历搜索方向 + + + + + 无效 + + + + + 向上 + + + + + 向下 + + + + + {* 日月食类型, 无, 日食, 月全食, 月偏食 } + + + + + 无 + + + + + 日食 + + + + + 月全食 + + + + + 月偏食 + + + + + {* 月相, 无, 朔, 望} + + + + + 无 + + + + + 朔 + + + + + 望 + + + + + 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 + + + + + + + + + + + + 获得某公历年月日的农历月数 + + + + + + + + + 获取阳历日期对应的农历日期 + + + + + + + + + + + + + 获得某公历年月日的农历月日和是否闰月的信息 + + + + + + + + + + + + 获得等效标准日数对应的某公历日,倒推而来 + + + + + + + + + + 比较两个农历日期(包括闰月信息),1 大于2返回1、1等于2返回0、1小于2返回-1 + + + + + + + + + + + + + + 获得某农历年月日(加是否闰月)的公历年月日 + 该函数采用反向二分法查找 + + + + + + + + + + + + + 获取农历某一个月的总天数 + + + + + + + + + 获取农历年份,范围约1901-2101年 + + + + + + + 获取农历年份,范围约0-9999年 + + + + + + + + + 获取农历月份,范围约1901-2101年 + + + + + + + 获取农历月份,范围约0-9999年 + + + + + + + + + 获取中文表示的农历月份 + + + + + + + 获取农历日,范围约1901-2101年 + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 返回y年第n个节气(如小寒为1)的日差天数值(pd取值真假,分别表示平气和定气) + + + + pd取值真假,分别表示平气和定气 + + + + + 获取等效标准日数 + + + + + + + + + 取本月天数,不考虑 1582 年 10 月的特殊情况 + + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 获取节气 + + + + + + + + + + + + 获取公历节日 + + + + + + + 获取公历节日 + + + + + + + + + 获取指定月份的第n个星期几的节日 + + + + + + + 返回星座,范围约1901-2101年 + + + + + 返回星座,范围约0-9999年 + + + + + 获取农历节日 + + + + + + + + + 获取农历节日 + + + + + + + 判断y年m月(1,2,..,12,下同)d日是Gregorian历还是Julian历(opt=1,2,3分别表示标准日历,Gregorge历和Julian历),是则返回1,是Julian历则返回0,若是Gregorge历所删去的那10天则返回-1 + + + + + 返回阳历y年m月d日的日差天数(在y年年内所走过的天数,如2000年3月1日为61) + + + + + 返回阳历y年日差天数为x时所对应的月日数(如y=2000,x=274时,返回1001(表示10月1日,即返回100*m+d)) + + + + + 获取指定日期的节气。 + + 要获取的年 + 要获取的月 + + + 立春:立是开始的意思,春是蠢动,表示万物开始有生气,这一天春天开始。 + 雨水:降雨开始,雨水将多。 + 惊蛰:春雷响动,惊动蛰伏地下冬眠的生物,它们将开始出土活动。 + 春分:这是春季九十天的中分点,这一天昼夜相等,所以古代曾称春分秋分为昼夜分。 + 清明:明洁晴朗,气候温暖,草木开始萌发繁茂。 + 谷雨:雨生百谷的意思。雨水增多,适时的降雨对谷物生长很为有利。 + 立夏:夏天开始,万物渐将随温暖的气候而生长。 + 小满:满指籽粒饱满,麦类等夏热作物这时开始结籽灌浆,即将饱满。 + 芒种:有芒作物开始成熟,此时也是秋季作物播种的最繁忙时节。 + 夏至:白天最长,黑夜最短,这一天中午太阳位置最高,日影短至终极,古代又称这一天为日北至或长日至。 + 小暑:暑是炎热,此时还未到达最热。 + 大暑:炎热的程度到达高峰。 + 立秋:秋天开始,植物快成熟了。 + 处暑:处是住的意思,表示暑气到此为止。 + 白露:地面水气凝结为露,色白,是天气开始转凉了。 + 秋分:秋季九十天的中间,这一天昼夜相等,同春分一样,太阳从正东升起正西落下。 + 寒露:水露先白而后寒,是气候将逐渐转冷的意思。 + 霜降:水气开始凝结成霜。 + 立冬:冬是终了,作物收割后要收藏起来的意思,这一天起冬天开始。 + 小雪:开始降雪,但还不多。 + 大雪:雪量由小增大。 + 冬至:这一天中午太阳在天空中位置最低,日影最长,白天最短, 黑夜最长,古代又称短日至或日南至。 + 小寒:冷气积久而为寒,此时尚未冷到顶点。 + 大寒:天候达到最寒冷的程度 + + + + + 获取年柱。 + + + + + 获得月柱 + + + + + + + 获取日柱。 + + + + + 返回甲子数x对应的天干数(如33为3) + + + + + 返回甲子数x对应的地支数(如33为9) + + + + + 获取日的天干地支 + + + + + + + 返回甲子数x对应的天干字符串 + + + + + 返回甲子数x对应的地支字符串 + + + + + 返回甲子数x对应的干支字符串 + + + + + + + 获取三伏开始时间 + + + 0表示1伏,1表示2伏,2表示3伏 + + + + + 节气 + + + + + 节气的时间。 + + + + + 节气名。 + + + + + 热键转换类 + + + + + 功能键。 + + + + + 修改键。 + + + + + 转换功能键到谷歌浏览器专用 + + + + + 将chrome功能键转换为普通功能键 + + + + + + + 按键值。 + + + + + 初始化类 的新实例。 + + The modifiers. + The key code. + + + + + + + + + + + + + + + + + 初始化类 的新实例。 + + + + + 加载热键 + + + + + + + 加载热键 + + + + + + 加载热键 + + + + + + 判断是否是热键 + + + + + 获取当前热键 + + + + + 已重载,返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 功能键 + + + + + 无 + + + + + Alt键 + + + + + Ctrl键 + + + + + Shift键 + + + + + Win键 + + + + + 热键类 + + + + + 热键类 + + + + + + 热键注销 + + + + + 热键是否有效 + + + + + 释放热键 + + + + + 注册热键 + + + + + + + + + 注册热键 + + + + + + + + + 删除热键 + + + + + + + 删除所有热键 + + + + + 热键事件 + + + + + + 当使用热键时发生的事件 + + + + + 热键消息过滤 + + + + + + + 热键类型 + + + + + 热键id + + + + + 功能键 + + + + + 普通键 + + + + + 热键类型 + + + + + + + + Win32 API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 获取当前前台窗口句柄 + + + + + + 获得当前活动窗体 + + + + + + 设置活动窗体 + + + + + + + 获取类名 + + + + + + + + + 获取当前线程对应的进程ID + + + + + + + + 判断指定句柄是否是一个窗口 + + + + + + + 获取窗口标题 + + + + + + + + + 查找窗口 + + + + + + + + 设置父窗口 + + + + + + + + 移动窗口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 结束进程 + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + 获取窗口位置和大小 + + + + + + + + 矩形 + + + + + 最左坐标 + + + + + 最上坐标 + + + + + 最右坐标 + + + + + 最下坐标 + + + + + WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。 + + + + + 系统通道ID + + + + + 用户通道ID + + + + + + + + + + + + + + + + + + + + + + + + + 获取消息 + + + + + + + + 发送消息 + + + + + + + + + + 设置父窗口 + + + + + + + + diff --git a/Bin/Debug/VSoft/MyDb_SQLite.dll b/Bin/Debug/VSoft/MyDb_SQLite.dll index 8987c2b9e6e1863a5d2c0671ddbbad273edef45f..f70f6f1117690fef24c062225823f9be5148cee7 100644 GIT binary patch delta 57 zcmZo@U~Fh$oY28sr~hJOcex_>9rlat3}A46vZ9jkW(B1SLIO?yBd=Cje{|ewaK?S# L-#>2_nQ{XFRvQ-s delta 57 zcmZo@U~Fh$oY2AC`TF3-?s7%$+w85(3}A46vZ9jkW(B1SLIP(q_CF9{*YntLZgZJo KsP~*jrrZEgQ52E@ diff --git a/Bin/Debug/VSoft/UserDb/Setting.xml b/Bin/Debug/VSoft/UserDb/Setting.xml index d2a6b00..db7fd3a 100644 --- a/Bin/Debug/VSoft/UserDb/Setting.xml +++ b/Bin/Debug/VSoft/UserDb/Setting.xml @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/Bin/Debug/VSoft/UserDb/Softs.dat b/Bin/Debug/VSoft/UserDb/Softs.dat index 5824e2dd4c807ec0468c851d4e1f06bf50e5af5c..f600768f5d5f4e979098c2a9467bbf3c5f65df9b 100644 GIT binary patch delta 95 zcmV-l0HFVXzyW~30gxL3&XF8L0nV{t4G{qdvu+Vo2LTJS!x$YB0SB|;Dt`n446|V` z>j41?vrRFw5&;deL{S3)3bRs2uLKPM000C59{>V`0sH|UvkpuV0h2~d-Lw2n1QJjM B8#e#| delta 151 zcmZoTz}Rqrae_4C>4`GVjHfpy@Cq`rZ_X18VQ1vpd{{zOh>>^mL#=uiM()jt`mY%o zIX3$mZW3bT+2j()%*eSp$bCHvFQYO83xgX2Qw!rC2Di<8K7x!AToFOu3=9l68B|?) zc{v!IIe2-Uc^MgvCky(;Gcr#u^b-~VO5b7-G~{*VU~uH%wFXH`PM+y!xA~7Rix2?M C03-bX diff --git a/Bin/Debug/VSoft/UserDb/Win.dat b/Bin/Debug/VSoft/UserDb/Win.dat index a67b64f..0279e4a 100644 --- a/Bin/Debug/VSoft/UserDb/Win.dat +++ b/Bin/Debug/VSoft/UserDb/Win.dat @@ -1,4 +1,4 @@ [VSoft] -hwnd=660032 +hwnd=2889742 width=742 height=572 diff --git a/Bin/Debug/VSoft/VSoft.dll b/Bin/Debug/VSoft/VSoft.dll index 3b880a34ab7ee9daff2e5b4b3967e232d1182c55..a599114f5143c3fd7705805a9aae8975b9188d54 100644 GIT binary patch delta 92583 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 S2H$2!z_9Thwejk=^8WzkC1s@m delta 87379 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%0D<` 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[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

q zViOuV&FHZ5VpKw!YJq>VmB)H0y3pl{wmVg0I)z%}bGT%J-DfsYN*C(k&^YbG`1nr* z_1CGTUS>t%1h&m>w%IM5i{l~CN7YfjidQ~=qjF=N9VEe5u13XMzS+o9WvsS_+wHJC z8g-0z#MvX+GY6`J3n$gpuTwmN6VY;lU4#pc__lVp*_kRc8{+;s(Zmp7 zKTD4>oxbezJk;+)zIc?qtR3yJTYRITl<{^?s6)_B9TrvNMx!bRZ)L1N_dB>pAvYgh zAB;!a!yLXiZdo(yVHnBLtd;0+FTB581@|;NZ`i-0y*g};lyyNo{@;z~vNJcn;yYkL%I z#mDkZKq|&pX7w8P+qpn zonquepMj5-@Wr9>VDwmp2(xRzaJx<71vumhIC*?Vsvb7oeMR+8`B9tB!Cn5EK~ESf zb6R=FU=7CV9CuKlxTPJ@`me%Twl)IZ3|DSyQ|LD9w%j52X77Su!8n8UACQ zjN?rr&XK6WKX1So!16|m&0BuKBdpD4M{oJJm=F*nE;#CN$l!uEC`q^SOjqIL?bG88 z^!IU%KaE`vR6p4&IG(UY#IZ{%D>{p#zp00PcIVGS-D$Tem6R>*?&eX>+i_DlJ4S>} zx$R+UykL}rn4=t{AkkAEbdM3eb1z5l0v1)oa9|==)V~Qom`2N0{HECBjIhFX#6#UY zR+q7B$h2yaECGtq*bl*?P;#XJpL zi`jm_8Do!h_>v+2q&Az*6LBC<#Y#mC_O)Qc@SmfmB0){-So4l8FiNwNBg!7`^{;k1 z(ZhjaWej^2!TXjt%pfYs;p9Ll^x?yyjyNM5=e5OkwYTQo0or5^@M#yeV~#E?Z^9T_ zt)dE(u|p!PT-fhmlEB~A7g2n6K=0uor$6>4IgEe*<2QN4* z<9)M+pWQ$d#m9%^s4B488_+i+)WZ7%<07!| zv@e@Ws!5SOLKT6n4vAw6LkMXckvu1DMUj(U|8dn)FkU;MyNI<-Vp_udggrrE4^RIr zylE)>@fVDlHBhZ$d_Ot~#~W}g-d9l^Y|v;7c!l8|h6aXn444aj{?8cj(FWg0EFLCbGknYNJya180ysQMaIw&VA(f#U!!U+X zm{R>u>ns*S3~Ywv|BB%}>$o9-J+PFFWf~J~H@;4s?w2+v7hdMIHHBSM_HF zKy$qQ=NXPMoNdKe&+q}mMcztr6v`nN>~MyL>+5hBjbmmUo=V;~O^1o(kW4MUgo%04fm}3gl7OwE1 zs}T3ta7Q7uWLyL$4+nNFg*blN6fUf2sR#3v!^v`-(~xnLj=9PchZ4~7q*2VrlMZaP zO5zzP4s)+i`vlA_$P0oQ1_!|88)}>n@%Z5W08e`kmy@SxN2tPWPIZLif115OMs5}= zSIs)e^O^rOjH%i>(V@J-x^T*c&FeLsT=A*YW*2*<^1!!ZX4s(A0Wh``gfqF~y#B8B zJpZ#)Z|4onf6=J#A{ryjo@;5YlY)isP}jk0F@_F|3c3kiVPfI#@^640K48Hl?n#78 zN;3K}4hLkW)RcQ!@QrsUO-E*j7v)fXrLn-jI6Lfv?QY7v&oq57WE#@X3_c&mW_*55 zF)i+d4J>RCy&C7@p{v7=7yZdv1Yvt}p_4&f5gc)tFp%ZAp+YP8ylHE&=3Po?ffP)U zlH#1ra-IzS?OjUgFw*K!p~N`KiYxs7r-A5lC0}F=R0p%(quvy7_}He8m%o50AY9$!znbxFw7cYe`Ug~_e<1g44Eh&p z`&vwyef|=sa-K<8PTi-8QzgOSi?nv0yB734bKeT@b=&J-xz#URF9jDb(r)ohT87~? z|CX?vxF)HEoU^RPs%uUP_P9tJf-b+76Pa^4pU4T0@oO1jN!nSyGAoj_;CjDSM2`f& z^=s{M0VW}!y`uFHy=%?|v|@^cgsXLYX)<3#25+g*dQtD-nhI?iE_M1fT<60t=Jl?r J&D6f3{{uz1y$1jQ diff --git a/Bin/Debug/VSoft/VSoftBox.exe b/Bin/Debug/VSoft/VSoftBox.exe index ba438af8bcb75bf70aefa17318cec7526e53a2b5..ce4f3b1b4b4f4dce96c72e9b947e15bf5b8fb065 100644 GIT binary patch delta 220 zcmZp8z}oPDbwUTr$@lGlHuf}eF!gdx7T{E3xx;>ueX<#+g#?Jf00!q+K@=kp-(m0N z+T6w|$1dRG>bOW;%h0hoZ|{enH`cx1yhXs1iOI-(^M9eej4WH5gC|ZtAYvj=v})1M zO4oLm#s-URlfE5z(##^dokf)KMj)>PGuUh};V}JW8ly2+FV`KQjf@PvT+`Lk8Iu?n zOz%u*RA#K1zBZllD6|r|z+&@%p}mYO3|%K@O+FxEBEYyi zqdz9Y%5m}wot}Ls{m(VCh;C;QWxNr{YsU;W8%)?uf0@Q;%%#YDhaF^(BJ*^$bjBpc zdDA=78I>8UrmszBJj!gqV6nY4gE5tn7sz5TU@!z~bzoE<8#T{VmGHY)&7 CBRyLH diff --git a/Bin/Debug/VSoft/cUpdate.dat b/Bin/Debug/VSoft/cUpdate.dat index 6cebc55..728368d 100644 --- a/Bin/Debug/VSoft/cUpdate.dat +++ b/Bin/Debug/VSoft/cUpdate.dat @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/Bin/Debug/VSoft/ryControls.dll b/Bin/Debug/VSoft/ryControls.dll index e8a9dc973dbf1c6b759b7a3a88d8afd33df4600c..d922d75f39e077d28240b9e866539cfa6aa1a625 100644 GIT binary patch delta 145072 zcmcG%37lL-6*t;-yQjOSXUX&|-LoXqJxOMA(=(G~W`Ha}Hk2hS35$>gNmx`isn8uz zXgVEGL1d?ai|mW2pduIn0TChyf+zt5*%Ck&QAEH6S(EqwpSrjE_GD1M@4Yv_q;J)! zQ>V^3b?Ve|tLm04@2EoqX#UrV>ER4q^gpd5Iov{_A@vKg%Ogc&7Z0FC7wo$EuB#mP9V>sf`4}{S&M_GKP8wgMIyR%ic8* zh*|j{Ai6fPJ{Uc^MSZJuT-Qwbop|B+rtmCatU0T+88H4P*AI^GQuP;smuPMuP}Flv z2Ta(ns};e_PpsgYOOaAI4g{?{f0O$5(uN7s;%74b3Cn(f1zNfG$c5c)%2}W2K4@b4 zb)?0@R^hx*AQTQ3&d0;D_fUb@K&utr68=-^ocXCZq0=H(qVOzfhx6yJzi0mMRr(D# z?*%6Bg`@KRxpeEoIqJgFUl%^6E?ocfU1mr7Hb{$VBrjw{4`!YArlXVG{*%&_BsCh$dZs zlblF;G*9LPDbW(@UvALiAwlVl=D&ed#QIgB7`s7ux(s=dKnYAj>;@6xs}LqC5_n*u z7br|Tlw8_^U&He7718{u$ZgqF$h3OPMD5EFvuvs`nlB=KBx>1vBi2uhVrc!2`;1uX zmnFSqCv|`6hf5}?2TPAE>2CWG)M7sf)39#^fg2dj-&*=)$#>@5T%E#bT_nFAq!aVn zVaXC)Hv6@J&bk6W!HxeR^KfCCoYRkv2z4I`-4Ayla5MsK()SKrS-;mfI*U zMmieQC3yH7)Zdt45i;0&;-@bY&R??r$1COr({H=^9Fyt9(pSl93bi?Q;L!>IL> zr3uHJsGeMZ(J`M<>ao(Z$96THfdU3p#xfZBZ>|r0`G-oKQM&cGM5Cm&dnu)-j{Aao zp|qnOR!^6X(-V@b}J!=9Z%G zMZLIW2_Bq-gpFX(z8MJ~vl~I)<@<32!#WQsJqk~hK3aXQy0Y}G<7Y;%M3vWDr#w+o z*?!|euPl97fj?O~z5+iwI}^FC%T85~mLARafwzBTdk}8R_3Zg53R6cl;QsB`BXHDVSQq7v3QZ(3R)mfm8hSPP;Xba8Cei(}AYgVV+U0SuK^Rss& zt#?tHz1FG&LhU0nnc~9Gcda_0zZVcv=v|abuR6e&+|J}?Ra3a9bnluoc4uh?=3lI<6kASnfaQ^<%rW5Rr ze<5RCq_glKvBDAiH%J_aMDmZ6x=&ot^;c9%~JmHH07+Z^ptYIX#6S4Yt1Ze%;C;d63 zK3spp+Fh--ttg^C8jk2=QA33%K_i-f^1@TQc3@Cz01;1>On;XXkEk#n>P7-!a;8ZuV2od`{=xi`)AdxL$tBRhB zm;>U#4sPW5|3)GhT|ectz1q~~(i-QkrU(cQU}$k8vW0WC(bC*YpKPiJkX`)C;0bE| zW2xucJ6R3U(#mf?oQN^Qf^a;X--OiRsc|%{I%KAf&~UF`(+51IeqO|8J4X7-iGZP)YnRze)pC-yY!pKhUz{a zYOG84^)*Hs!=>=XLrX_)OwV3|?xP-!?O^wbpbW;)dj{qqeDo;zY{2FL_SN+pHrA?v zH^Cy@1!^ml7_Nu6U`W3OXgH}qL51S+E@MIccImyx`$PXmq_p74nWclDIBMXzF>}A* z%N^94P3)!8yHCthudW|@@|38hBBdWcpT=YTj z+i!veyPRJ7?Tblf&Te+pHKo{#mrO1vWlp#9k5w|C;LBWk;6;{IdR-ptqc8oeWoFBa zP~bx93V&8=e&JbWO|=%D<1@V#(DX=z+9zX&BZ1MmSfXl84 zTn9-mfXfc*7?d6h>RLSNtY9Q;Z$up?>Mi?Mcn%y<4C*M7^vPg+&B@STL+wDcR^Jmw z)9tk)7^L10JQoQ%iP?`M-V$mK*(W1bkA5~1Hu#^8ij72d3nCF+Amd>*^qgQSdUENfq}l#t;-QBp{g)({9St02@hqYugHawd~v%N>heuuViwoK?)13q>|vnlY{Xp*VH+7Y6 z=?Pl^oZsySylOCBEn@&c3<8pK_X8#V1?}H~g>)-C^+*TFavXp;@Q{_mFh8ar#!vrb z7psj}Nh|+qX~R$3pq*<)B8XHIIKq$%Sh-Umc;Ok)v1|;?U^)z^V$xAt_I#u!&-pTj z0lf*6be%p8WZ<9H(#Df^k&o0)shxbz%XMi9`#4a{{N2i)qyjsvF1#+K+yq$R4F)?3 ze-_BwD8#b=g1WWx?*fw4^T~<*3LvE;KioC-A_4=0R{l*S2D1-^1FO+R0%ntzeRt{5 ze)z3;k zg0ea0TLmC&prqeV6bWs2DT{u8g_hKQ&fneEMPaY&MSG>F*Xav{Vd7=atWaV+RY=Y7 zbIgp{9}(w5$-{W+lvKjtlss55lzo;+7kPjXZ2WcF_*`;+v4B~2_LT}P#z)fSh+skJfZjhzk7Fwd06-B0 zAc0|*Z8oILVJ2c6iccQ$^pBLX{xBBI z{s#Wr{u|nfsIbf@6=@(R2aA{{<^K)9K%IH&18G7*`vYV{$s80t#;zBCu5%%_>s*8Z z<6LM0R&EbSRiM?tUl1=R{(`n+j6_S%=k|Zh9V>g~_e+~UP83D8>%fA>+zsuS@kGMk z;t9zfRB5M-r=J6R)y_pSx-LMn_?!#lbS~u*(560+HdSQFM^gi0)2VT8mqF>0`UP=0 zCd{dsD-%0G*S4fTk*w{hZa>$|l%2|!ysAt+{S>*baxg{Wd7g`UEUSl+q`pj8X1Gi5 zF6~mnGIi32qCrS!N6960`hFQwD|~+d=aVcg-dfwPX#HS`BP1++phLyjEofg}TD^6A z_zED~^POo8%5J#^h#mHBfCO#A!}bE_s0NiP{dH@by7FR6^%l2)9m_UutCc#j>^6Di zm4$ZdhAm$>=!G*2gD2dIPGK-&h3u<9UIvrKNzs{o0@8!?tz>}#y!Jr8YGVZC;+IuN z4^#BY8VL25vC%GmNp%)0Smy>$fa|aZI!ze^%~-Rql%ZFV(pn#HSA#dm6^C4jEy`}j zGXqaT0rfTHdj}H<>T4N866KY_1d|vE>LN!~^nBEqwC!M^>{NmU(PKUYRF4*iO_qU} zF_ar|>G_gHH3p|#IM&sLFH<<0^MSFvQU)-ywZhCHumt`YU~t+2aPmwx z@qsy?uG+qeY7LT6;mJX|H%uMGy#*}iTnp83360GRl$f*;^=)1zJ{biHq9-Ry|u!&DL%EtuOz}ezZS$>&XAfpnaZm2SVXDtCDU}o}TfJ6Eg`Mnjtmi-e66J4+859cu<{Zj_RU<~2g5XM@HO!O-; z&i9)Gb`&_y+OUdz@xPG^>DxglcaqTeXmV-gn25duDXts31|nR_W@-NnKo(Iz5rrC5 z6F{nT-ZPV&#)xVw-ic%gb{8IX7T>kR1{2&5O}?nOujbK>x?{ST!F?XyXt-7F=RzWq#xF!K5T&lv#^tjtAte%l$0s?4$`BP;IXK>pU4vp* zLj4AtN@V^{4?DF2@9s=u>R_gHuX0ywFv<#?&)QBDSWq#TT!|jATt+CcO5nlvDzN2& zJFCFT19z_+80Qj6tuPb}Nh=>gDY+bkj#*)iwb7XUfYE@Y44cI#+v6%&AbzVW^q9Gw z$@S{c4l)mdCxDh@DHC_Ds#om?Mv=^6HJ{$F`d2J>*zJ9okXdWlSZYAc46>TK?IA|8 z&%?>t4-$FQ5b2@OL!<>`43We(Oy`F+WMP6&kBMLVnW(iKr$P0gSAa0dLLDD66)My- z=nkxQC3E?4gqXG@Ga-1a&mch@rTs9eqC+R4%oovh3&nh#c?76Gi}4^aSO(+{n!*f5 zQJ{Jkptx^kFo;l?Uir()WrK5Sr-^YE^;#CMoPmL&&R@~^E-=w1?xcoS0Z5%#LGP(0V6J91|R4gakFb*RVGl(SyjCsCi%o;BQ-P#6t z7lOY4i2kC0DOak_9o$J|B(+y+rM!a@Be(KJg46H9qACL~*AlW_EO(WdlVq-EX=q)H zbm%?H;ndVr(m%3cx;L_6I6Fc@X832s66j1qJB?ffB=zz#*AQl&(=$o!+02xx5zsiN zwna_dV<%4qw`ypcQ??NhG;87Q{vy*R8-F3|8wkrp6yxzPcAL+F$+7B;EP<$mKxwlCUMNy&AJP!O0+~#g!6+o)jN(% z*9K+ihL+mmya-^Mk6b()udS5S?aWN5p?0#j^LAUeZbfR1uvbCp+1{T!f}LEEI9^6k z=6Q#1*}4_lAVN^*In>Cr0+%kg7duZU)HO-rI(k_PSP`zHmko4L$a9kF3=4Lk?weQ? zN;6P+<`F9uD|CW@WwR$MjF;d#G>^gr33Bb)vJXWXhI79~gk1=+n`edxu+@MI zWG@&`YT2KoEA4ewcBl?@g>zDen$~m>P-Vc20qW-vcH)cGpz~^nN-dOkq{gjwg8{l# zKCAlWN8BkSZ2I%0RMpN_I-l)Sy;jO}6)DqIAjYo3jipUm+N2@IG&j~`(t1o9VoY;m z6HVGglZF`6B-ZA1k5_Ru$(b=8@7^baVYJX*K2r6mLYmVL^ZLDyFf(?*o0;<1;T(uz z<@*Wobx8(bKZXj`8{KAo3;DUkgHmM~}srv*(VO0%C0o%~#mASA#L*X%mGCJdxColXF2z zBqWltY+aUD3YL7Z!78k8ja4oRtn_@R~d!K?%Es!|z3IOwiTXOLvV zL}V?=NK2|K&qMYrvW{hRCzb6|WVk%KqsC=g zb+A+cr>zAshf#Gg5OD?aYs^#_RmNosD!)p}ZZdtTt8Tviy~Ha>GE@)VO#PX`n^b%C z;7v5*AH0jt3{eksYD%@%p2Dj6E<|yzN~xskcWzIqNl~dV$l<)4 zQWJ)0IcB4xaIzH!X^bkLMvA;%uJgTKw(>n3p(W9>IZ$&BPOFACsVR;Ct&l#7=6{Hl zpD5{>MXpU%+7v3x*o^TxSe+K1GnGTR*4+*d2B^CD#(hyovYXah0F#lO2x$g#Mg_8V zFDfn%IHtKkCQE_Ux*`pNqY&jQx~g zQ$^)5p+rWCqX&fqhqK2}+{%L3)0OOvY{PJslD$#yQI4eFgG#CtN0jVY6~##wZy?DC z29iEvldDIPL`dj)W%`}2ZVlY%mSJz`$S@T8H8XT%tZL}k@2s7qrWUb5-u2$z3jl0Z zcOmtZ5+qJ1q^e6hvy3BZ2hLe#h^Q72Y)E(Mc*DJKmLY#2Wp03Q`X;MPafHl0LzsO4 ze%FqUZ^!h5m@Y~7vl84MQ0^9Vb0zfW5T?6BZ({}&5TNvISe@SyO938}>N^Q3lrH8m`P3Fl=_(WMX&6t>CKpvRO1=E4)mBp_HA zw74~`GkYrxBh$Hd8u7ZVb@J?7JKc@SvvchXH!9E0wL7>`c@C!%sh!+ z#29CmRm{VFj@ za7HwM?J$8W;o53K$K-yAe!e#r8yAolNcMaXsEZf^uOSN@GPkbU3qjGjqfd?R#+!QV zEGytw!)}7@Y0DYO{}9P?LPr=-4H`Npj%o8-x;bN7pu7QE0x>rLoP1@_7Zd-M!_0AkybuRn~ zixzzb183oR74(^Fbob@H!hN}|g;((iazjx}zsaA!;-?OqsBeSL3$Hqt*s6chTYyE) zTm8Qw$X4@5JO^IoS)Fm9mwVfJ)mAf#?*M98Y=bGF?Ut^)c!s~d129n4f zXYO~AE%$fk{Re(BI6^=K`&P1V`n|oODvq`J^v2r%B(Ap*$ApYinyOm&U4o!x{|l*w zeHl#unblMNF$3NGn38*sNCyc1+Z>eIzh;ru+tKzhqw0Oks2VYhs*C#|Pc&kqIrPWE zk&zc!!HWT-wwZl1p4UKd0}bx@IN}&Y5d{ZVP{;rr5uf_sU?Dj7R;CLesPWDKgBSWAjeLG|tNJBZH74M4<|0&}ww~0JQ=z)hS@ntL=fQODN3>><=j#DRrwoLjtAc?JR)^o9|`L~C=eT2iUwyYUIbxHM*pwsT{3deD+A;H`l#is7*z2I6-zjtmSBoC z*6Lb?bLF6_>%NYaD_aJ%0%OT#4gI!>*J>-|JUFN(*9)y6Qej5UdxNU4t{H8-1)Ke? z!W+(%X=-}$PiWmyELmKJ0{{%0IVE3PVUfasnj>}u@uRwz3ac(OB8KkaXiBoQ&P{V) zow~84-VwTTBbMfyY}t=O2v4cSYs^u-Q$?fX*~Qf%upX}&JkrZMTJs*>|4q9y#dL|x z3O~nAh&4<+bMSfa1i|mkJEV*0CqkFT8eQC z+W%^s;BfXI)uUMUFa|fVU#i_d#3y>Tqp7^)$#`nG(?7f?DCxdwmgMQ~t7b+L`ny5r z-QQypRGgtA>Okj=8EVd?UwO^b##>k!Sw2{X$Rc6>Kv}h?uE5$o*zp2$<_)PS#T6*lyeTVSxe&n!%dj6~GtWg4E-WM1$`dh%jSR8Easu)K z&NGZzYmAwa$=vDCYhkHmuzR5U>;fnwSBF%aPJq7YV5Ca#E&=+`&wCIF>|>>yF?n>4 zGuZXWD+?V~;4^SGSnP-=Vy$(F`u?7vY{`wHJxNEb8}OVSiO4e+O)jmE8VqTH!;c5U z6+^~CN>DcfzsKI_@H-^;?>M7^v!>YY_3aTFc4y5eVt7b64%R+^gb{QNXCU` zpg6t9kL64D-j4RC3@~YiktR}fciNkC0^SKBVUf=8FmNOT!f8<8X=Xr3Sa4vHTbgiY zcFJSJjBFSAGuV?^FyHl(aovFwEL2J)s5@D)5^mSUE+%<+;~BvkGBXAB1blF-{#k|ramNc*(p;1x6+z+(QFAiI^P)l`>3DaR$^S){IdIA1wdrBRa9@VAdS}5EY|B{nQx6%7O*QX2B@+lm>;KDiv@;^ zt_i0UnLmQ=n3aMVAS)%~=gX}V)^X;Nkj_9!18pI$J;qWCMlf`gil&aSXY(j>h&LHx z7a_dwh#-E5l|R(X{lx7pp-th>%2PLHxw~vEMm_nJNEu_fd)1iWkloLk%VODpj>$Dd zE!7U5t|m_t5g5S8+#440Bpd(SJcoz$AQDqEhOx6vLbHc@O{ja?co)<#t=SDtn-;}* zbQ;Nd5Da6CCTQ~6<2jtY0PQ?6T*kCQBldJ=AumUhDK;{W&-gbc^Jp5*)hU%2rhY00 zg8Z1JmYtG${Uu~&i!$c^s>b& zV3}xUgqV#R(#qW38cdXRDt9X<8!qK%x z|ES;4G{=8T*epCVjCpedEY-iL?}8f%mTj0r<)VOHU&j7DR< z>PN37*tgNc#U4lSFpAS7{xX}&*hl(_w3TU_Hv@)9Fx*n(JU376sE%?H^RdyQ)k7<9 zwAc#sHg7-cNe}G5L`c0JFbjW@#s{~(IZo>JP8c+1nrqfX+O@Mg@-K*r47NP8(q&XZVoyQ61BLw zNEXX;UXc<24{JQY8jGjzormUQ-ztG)FfwNwMo8sgjCor!>E$sLz-@Vo)T4Dqn?;vPfOxj@kK@Y5k@dFq0CJ|fw((C{PS ziCCVSFF)QM)-KG9u`P(jPZqWtDLl^+ZYw)89;pid~cpAd)E!q%OE<(cW+W<3M7~ird z$qI+5k<rq%ceAPEwk@C=GLlH6zu8oV5;e`RqTJi=NY^N0QkNKkN^NT z5^y?tXa-CamtP22rtX%!SxKar`Tb1tM|ntm0qRy!;`ia4zOW;pA!Yq|3I%%yQMi2xA%8W++EF72RJwH zjy*cBJHOstOyoH1TcfTvZ zKk~o~RKPcTUSAY%saM&>oWg`k_?<4ZU zkFJ|1FX^B-N;ELb(j0aVG-AgYWzow~VE;rbPZ35z>w!br^>U|YPxNwpcW1722%1-X z?5ez@V@II;K6i9<3u&Q5KE0~?6?Nsk6JmnA%y|LA@XzWj+zOa`ZuTb(CJR3m$lKJl zeRd6Q#<22t5R@mXJH-}&+bjsibrJG#_m})^G`;{n9bd?837-gI%=qYN)@5FD6}N@o zStf6a^|v~vC8U|rC@GQ*A>4pFwl?pixSDa3w6XO-i{TY&(4K{Y*E|f(;OZ(uqY>wq zd#Oa!!*lMtQ?>S+6uY+kw(CSIPnb*qaKlPSw_}MPPkV)v+FKBWz6Zlr=|a4KT63Nt68ElORQ>N|yD z`xR8H@IdEF{hGb#YfZ%4i+&dpJjiLrf`o{f!((Lu6;{NAlaqK7V*SZXlB*7kxZAb7 zGQ3UdEO1nkccjiF2|?5wUbcof3*$354V`|0A z$xg*tVK|wl1&NOI>CVYZ)VRY4Po$>%nGn<)D@+KTCDk()!o2f$g1@1{gy4Hj+-a4K z&Wv2B4! zoTzxS9V@qWG+1u*n2E9R4@oTdd6-|}ZlJk-^cNC51kmi8(1UDRDBLSR<5jN$i&p-A z=NJ2_-h*<8^x`#!KE(~lrAE?D*8+l7*e&4;5U4mtLe3{72`8h!f>2~IQY$b2VC!V0 zRZ4r2SQo`lWOE{y0NbLQb=8_D#stN?Gg+0YkOk z10r0O;8U-0Uff^x7Y~I%vHqFOfl0u|-#hnm2QxsE%b@Z1xuAFjG~a-5FPoIdde|4a ze}v+KYYv6t-QvR2&>i~AP3Uie87o{MFq|w(H0k8?I0s9Fy`8QSQNk_1B_t3ejXd~i>5Y+#x(qj>$a z$zvK+yk0CSUY`_;0twbCMR$e{Qmuo>BbM5tvv{<$#9LBZrX3QmkGDv9{ri{eBe0q| zr8@Rvb!1a$WzBWjsd(6a8m;kG(5MBCR-qBEvvZ`~fWR6C8WA{wfpG|&=sb0h8rbzK zhz|x6{f+V3<~IAQh#BD;PiPzgFGkiM2$(DHk3~-VMpd}GcWZ5N{JyuN+qRz&?V3Vt#LM2=R@j88isS%o> zTYb}ZkJqPvf#zQMF+-hoEOe*%VArRllMyhrj!o?){PgGCs%{RtRqgzAnd+S`bmD_M zc(}~hZzCr2S~nH;XX2+j(dBAdkqy+W;-X!L^xvV%vnOM1!!Cex)2Q`Y1d~gXInKz% zb6NR{%W?fA#{D!q<9ft#VAp|hr1}3)2JTw>e^E$K?r;)sU1p=rUiUwQn+7&c##?|&^=puk~Fup(2s|zc7CvAbS-45q zA}G5U4Nk8DOIDuo^hyh3_74A8PI9_qIVsKtQ&yf5n1PC6!aylZ6|^YG6s!s?P>QfE zl#*`?73ro*HZtMeTg7noVM9W)E6Y+9g}X7tGE}yfWl7`Jb)f1XDJ9J6G9{51tKwCM z{D^}~;VNXZr!vFgqEIFly-nGSU~qE<45>2QvGP<{>Zq!63Cf;PDOXV1s>>Bvty`{S zxVBO*<6f~vMo{i$qsnECq+yEHA`_aup;9#CsZm7}*6o%o`1e*yX51^8VQWhT?tPR!LCy{t63%5>M6pO_H$jE(?PHc!dQTiZ_X{7bKj)xN2@8u==3M zL(Zuy)dcmBbM;EqQIt$iRSIPs#{sIUny@anP=?!eSXvgto#%9Nt5Tx0 zsQ%Kj0wR)ujo7;*jp0P<$YH+*2+O`!VTN%r;Pmkrm;3d=6mN#Z#+1}INeK+M>r>%3 zjWbT@8x33zdNdo<)5^*EC(h%m)Nw1nR)(b4jkXNt$k5J*8 zeAE=qCJ_<3)qg`yC1;2{tW<}AWJ1NX?8+-iPM6ib~hFL zbz$bWJ`xE0n6raCB?F_>aB}_+F-*>#?QA$)weC#q>T|$RUw;&vR?lT9k}W{n5Q}N& z5t68%g<~6dtxOT4`h36|YV+T8nvYPuYMC?Z2$fR%I7^REyA~;UZJvVK7vM)<$e$8^ zW_=r-QM@Kno3EhA-6#4YqR`3CI*};h|A?|bQ6is)vi=C1tC@v&zkzu4Q*h*Jg;@FD4(C;74jDUaK91@pupI!H9H&48AUPPW=L^yCTL7Qfc1?c1uHZgMAt4P$>Iy zhOWTRrt{I*`{EuM;v4u^0k6%|K9bX-CNP*cg(d7`(N`AN~1w(G$HcaEWxxzXIV;q0-WnXo)9Un)^|Z2oZ0V>u^qZ9=hRlW?+20 zC4V&qYcgYcjOc;GsVfHl@#Z29MmNVXv8bqE__la_aKIC%e47N4V(l+bCaubNR>GNxW&RGYV!MDF8&EVcINi%ryOKP_w z+YZubBY0Gr!?ggI=I|jcusz;t+F3QOQRj8Um39GYfq2LNhI<`xi=F=!c|BW-G`Oz+ zhHIM4A`%||-*DsO*=&k2JlSqs;oXKqfw&$q3pa~_*o3i(jn$l}3tw}(SDMoVk9ws& z;k6SsZEFtC1-Qs=vr3I!w%fjBPMwZ-S8OYuM%ziV?R3Y}rn&6MvivA1 zpriz)7*83TcENGmSDj&wytR*f7KHwn%HPDB3j2U;%*fZ$er|*!xsLhp^MMMzqTli= z*3{CIXqlL3nS@4X_>NEVHM+_1$!K(wO{44a8eKPVOrx6^pM*9yDL%UVm2#;h7k(keL1+V0LxiVhH>YXrsH14liGwtPAMx z3&GRMnC&Bp3Wh5e%J1tx+)(NmSq_JKBXSu(+!${h*xk#~D3)Q^?;m!de*Z6g^|zN( z=zV=k+Q!+w`pMR<;q2m*c=xLujl-9B^i9ZA;IJfv@yHLzzvqw7Mt!>ecwC~TY1Yx@ z`i(cqm;~KI9Paq=}tqh#}ruCD0f8Hh7F>-vo!)GL&@y>yjqce6IW08yt z_ZyuWmoCvbCP7JWi&3#2V#J%^Dw^U=WmoaQYL$-Mff2fuf7*F-wc68u5=LX(PzEw_ zbHWLD_K7!n8fo%n3t}H~ylU?xM0P3gt#}tkQOnBd=ObM`?c8|08f<=wXrcp-^)ZHi z(s|=}wcWz?oEwC*S921@-H13^8MXyz3DCU(_^)Wz1{}`*pc>aXB&!k`$pSXJz%DK^ z<$ZEEPy#MdZqOdb(cMcZm~3B_RpZqy&fQt;rMT63Dyx<*CRQ|YnXCs!lkT(KJS(qi zld)M?>I?+4zXAvLEzss1yhw7VF9I~z72oQdl2gaTNHiYmxXf;M-p#3&@my?-hul)| zX)!}S9%4C8dJRsk-s0@EMwmKqjhfxd#abQ*YrjlOFdB~}&si!{>QwKQ`X@+sNjH)7 zu~-?7WS^&U);oV#qk6*IV#MN652NP<)xMN;J(_9s7Xg>7uv&XInw?oAjmIkC+|N*D z_7nKw!k!3Or+8gCG2Y;bGcMlf6+N~%P4PyL+1*d9 z7Ki8bA#glC&c#4!7w;n4~l8pw>aHj5wT}|MU8xhDz>@BKi--&{J1e!4-&JVVQJ{U zMV)P?v^G;(n|{=}rJ!2J{}ed=Xt>15-o|?7pmuX@pJo5ldGRaivzLWE)EeS86{V zsf2x|j*F_KZlb1cqNZ-5sGD3~^-PuqT3Z$fBN4Bxv2D99Uh4_;Jo5XSs%zWz@mQ5W z^*({>|EoZC6(QpFm9WpW8(e`Jj6e-WpauwZ(J88DVcBfG>JmHk1oRm#j#!9d8V#LB zL#GjR{{6qwd7j3Pu2txaGjzroI^#fRc|mpU$QDG;EKhh$dD0YVYfqDa+cGeQ5ogq7 z2sDAfe{Vf671TU@5CrY2x5aH&ctf1De+ugEW~+@zz0Fp5`(w6Ih66ZZZ7!lY z0)yqMbExua<8kD2H=#Ts!SAC-DzK+@p}*&~7w)!p_LVM}JbCvqlSXRK)N%f0QNptQ z7>`;3PpmwjVHfH*pq`{$T7t)2VvQRDkKDFlpKV4xA+MD7bXPMdS4;uhH(0JLe`&YaWKQ1K7Iw?c(y_^2s7 ziwF0B5Q@Pn-%-woZuy6GXu&m!=_4@#z<16Bv%f~7{&XCIanlsOJnK?rA+mjPzEC91 zqA3|)H$s{WbV-yE5XJB|;7=E#k_Mte46F*vqZlO&JJ9$j(`3Y>SxGPA3wtO~5IWh&=+K57atFcBpZYDV%^+7V=vTGkF>o_2icQl_L8Q78kX%VI{U#}sXn z%90SzlSEiE=|WV}KvQUertmyUJA^?ye54mq$5c6E9#J2H5S26#<enG`~ z=NlM@uIEfpI@x0;a^v%I{1$gvfg3*cBTo8s)jGt{adjGoXYsIo2b@b;fkXu&3$*gaR%-f&ImPmV|57%|NlY!J0Sjc zs)-XT@nSWB-BHkO&Tqe^X6<(;pvRiQ-?|equ>oWER6s9jfFS(cqd*Y@8l2!_<4n5b zs>9Pc=q$A=@g#CAj~T+CQX9vWAoi2aZ_iTQQzfn5H!AiGile^aWjov35`PG^^M)Z6MVXXIQp8;>uatLDtV3n{p1$7N{&K%mC`wEa7qA5GaNfE=T{-)1@LFFx={wPtZEtpLnrAcK z5D!%YFs0dsppqGdq{}b{1OR94+8Hu^GolDhxVXV$&!;3pVK2O=s1toQH zCnuVG)f)=*ptPS++4v|jw)6eLnSYV`Qti({F0&|TZ*p$ANKO9oYe2X1e}pqg=zEZ4 z!X56L{p`QlIdgHv{sj`R>P==Nt<{kBY_b}n?_~)S@v+C3%;;H|c@)gt=`6TdC0D+L zA_p6+^z{JQj0{Z9{TL72l5`)kCg|{Hd9Ow~;e3seff&_tz%v2g#uAIG10710RBz-5Gi^hsD9bE9CDO zD9ApRUAy~sA5I<%VWG@jHTDPjs$cuR5nQ#Tu1D0YFxPlumhzK%U<8g{Kwq^`O`0GROs?ezM(O7P15VS1~4{`KPdcN@EpCuQo7G4vj ztwZ6i=}Pb|XWeD0!}^<5x@J4O3%l;T`(cS%L^OiHK*v@P6aJt#th4dpd zT)7LW@H%O`&<$nip8(BZVOrtao9555A4dMoxXa)XJYUEtB)|^^qR{}hnwaY!AAyqY zW(5Ux1Ruh~2Tmar*4S}1Wot7Q$}RmHgeK z_;MVOkyxLz&lRe+`QPO56#m+;f*yj-QCFz$aWv8aoZjKHBloCt$rWm#iy9L(;%c2! z-t+RbFGa-JgwjyJM^~uMsZ_e)$#5|DTkw@gjmKqEV6&wLd(inIoYZ(6xt)8ZTG)en z!@&a)#}z{Cz?}b$CiL%|Yp+z3)gI1+S7J?a59e+3Xuk@vdz=MVVMz9-v*s!_vG`{c zY}xOjeg<2uQ{F_(d^b52TPmLnPT)qlS?Ey%Rz&VnPQ!_4v5GxsYcr?xe%%Cr?D)5j0_`UAuy2AmR^<65o6^8vC3YLya}Mmb6h2 z6@<|v4`=C^3lkMu_U(Y#bJ>wMAVJrMowu)6gX$N~gln)TYol}OHR>ol-ZYQTU8_DH z*$7pIbB{ZBUaQ7O#4G3DbzZnuO&%{jLY@xZeDS&;Lu~1|&<{D|uTzt2X)*nf_bq3S z>(mU?@yXYzLXnL%WZwi<@Wv9qnK@vZDhcT)P*~{FfkvdTwT0yRtqfvpWo~Q- z>lBKGOFf||GxH4xZ~!xKue2xo01!j7;er+r|ftrc6@HyZq+$DpX+E?}NhZJ7Cc6rBQi$TWPHLunj6ui@?q_oK~d+dk9=dZB2;C(PMyRRHH`Zt%GNm_Jd z(2Cl;7t{(P&?I%l`_iIlzZk#Bo5f^8M^T%z@QMs1>F1*(ePiIe=(yfa(5Di8TdE$G zOO!8=4WG$nqqr$nvongD-_V)-@7!EL^#8^UZbp@x>7pZ(fLk1`kZKP4_x6e>@~7as z%INR;4=6?xX7_>dOS|$j8j1M@R$m4Oq4>n7Fnm6)VuS;$#<0MO0d~|jz%wR2qw2}* zfjXASuoXBBI=Rm@-KPO{KUn^CKu0Fvjt}Sg@2RPKvjHTB=2*G|Hc%HCnBn>3KZvme z@H=gML_dS)AZ`K4J&S-Xmw=#icn%SF=8dz!fep^S-&dWhNU87%WeV!&ff3X%;8)gM z3m+4F3i%J}Kf{rTufgm$E?lufslHtke4H%Wj1xT594ovm1~U$9HI$MaJxNJ~DEA zL?413N;DN=60cNQrVH{IkbK0MKEDb?fn7jVHdD~cOf`jyoy|Ifg;pWj9~DKyasfkM z3J)Ifzm$<&>WVYEl>XkJJ^*%^#uzy;(r(#XXg+Y}eA>IR>$`*fS*tPdqJ1eiuvY?Z zCLEaqaq+={WZfMy%XJH~X1OcWc)w|myn6xWy`3?g@U*mR_~ zO_wpcnxpy;#Yz>LT9ax98-GNCsHJ~jfA*@nA?^@xUn%4ES`~fvL;0^FMLx7mVW??| zxSHmBiyebE_w^%1>TJ z^k-0qY19O!L;2&$i2WBQcQY4ug-KrY6>sQLo5?S|U6p_%TzmMx*$!PaI>14Ph#aSK?* zNEw#i9Eup>TuquATJbeUbIWiTo{oz^lTpv0_r?Y|%rD6`1tyUUp_!-u(|18u5t1l?#lT1MR+?!^o0c>I0BAqRxz4 zRoehJ-kYz!nk}?g^s-uF@!0I|fX#R;PYt(3n`?2!-EGeCx2ldI7T2z^nk znEejQ2+O1;Y9=iQnorYW4Lmm0f|`UlIz1=n0s{3jXAeo_h6w7Jk+ zH)w!_tiUeC6JwuvaA0w84H}{q%bks!y+W(l*DJ)rVwz^_YOl}?=V`khgrviHnz4b% zF4T0PFqI=<=mHQXUFEjwfDrU!lvSfo#A~FUdNVV)E zAp$;;M#z@%K8To|3m3yKtbCUN?>!2PcYVa(YZMr7{RrN36gUlV5%B4w;5`N%$Nj6y z>^9&<)nMeGO$e;pUDCyu=zyu$kx``Xz|?<3B>R2J1<3YmvDKCWP&M5i_-YIOKA{Tf#HR!dyV)6O?!p6$I(zh;4-p zipf#fp!z5ugoGAF=R2Z8)TH{cEiMEop2)-V+h{ ztuTqpQe(5PLo}qr2yeP{pzpx7ma#Q|#Da1xxaLJX zLK-((f_L08X=X>7D@k=+bOWRw_s@A58mw>>-^GCn23Lfm(+#qG!iFlW6L=loD;aY%q`~7=V=p9%E(XTT#2PT3|4Qms)xVfU?UA<&A0fjWh-vQ zj$v`p$~U1fnIXkcWV6!gsB`nrROb}BQjCn)LSm+kn6r@FpFcR5{haG4owt9c`WDe* zeaVf+sn(dy{HPYxMHeb>GMIRrOq@Wi$6%P8d1@*d#u5ofbgQ%SPSrEv3DF2y^WAxa zhQ&*+nw%@|R9)Mk$l8AuO6iuKuoVyTgT8zm*PZ4A*LQodW|M{o)9_%L#5yNDDIBy^ za{$952QAK9cY%Y^D8j*5D6CJP94<<$pGpPAPo)Z_ZA>a{ekv6dKb0yJdY)~0N%*N$ zQ2bP?Q0P~;rIPehsi63&2ugD3QW(PTsbTToblR>X*ImXI3cfZ6Ki=#-eveA*Djptd zlH-9C(G&2?i!j;J`a6uj6IWB6nX@p+$bFR2YMF+>`q1*6q(pWq!6dqdrJh&Vr zx8cAfd`kH{{X#{TNXxI*f!B>?m!XAae~h2b)O z8sAfv_mN+qYrwgXil;&2H=ag`r-|@_k+FHnW#I*S6Z#lFEISQm3R6)!!t8%_4}ZQa zi3VaiR?Y&nHhBauIgyCR1A=b@xjkFfV|x#iHLQtd9f4{v3Whz-ppQ zCW?z8fL;R10zY@JiYD_!2+Rg;!OPLLRtaoG^vjkMaVw0T;xW2^t`7zE`WUUZ zaMk)^kI86Qm-+L;!kST*=_#gw1Quzkx&-G(_o=$w{s5LS?=8%!351#hIU9(D9TA2$ zX!i-}M{!i;D3q6|3+I`Zy$yEaUp>=PovrsNe5=w)Z@?z83^J~H9X?lv03o^03QZ7e z>bN*6HZaLNWzJyScmOklfqDa$!E`1l36&oid+PyY_hYSfyNo_4iv}Y1UFDoPX%(yc ziJRu>u>N9yJ&OV6Gq2LyW!%)k#M+m>d(Kzea=>i*ynGj4Txja_FW7-|-Ua zTfH={*bUTT1#YMYqhFT_KcZwb%zktr5yiNKb{vgrX&bbY{ymKu;(eJkHS@I;oRr1K zkn}JRm@TYFOt$Ut(AzUx>sZ9(!+E>oIGr#TPgF5J1t!!Gt(98b9P5j=nouC3cVIC% zg%=fvY99ndocEvNJbJ%6MFyD081+oxS$R%z^sI6)sAn@Q=4$3l8pe!4nW2xhM9Bcd zMcZa`5c;MuY@Pj7QxptS&%%b5U0^zC_p6fTda7 zu|dqaK*3Cw_7^oia~>eLDh-KNRGOk~L(|%TX=TPNxWdhaaW{b`7S&Sm#KiaI=Ht<4 z>dMtb0|-*JVSBmL`k-XNN-&6KZdrr6ni;XcB^y&N`$W1 z5SKs`&r3rj8yrM)ke?Wu7uGvFFFvT+YB?#fq9OZW=aUE3%$D2&)k_RVqGoOcHfrocoDUvS z3&mQ(;$)LS`w-x|Yn5d)8-C6Vsrw;eBP7InXS=JMa=t@9B_ECG%hj6kggw{@yGvdF zEWflh7G8N(GjE2~wSaS8v3as^&k`eg9>f~Fuhg@=#c6t2O;U$D+dZrfR12N69>$5T z7n~a&R>!Qw4jFIcWt@@Q@5|6*;4`LAHI1yUKNXR&zBe}&4e~H!oj1WW1D0nk%$5!Z z5B6b>enhnuH=_{WEODSWXy_Q2Pa+b-TT!W&jNlkdTS@^{)>oZ7F|6dPj~YKJJyk=* z#5CS#$-M2bA~La>f&n;M`7?_(gAr_F!!*GiImmi}EWVh|c^4=&yFc2aO}hF4{1|l@ zDTnaUdzetdB*^lN7v{2w7sf&i_PGlZMr_QH^yTov%;AN(bYsHqa&9{ST+ZdwTh9Fq zn3E2?2Fv2EP`R@(Q!Nk+4vml8*#vapeGK;Xox`w*XM(bxWP-AWl>0157E%>lSwb=h zvJPZ|TtRY)$)b^2`N4u4lq0_e@GEGm`<%aHn9-X!#H?xIgKuUP>$+Zi#)@TL*V|#` zS>koQomQUZUDw-XHQp&=c|95-yMpyhPWVw~=ga6xoAgLo3h8)WBkVJ#@e%ifePn^CndW zf!ORtuQU-9&F(76XvT;9n%?jRlieJC7a|}|xdt=Y0#uDyKUotQHP<|?2I0oCWy;i|jh2(S>T`yDlm(uPPtS85gp#0xa9~3y zAg2s1cAmh&&3K;IBr7OM9D1zCo<#o0Oz8`7BWb(a(HDQE{IgQG?*z+ zxmIpx+`Lg3s00TYbe+`{guQcg4C71Dwf=)>gyB435v^hsRg@Q`?W+$266PIvlMLUc zDT_*_R&XZmBUFj0y;Qq*r`li2F!Q~K4hT@e9CC#!CH zB+Pv92d^((oP@^9RyUlzo*Wqoh?~%Ozgxz`a(g+9g?2BGl!;}0#ET{qUSgCH@mj_W zr(wx~RMi(m4LUXiyH=LqYtt&aco~2=E2w-sI3wN#cMN+M+#y^Cj&BstYzLim9N)|{ z$mUQb!>LxiCmXmS*;uU}B4pQBR3I5^E1Y{ ze6*#SFM_j=SA-WLqxd4sI|?fJuT}VB+~bR3@UFyBIPs^jx#kC(RNT3YKWE~n znR=``6*3TFjQfp~DY?f#?5(~zAmgU>3LApCDOG)uSB+UJ}O&@+!w%gg>2}<}kdC6)^DgfyaMssc829*K7<`=UT=Nn-tizsBUCm^z$_$5`dp6+) z%I24GkBe)IFFu1qxFgIf{bOM}2HmcD9c`0uOZXm-e^!1clH4jvV&|K;b;6z5SG26VwZwb-3XWDO-7dq$+4a}Of#giQ~Rgp`l%9@y|+SDa5CET zytACfO<0)}n0MtbtI1=NVX)cfCrFt8fWP2Ot@afHt8=-O43Ag1WaWd)NoArv=u!yG zK3ic^kUTc$7&Zy>t_P;scw90JE~|!5g!w(1;EdvuFz-@X!GEj5ByBOZe|MQju-Hvl z_Fokq1;^uYC*d(l81E0}jkIZJuT84!OEiZnhrnv90#N@|0IIACK+&rJ^?3z+C!)q;t(?6*A5s zJK7n@z=3F~rx=OppFof;Xl=M4(u zyfNZG^9D7QJzoZ`K&)PqcKGT7EG;R&pT0QKe@ekRH&qHw@ZIc1oLveEV<|?`F0D>& zD$@_+jLbhMsEvM5P~+>0?3Yo{0<5w~v;BYK+24 z_TeN#{Dw!-kH56?Z@gt0woKv%Ovr|WCK$bcUb>*9OuzpRraHdXM(8DJEvB_LHb6dO z$Rvqh8H_3rt3T}41g(`4*&eHY=-ewBm1=fZ3TE3CKSOA$L^Nkja_{g-^=Hb zRNGePzGzVFPdb(JzpFhxw|5T@45WoliaI9zWZQRN2t!AM3Zrtoe*^`Hkon zFA{gKD;DaC!k90YKwm&&lwj0^;RjZPex5jV2>4pK5Wirm!;ch0&I2%B(VNqcWx6>`c33 zBKuv;WWZ_3Lc2P;Cl#B^Su5b;W68jF=9{W5=WvJ?rBafufQ#>cP3o@oYw7@?J$l63 zFfkLnXCIT|t%f}al4Hs6#dL*6y#4GlelRloyN&TwF2d574_2cmG4@{egUhKjK$6>` zm+x+s$-qqmZy{=DnC`bG!1tSxZ<5J2+Qeg#t0Wou0y=)3?QAWTvz#1wf?o*5YK7r9RYPc41se2^jkhY5 z8}FR&Mb#f}A5@m!wgZoaPlXta8PZ2u`k*;sGUgbL_haCMO?Ag(rvI(2l`ZEJkuQ*& zQ-4MxA%U8TzEF!-VgT<;pgYa_I@lIB5V<@5iYjU8hcUt{^0zbt0pHQWAE(48r{>|9 zv7AC-!e@H<`;5N$4c<3c3jCba1JWl9<6&i4j7=8aLh_1BFK*rJTG_P z)Dg3&UY!MhOxQ6Y1$}(?@k(kz8Yld@P<_Bq#pz3e+}bo}qm2Q3i>7`xpgUkH+KT8m zdq5wd0zyfBq*TZ1(w|J)kEw=nE2)ze6i!@@v#(kv#oA^(6-6ALkayd>mv~@%<*D%L zwiMkBi^I714S320pI^YCtY4QQMV=p4bfih_>}GdLT)?k@=l923r1MEwj(&BQJ_#!f z`gb0*62ei$*^-}$ph^_$hi^CVCGxd;b+8NP;Gt>a3)*?m-qs@UWfjAEVH*4ruI=VC z(Lf~HEYC$5JTcVaIesCcH=5|93&SXY8{wbSO4#o4q+ft~3g{T-gf~(5L=1J5xjB#> zpU$(#V+kJWW2yxXOZ9N9Nx$PBf9R%qnM}!D9DR$K9P<=&2`wfyljS`&Y$)E-^cVhy z``}qWy|g&dJNxFgd?l+RUZ|vK`16nc^8tUT*t`kgV*W)o_ouDMM`!$!a8nCj6mXUW z8d~rnL;b_p11LrwRsMo{h4CAh`cq4KDcruRpKZZk!Y_6qd9fTvSu~^-J~sTVjJfqP z@)bf8G{9DP#4`}JXILbjIj4Z-BbJY@<>O1Ra9jC=b;FMX59^L51J<~^&G!X97xCCu z<%Ou9b31hb&SwsQa~bTg&3qwRi+^p;F-o3)sh$R!ljytKt?>5==4MD5XbXKQ%I6w{ zbxUZ7-d%3F7QJQm!uM&~2EG(w#rsfcaD$-VA2x{W=TyjmbAt(TI|4kloqZ|Bib1w^ zuf%vqa_R|Y+nIMFpUvrSQ63F7{uUka=gk{ou^s@~hxXOOMOYtapV z&b$_J_*3$Yh{2!nZ^X~|gK2u=4@PgN|Kzh>c`N$p;XJmE?>NnG@5DG%HF_`Rx={hJ zY!1*C>-)_1_PvPFSf}5doEx>zu@!j7EiDc>;_*&o=@nv18my<3^a(4DgZ=zJ+OvIF z9&<;3A7@Cm51cySFU-d>)BzlDJ(`egJNplw;!3eS`3GNTkZr=t>fbFP@V3BV=pYQA z$sdltoGSc-$ek~R-0F8@PwG+f4=)}-62dT(7q++$BA3u?13riX6|5K$x5Js)9aJ7; z;1yR7UuS+_lAD8@DG6_Gz>D?C6ek%k>=^ORBUeY;$q)E~vRRal8p;T@F(ob%J&aBH zp0lJ>o5x2HAZFQ0eiTJL|3-_Ush1aDt)-7U&a%aS6oI*Qy_-W)Di*}cfo3eb)laK~ z@i2$s=Wx&^%%Qj5{Ggdf8hy&8+mK&l9!c$$11c<@T*fB?5rXm)#}6B1#PZ{MF$FV_iVfi|iQ#$i^%=)(RsI!@+CYkf?rFtX4}a-TCR0l9_+nM` zkW8jn2_vu)5x77g&&;!Ykx~CESy(J1La^887)mvM|W2nAQ|6c2Dm5m z2%z_L;5sWEBe*!~i=z8Dn!-#;qfs@~Cq74LWxDYzKE@c~U^KVsfp>a2Sz4o~T=>H0 zaCs}#;D|SG)I^1cv6xF@O{}4%Inq$P#VkH1huK*2z%55d%NX=_!y(MJ12j9_*_kS2IF_?kL2R}hP z4%6e~n_M;Bi^0d3FrKu2+y<&2PoR%?=tFNkY&pH1eM;eNSKP!CFo|l=gb}t^pKzy7 zQ9`>auL<9`Z)g*PDaJ7Z*Q=%&?(5L1dNh+E=EsOd4L)s8BF+1 zqA6&m7L3Ifq>r@Im{9Jq;dbF*pojW=hYiE$aOmAJc;(iJ53*Y6Cn*e9a>MYoq}jo= zZ^2O%|2bo#g2^v5oI&t1qa=q(=n>;+EqMJ#n`LrYG#9rz-Aiu_Ka!*UgKb#e458G&s| zDH0B%BB2N-D~4PU%{9B)1!;{dU>o5eVU1$hs5*gMu}f& z8n6E*jFPx&!Oym!(qR}rPli$5jI2!j!AFW`oW~+69-CmcMBUHH#XqtTgB*eASI}$O>}x z&C_t)QU70@*p!ptq}h}qd(pSa2<(i1s5309s1)iEO-shiMKWJkdU0(CzLF5fjF0gG9GOze(J1Jzz91BtHn1IV5Q^F#fi;xM#Mw@r{Tuis3z z&LV57N?>EvY}-L8^OV8`Fn(+cZyy{+Ayb&6Az=`XnGj!GLg3jjY;C%IP$qvD&*o~7 zxwTDn1cc8KJ6o1uafcnk)R^^q%K8L_6YY=Ro?x%p6ah;WI#s z@lY6_PxHj73SY8fOlW}FCM=_Py26k!lv)epQ=#c@%OBF=OC!If!^br#A#P~o3d@ti zNhx7GCj7+hyu$Y0C`0f^+~HySk|CO zSWBUGDCq4yyz9sJvSJ?i82KIgNxF!e-!OcG0(AghcT>B6Bj4`xnew&ZTd_tPS}VTKsW7|YU$$|TGyPg2^CIx zVx|_z-AO@i1ouw(Gz^=3W2XAsVQLJ$zKBZbfhV)uCY-?nJNd=9I+^jM)O}6T%ZW-7 zhJAd;Hqj*gG^!rGmx1cnUau@3XmAyi$(FDgvyYD%hVS}7$M$OAJ8j9h1&u{%`F#+F0g6|-pIaFyiRI3!YnzE}=n?T$qA?Ulvqz(D6OFFhn;KMz3 zX&%wV8r_?jQs_S> zKV`}*Qv&~E%9q#>KWIsJYo-+akI6rAzB8E$ILVZt|JVvR`(#^PWC}jul3f&AWhYq* zkG1+bNpB6G)HU*5?|7pqe(;2xVG;1QgKTZS#9XY!+=qVC`X>gF)`BmCbjH>D7w;=L zE^wp6Yx{J1!DzAIc8H8O2pe&c>7dxiS9NslCA!$4mBB6g;SAty~HS8Z_8vyH@) z1>t0zKwlxHE~>=U#oK2oj?(%i)>TcDJkoX=4;Dhnjc&B;z`ms~%X7gwRd%Kn3Eyd( z(?teXo!3D?q2YKMI#xifI{<~6_fPE6r+X4^IS^G%LVw&-6>8ZW4z!c}0>DCbTh_0I zwll~ZyVwT0$PjwE0MI8ynDLMh|DBL`;@R@11^|5P20!MCX4+-bhRuFxX0L(&^HGUc zvH+ulGyc;aq9gvJisPd@2*Q87i4ctV?~4BbetpOn?%APRbE~$(1oc{2QSOVbv^*ya zT1|$p(G~Ey>QBu`-emcvIfc_%{?0O<^-rVYFl`FU1FRX<%-G%pKKsY_cZNEh6P=vF zRI5&`8~oYdZ?h*Dn-9jv-QuFHE8HN*48P5qGhAF!Cl()|ok0fcCQ25(yiTk$JRVK* z-cd^YVZGmGH?Xp7w83w)38EU0?{9)mhe*bCqf}RS*NHX3@Lr@j5J{Rpj**AxYNTIp zC>p#J)-I*$wQf#vDh?Rm-&2FD8wTU2QOlzXH%L81*}U08^6pTQ_0mW#WzCx5l<}H+ z6!ZB^3h$jxj?xUI8F$)m^Pf;7k}??EZuA)wEa}_Q&jhPby1~y4DgJ{L|1Bn1+uVPP z8{DquxA`(?!MJlWK{PjDyrB)Y!N2v%X=pQQ*gN$}c57j|ZGyw4NWUl-X&gq7^x-&> z>*BC6%QvNhcH`pC;C71IFdR zW-lF83M;&kG($G}Y54P*6Xe`Y*u&!&>x#c~o#H&}DsZ*xyk z3G3ko375#7(!O#j1WZ!lvW+cZL((-M?m0TlT?`VbX9bbZh4cuj48$H^H)08nJz` z#?H{G|1YS&#l?zGpe&zHqax<&O|=YU8Hx?=45us8fLdQJ(a96m;23g)No@U$&2EBZ z^yUV`up|7TdMndbH<&PnJeaYaJVBc>WpHn2$kUwqwI%n;xJWWT#ag<-={}Ufk+r|H zbA~(Dere|h&$zQrvwY0bhx<4$kBQmrIuJKbH`vPFF0*`t(gaQ0(w0&wgNhQ`?E&r# zs%h9O{@~DHLtlSzPAB=X{)WD8FbYfO5ACZx7~u~cl1Nh`j-2{WBe}c^hjD}l!mF&Y zecYhUQqmMAQ#RbWgryCIDt^T3dL+aj5G_HjqT$J~YLH!~3B$qlMn0;n|Ys!QLg@+L_?YGK%?r z0L8pqo8)giakWXHu&olwecMTv;No_j#^ZnARB}28rwC^#e~YAh9m?QbCmOf0?P)Y< zI9PB?!GYrj6|FFN$Q6U^1s7^b$*_W`KHl5I}b5!K!M|?>yBw>L-$&*U+x04&~A_>p_?0SiaoHMOz;qkXo5*NU~zWCInE85ab^OC8?GTv zkS2xOFC8;;hWbl+M~{OVr{tqlh=;W``Z1j$Igm%Jl}p{AB56Le#-lQY8(T^4V(VFS z=MSxuAB=E=03KY=xdN?sR9b#op6Q7%9)xnZp74hYYbcICdw9Sy5hIsD#sl$Ii zjl1$~w3;f0E{gfl7DGO z3&#d{d5IR70`L<<&~64mBon>mddqgdC5@0I{=35>o70KhnBJYKS~aH=kw~6+QOq4S zHzd-$@dYasbuvfwfl5rZlE~--RhUYhb~<4Ke|$1lV1~}S7Oss%!YgOEkZrd7gTp## ziECW)lD6T4!zPGTbay>bXK2s1t%^D@EhzWFArj&>I-i3H&6uz&K43b6jrV7MaJYz; zG_YcZE-NVNP@p4Xcj#jH;NWH_A9UIkFCc7Wn*+y8feb7tw%d6sS_*zPglMc*H{UuK zr6{@y(OA%Qqq#QWL^5I)6-U<1S3%5DwD{uk20g?Yx-yG4mlew!M8Y-5LZ9w18g0EG zm$=0=AE`h1h`*VJvMrBrkd*!TM#~$dLVl5(DWtJZ`839U${4`3OHpAa4;9tI^ikQu zn3^go!L&kAX(p4R@=T8uRc4y1sJhgsY}Hg2weV=&9f}QJ-e4=fV!R$xTGH|cQ$;B; zl1b~gyuln*hi#6 zR!=hC7uVS6=0)_kc*=ADqn44M#22Q??>cImwuc*@t3=kx)#|F;W9}SVV16POf2ETAwJA2xA(spr2(!MQg{C&&F~a+vaPS zp|_#6Jj%GzM8;Tog((%gA`*Ja+z#aC2F8pq^pkm*&QQx3l4Jp<>NBxuh5@pO1I>t! zjFfJGEXKA1?eb@&ij}fClM7ZiSgw_Ln-}_gdmV?uA-PE=v2oV~qTO;LQ)TYa<8mR> z`xDfoXXFN^4L+2`Wx0cCOktvHazE1`Gto_%#f9lJgXoSt&9;=ql*1i)lj&%m{2JE& zo_xTiDc_HxIvVnssJ?+b*qjaiOn~LCAYBasOnEQn&lqNKH3Tt@sS@hb2m%f9O!HhS7{GSFBwV2@MTPnSvVR!|k_`;a5(0 zeZ-MLM5~$lrV}+WtYvapvA1s|L>tyI9qCKd+OXTS80X7w>GLY!`47WhwpBX&Y13KJ z+OVIgT2UlT#u!d8W|%&0I%H^TIKwpZI+E;Ycx0mC)x4=(vkp2Lp0cfEnp~4Ax+767 zChnD3>;%IXw$2Oa;Hb+OC6rlW6fK*5{n3+1J0iNmB5)C;RUkxQ3s_6Ad zqI5+atwiG$xp2a1iaxN@nTjs1rz~a~+#L;Aw1RkU!9mP4c;R&kcksu{nUOHd;OmH6 zGc;dAK5d$zB4^*wldzLfr>ZVQJrq4CNR)u&jH7!4l85Mzv;;4fdwF3i!$2k@O!{4? z%DSzuPBl3Dd`OWPvk}|cVA}xc=%h^8B# zunnIILYirO&eVv>W_;nOk(*@3ImTCxF2WP~`BDSVHNIhb#_6$$r^?nt=* z3*ZbN8a>Ta!%A3E5AoRO#Z)|i=%u1u1&H1#y6jK%uObtt`-~*fUycbhf{YG2PDMS=3`{kK~HA*IRUuqRkrKHRU0aO%^tKans-pecv^Hswvc* z3rk8Tk3GaFQ%SRc-r?s933%WCN+AnZoN2 zlAOcg!z??@qg3^dX?HNeuwMu=7n6L!(z_L{VXrs1kJgXNo}lb)`wQi*Du1KYUH{R7 z;$%A_KU3zDhrY)sJeCX8p~kyHt*p8HH{@+)J?};GZcdVSJV~x~+o0i3j1R%l93+qA zC+QbRGQ*o>!yuA{oJk&Mxu4xl&qbOd1xS8yAz6~G#o5DSj?=La>4&qoX&fHQ;a(hm zh4Hmk)>fQsxF1Cw#NkzWDcqD@Sj`lkSA=9qF5*EB&t!dPuE$ue(-ls;C^y9{&xMP3 zqwqnlcXN(ep9^=3{X{sSRkP0IWPt$`wGc-QU~_&C(g2rtkSm4TU`v=xYq>r8)&GDE zd%hmYXK^Hd>PFI|0?G2@NOlMz`SK{qYZpHhDhS6CKBIhAcfNN)2s$qd)}!a?+sWHV6vS?VM%EX$aKU9L` z;RBTTN<6jA8kToASHn1O7gCnnhg5RI?R#>4)Kp7pjB->Qb>eTlDRw?iX?O1-O(aVr zZ~a|xv)Axc!LH_*VBK#NsXRNn#f}1dQpQ~el62ica%u+2U0X>OITeGcat@_%sYxWm zx04(*yFKc+&+ddWWKMUKFXr?@`6!_u%AP$3Vk`bqbiQ{h>qwM%{P&_-G8)WNDRDLK z`(a$((aRQLc`I(x&{`li4P}Q8B)xwkS>Om2_rqYScS|nr%$k}}z=oag3PoGT;PxGD zeV&hG0e6xoa8r!7cJ(EBhUG1mS{!cW(bm5>K@@Ig(blUt9YtG9aI%sG*~;Ny4sXFN zJKB1WZr{{`J7qpp}52f&-G_3USgc+w%KW@_nl-)O8MY-|f zEtGm3-Q5Xxx-E&?V^Y7nC~aKOhrIb6>GTja8_H9GN{k_CYDYzRMy;j6t*Vs0HG&Ls z#xsoiIqnrspPR9X@ai5$HQ~j=cc?jmj!f_~%KD66PlhK+q?(DNF%ME8JelHVAeUY-eiYLaL zr8S_RPG?9qJ4q7n;6b^rNdtDdSm6Tq8wW zBROnkIgzKY(i~1iDWH)?9u~E(rRpu<>Dc-hF5Zn~_!X2IxJD89Mm0t`^B{$TS*|`$ z;WAf9Ut}=Jt+hzg;w+7ca@(4toPUF)KA>(-;5av9P*c{}9%WElD#Ui~f(@lV@(+OD|(T4A(MV!Hj?KrhVs*#=(#79F63z)!Bje#Clz)&Y~Jv z$58w)Jk{v>z~Xx%4}URk{ei_=t1F~xCX>V=1ElF z*z|(Z+7OqK4XF+EBA$$+V%>?Of==NUT~=zow+FOZG_HsTY^gsPCFy;j81}jk9Kufb zffVd?%?Fm@3eE=_ky{al<{Vl_{(eNL19z+7s& zM=V!go`I=k-#IAt_=Wc;7byr|c{Bbrl*at)prxegy9(vAYwIxP;t3fjpOhl27SBD= z#^Jw>pC|a+5c|F({@2F;Ha=Qe`+1mfeb?5V94zWa*6ldLaT4PLk}`8iqgzc~DOGix z#BlzhLXH_ zjAUOU#Vlze*@43W9B#;AR}P=jcu#!(*k72~z{9a^X>plUH_H>HsJ|a~A-$;#?U1gd{ev=iG)Zd3f^hhpM#uNF z+EPMM$#Ef6gTMLI zL@S;je=18F-KjnT_8UEln!skHLsGr7rq}gBKUchHzfiR|$?xOW>rJEQ7LFm!1UqKZ zkSWA99)&VH>MgIl zeiWXG;cxL9pr&t5lJi|izVjn#@+TRRhh*Q}B$9WDta;6;vRug8ITy(fJ|t@u zCRs6v5zuLs2~cnWrd$Bg<%ZT7WZNz-3&?8eh)1IJ?`LgW~Vv zA|7K|#f>z}SU;F!F7hYMVAglaP2q(cKITW^;T|NPQlT~LbyiJgRdJ4#mz|y|NReW> zSYhm<7RUUn0O?P0;f`{RT{#>WNc!J6&Ja#@g4;5li*=P-=onW9xD9e}J8AX#=NxBn zj}2YeQ9+J+j~!iLjT1H(b_!?qh~tmq?8CUJZ*nI-=A!T7_^;Vp3yz<}nyT!x6<46O z7kO)|aip@GIGI&LS<{R)J-N>u*r}Pr1-T3Aacec^)_TF=O`MJ3qHN$X;m_f%9LLO^ zvX8Uh&MlG7Bj9EMjY`pnGy9jz)t0jfWp{V;leH?BJtt?=kL5CM*bH66ZBU6*1+vpm zoV^zpbOxub#TBd16$|3Ler8RNJUsquvg#aX_LUuVV%NX$2$;Z8$8zFWj=6)otUTB6 zZ|?kcxm3VP;`ndKW&F(9ALhhWS-#~)Yr-zB zbAlzTsmks?@@QDdg`3NT)3|V@xF{JcgLo_G%;D?ovlnMyj(x7C3TW1=+|-}Aj|UZ@ z2CvD@*oJG6%%x6X7vnkO&upE-u~%>2+_b*!nZ2`oV+lU-#ob8LxlgiN^kv zY%R;AD&(%<#3@)(y+DRE(!BEd=6Wu62R}RDNc5nPuzi9Z(m$dZrqfCGP`0X93Osl z$U_`gtW7rx$7r}lGeHSF@W5l8gCt=b$$1<;(x1ZT%Tv=e=LYzdLKm1U6y@Z zDV)Cm$&PL$Kl>m2|DD;lygIsNVcI^fS+xGiUx47QH_6ZbBzI!?Td|I##xsy)mJi8m zxsGF&S0|i7xu+}1)jdf%+#vaU8Oez)NZu_+a^Z54#f>DN8A!fic^Nf0{!`g-oK;&{ zj$zFW2a39lYo||M3Z<0lP|FB!l zc^}aHKg$jbCTv@Zj$FY?2K`;{cntViF(cNDE+)>NOC2saGm4P>(}QFgjekx!5**1%(yt)NU98`Z zQL{5B#wsWm}QVZ>DzL#>a(os zM4DQDBx|tGt1cgD{O{nJCFrH*?9D8FSyp2i!SXtn`V7lnMafYt%eQR(z<&N>Kb^Uj zo7h^2!!J1d&-p3U8%L5c-XCfG^EXG@6-cVbT=u3pDEu3j^bRNcjh)uw#{A3;KA!be zxZYu0n{q5a<)pM;+(CgHa|V0)?=*M&fXlk)t_iQ=<+aB zMx%P8eqp@ZoYlgC>8EcYRvy2P6i}k;-ek1EIaE{0P zG^)pS?&Sm@pYEosL7s&zq%QNaGqdUGbe@j7bW>MkmNdlk|_mQx{$0}gygTTBxkdn>PO*Q z0VKO?{Ik!K;55r_`6xV;WehtS&BE_A5yflWxTxDGP%Qg`XOBJ16{L)wq)+oBOc$+8&TNHgl zTXEQ<$YsekQ5+5_D$=UEdkHwH=zfEf#u9K*(W?fHTuQ(#oiy_xTU1a4JW$4wwrHd; zOb!l zWeVb7mIIBTDnAUbYEZp6+jw+Uhh-&*Xz01)yAv!CinOIOgKEM`9nCa^YQqLaG=yry z4n>b!ba$@<2Nb<-(HrTgBI^6Pa8?oZeOh_ z2G*Y+)ClhAM00`$jo^_T@sWA>wGCL(4^6+g7^OY@MT7+x|8HzgNm}v*Q6jeBXGN>J7DmuO8ERq>t zh(eQBv!R!fVieulauZ3Lp>W2QKM_Cag!O%lG@@*FlfDj$qae@gU8{Wv>SU+amxZMp ztkPpb+e&x}2RzG>ITfasb4LndN{1o%MunbGT2Vv%3|vo$)D-T(Cs%tyV?~GX3E-a4 zPEjO2^V$=BR&)x#W!)17D01yZG(ypcrbLq!eHcYFPmx19(XWc8?Izk$j`lw|VFYGv z_vs1w=)IUsPL@6}#!eoVM0`F&x4rre@8pB>I$=BcSq4L0oy?7w2UvzcQ$+`=6+s%K z=p52eIG|{E`!Gu~{8NGVf9d8kh$#?WQP1M>Z;joCL3Kq(o1XI3z^aI{x55sc%mvRK z7OC)1QOR@e*yt}+%&Y54Sw=t_KFUH>y1I^@7MZ4#dDf)}ISS??Vg1w1>o0lZgP}{= zm@{kSX1qn0(GK8r~?|MeLZ-5X_TeX7xKv^_bGl zrP{qhn^jRwq%p9SNW)UKY8Pc33n!FuY|~dT4vbZ}+~x&HZRP(cdWSRxN>tU`BFE(@d_ZD2la>yn8b?{C!6L@Y>h*$4 z8>iz#23t^rj?JVLVxS((X(qhOF3HX<8UWT*;YU#vo zmO_adx^3x!)vy%GE82QMAVn(LJ~BcsgZhe2jP!QlU7C1fbtguA0vuuIVa+#Rig%ZipQdTIO>ZY$cd zXq)&IJ}G*$2={-h!B|tTlM}9QRzpEWJ?6hOu7O}hgK*!t2C6H%Qud{BE!0!=xa>Bu z7Gf2>#YNgW=&s0!6~u>a6`jPD-+Gv$=;lGZ|6@ID%1&6TnPmg)%uZOlHPTr{b9b%A zXS}Z}TD}W!Gk|{-J*lu7HUZSqEAhDk-i!(bm`0i_H)(IlfFMPUnsh>{rf9zQvjw03 zuB&jH*4wffIx4EPx187ls}wb0`kN^e{%sXy+yY*;DZ@OiUwr9G#-N&ibfCFZ8-+-6)hZc5D8-REILo#>U~I3|DDp@-Z8-r26(L+2SIS;)QHNlR#0JC+1+1pKU0id0peF&zz z0A@vXG2I35QWT8oEm_~i%<^<>z{7Ex#LgEMQEywk9Ryq`iUu1%-(5&OJM#< z&tmFttC8FlEySJiB?wbw#!+$^S||#@QF0mDE82*o0-3$0US}J zd0sr=@Bs35(3_^)?9Y~mP)O0B*@obU5T?>9BwLm^6ZP2g60YzXJxkocA^QqsC*3Aa5#_LxH&JJ@rJMh~s;!2< zAxvS8Yj~p>jME8no;2ah)@Lh<-%7NKDNDp}J!pB2kGHcMXuic8Utb=js9Fr3UV=AF zBjKmb2OQqQneKYb(fCH0cW_J5?ecj1_YR&Z{HOd4%R8|2ps1>R9v(5JgJ`nW z{14>osk?d8I3oBTi0MU?DTc8~uSdhafKTV!2Rn!vc%(tKZ(5>T zuu0rkl+wOWuvv&Cy`UFLWI8#E0499+e2ocQ#9&3o+6@eL5x*#UA38kPRcuq_c_uwL zr#Qfr1}m^DJcL$a069&AdWn;QJw#nQ*@C^qV5W4KS^R~Aub8cDo=MAsa|`1@N|z4F zI4tvs(uz`%{6t4Z6Or@UhG z`eomFhXSG=Q#yq0J`fxr7AT@4#X@3*qSH+4Rk|`b&lM6E6b-_Ot&pfUSkLbZ?r#f; zrh|F^mnDj_v7<8H!EzT8TNFLU-EU!$Z-}0-Y~qRFBBH&b-Wao}=&R@e#tah1p%gP6 zI^t$%5nUA3YkSwhBBm(XpL9MrSXh(w{U0<&3=w@(^n^*R@#Sj5swjnN6%&qirj5#$ z^CZ5AMC`YdfG}}~DNE!$dC(Fro(Q|yjuMsxU?v5ClOLs%wWnCSGM6T z4C2ZNJ!YNlK8_Vc(~(5!F!JhMhl*kn5gq?ktYd;oVip_I;8E2f-j&2+ra#2u-|@Zx zv071krY%gVumESas=_OcoTfs#Q~1_c@kUYJs$L=0#pqFF%LMDhWS5#^wjxXau`acQ zS323WOqkoRKuB%jFt$38Nj;P3#2A(y+SXXppN;kXXaa?^dTTv0D2I8ciPE^68 zx`yJOPC%>RDDg=Vt%4hgUSlYSG^qT0(U8XC08^$0m2RGOX(IBCBV#%w^$QDWDq@(@ zpvLcEAA5cwwPlnbY;)}p$i(3Vv~T8nv1sgSEftb2@jrfd(E*9vJX z+$ZYkIxlM!@{`!elnPqEWvxRxh$@qGV}5MlSkYclCN7g=#cV}xY|AlOj~T|)iz(gw zvO~v^Sg}lzLu|*8j^c)*>S&7-UQ;Mty16w{ClRISp4P5oNN16z@FP+ev6CrN7&h zAbYw%zvUsxc50BmAp{>XV4qV1F810HGQw_)Nk6ECjItZ|_c|UjR_y1(%)+hWe8_ll zLD8eC*Fq+UfNA7t7RYM%LZ*mwin6wk$T>qiQTzr2rcBLphg9@V`oUIfibu!1#$sf8>6XO*Qo>M4vrI^8#1++g{CFUuj{lO}+ zK@sf_eib_u(Q0S4(61e30ZrZCh^Fo}b{kF4Ywbj6_t@)8$2@yQ<{Wa93ADW0 zE6UH+ojysd9J*fw{6eHR_dzj15jFR3!hN1@qvrlycix)IINR-YsGVh!{W4}%!+YvSlm`rbmC!gL_AbfW}-VB5yttH zeHxsvXo91{-A>*}<^{U#9@>tHwMe}G%Zq2NkBJ!zb>n30?PEU-lW#=rbX?S5L@}{t zaA$l%G*h&@Sd{UE=%na8(n-;uDHVK*)e1c&d>3Of?3gEbx$}$&Akq-`g@N&$*vQ6A zpdHW!o)Zkb$vlONin2tX$Y|HgcIpus6^aLa_-DWsRBUAH(Ca^>yJ5HWiHvi-Wv3pI z9YXIY(kNkk=)E5j-nU2X6ItKwp`9qhM|O&h>=*jEwmy+B9R9KsrF&tg*vP@5 ze`lxD@U-Gncx^ZKiPS>h+Nnq6*wFWOijA~|{+peU(|xkrsAay`i8B0ZCu$if^>(7s z^%Uq^mwKydR6_?lQbLoRsD@5IBy_ghD8n3fqI9lyq72=CNata<^@&^*n#)c-w8%A~ zzILRh$^Sz_f4i+u}0qNn4$@eNt?6h+~Afr@gOqBuM+P*JW^ zRB6t=&`NS^cFZ|XkPa#OYI_x0S)NpsclP^Gt+KqN@WSjbp;hE9MfYYK!>Y)Kil)qQ z39Bk!C|Wwl1L+?{Yi+s1@MZf;xh>2`ZT?73io6>Y39BwW6ooVjMeAiC&Iax=Qn}REY;-euMb1ZZeLE za<~!vvm9=x{$cTQE|JDj)57}5jrN4&!uraX)!Y{Fb!}Q$qMWW1m%G3GRVTB{kr`qA zN~Vq%7ljR!=b7;QXYY&45pO7C z6do=NlJ^v~#>0g{^0^}Fiox=&BI=64@{6LS`_CDM$Rca>EY_oKh%BaPO46FJp|Y%^ z`AH{&hstU?Y364A$~z~^y2{w0-=?r+*;G-@emlZaWP3&ZN=C>O*;P?mNpDDzeH6Vr z`ouU)E>-mP=vI$ma;>7Zo%V$dmq!%s>XeCeR*^QUe1z2GRfTiQdxIwLD#|@3LR#e$ zMTN(BgH^s(^jF)}kShOG^sz0zxJu$BF=}A=iuXW_kVO;~s&>*iLdMwXc-RQ}NYQo; z&)JWZKdqyLX^|h&jhMQ%%o!QhwY?h7e6coNy#@i_(e7hWHrz+vQ7Jvzd@LoLI9 zmlv4yIvtWRyD1Bu4$FU-^tL!EVNZ7UxXzck?bJT}sI1PUr#mTA_Hs;Y{I21rOnc!J{!w7vyneJA<~1^1QO$ zMB7DqL)l`{c1hk-w*F|lBwuQ}5u4N_$7LC{Kf5rij926donZC_e9NIcb5O6v3=`3& zOeS-#)4js4%biTA=0c|jA!X_|m=@vTa=waP>cY+Du*tM`@P~Y*C?3<@ zm0uL4V7j}~^N3#T0JQxn3mnn+f98^C{8N@v#uMoDo~*9u7COBrTPT{0w)^rYMT^jO zU-negaof1?2Qo=fzipGeAIKC%#;dF0p-fXWr}`_TJxH|wGp|N`B;P3G&(-G|AIq?# zdPy~;C$b9@9;#V`3{T||MeXqEnP>9IF^ZWA=Nl6RpU~6oZM_<)mZD>=@eW#PRpgJO z>$x05MA!d{;qZDcGnH{C-n;RaJfY~&8GKK%yr^i9>9BYqZz@VNxx)+jKqq*OR|8+l zmx?<1Ob&l32cP7^K!2YmKCk6JiXJuvpLep}DYD`HFCUv0asNkJ8Pm;YG5e3Q&>2q1 zTlz=YmMImk7oQdWQFc<4yTq*UPcmN78?=3qiHgF|Mvsk=msIE%ir?ZgOgPIv;UXTh z8V&#Gq(MA>ZpXpU_ndAVj$_@ya6?gByaeT7sCQnst;c)B91LrjQsG1!e7~w;n<9ya z)Q*OIO!~dQPKGZeI@BT16(~;}zVyJwTqNc*_aQxD^ zo%UfZTot85H9UWl)6j}zrkj`GeH}Rsote_ibboJ7Lr+C?dv8udGE)}cn&WO5spzqW z{p)U6#Fz>xXM+qLhOldteHsiXz98JwaNq`!et(3wp~Nksk!HF*!^e=uq|b;x2J>yQ zrJLy%8y|zaqOn~Bl0^~Sn&WFIq3Fa&{QiNjp`OAkgCb;ZLsLZ$2YEwoL#!gY8zzq- zRT13{lgBVc(XIcFxHk{1>F5K$=bSm)%?*+e1SNUeB1)2*qQ9iCi3~JWsC+!m}|i(7S^0JHU&y;xz() zP%Ys*Ky^Bh(R5?ExxY>gla3I$)y%6?gU)7@O7Q$kO?vZ3?hwz$yhLBPg_KGvt^Bf1 zZF-*3bh38n*L589*ljf9r(vS#$X}3ny=Y9+IT_VpI^38#1v%jGLSt$!qCPVy@!C!USQqOJU_O#sZZihhk8Lmc50PUwetuJWdB!}FAHWjpH zl0Q6S7c1z4DGoWF#tYgz#UHM0?|$Fpo_4w5kUP>o!f?O^f6|er2&xNao#;eCt-!1k zoh_&=m?h8!f&#%Tfxa)OG0dJj(+>o_0<-7N^q`VS@6Z8Fr)f1r_(#n<-B)CNu;rY_P@7PN~Es|Dh;Qdy3+xI zYQbTr?sNnYq(9C0wJRJbrsIX7+RdN5N~bbPCH3Lw7d@y_gi%W+kJFy3_!{*Qw0y>M z6?@a(g6_iyJPvE7(j0znNVr)8~q^K?++eCrDUQc z)BS?{;I|+{=p#YC(8~{_7ayU`gJg959m)t=`%msJ2i%RMd^;Zo>LXquqv&j5Rsg|| zp*e#7vzRF3=rKlSD%l8z6X1NvltjhX441U%p`4Q`i0D)UPJYU*4jx3hFk?FJuAj$0&`pn73()AZ#&j(1uZl$Rtm|W_ZS`|^JjkNyO_=`gANapL9@Q| zT|y5qN+nyMCS=m{f{LJg-=+RO+$R3kXE}{z#B=REy3dyd&$^xW=xcsFG9SXm!h3Xp zpe^0t)7*P>rohqALB3Dl6f_Mw$oJ`of+8m!S60vsf*MU~XJ0{c1#N?FCyVYEbQrpw zEc&^i@#`G&N_tAr+;#qBCB4Y#Ab}6jrhOHigV&owM$Lsbx|+T%Xf3qS)ig^`6KLCO zXttnk(6-mm?Sc-%3D>oBpP-9y!gVb@$q2@Z`avNd&>rP51eh~TsvVL;yTKJtNCQtb z3^6~Z=LM#&ZymCU`jqF92_9ZZHq#hE{{{M#P8IYD&=$H~PmGVl&~50U_R-pv zxY_4G2k0O{1n3~$%ZNAF!}O{!!}R9Sid9)6Sk=p;$(&ev^Jt17Ol}^1#}tU^JwjIq z!t@@YzX`(h9;JT@!t@@cS~Z?enBLE6X+fCY&uIlle5&~ceL)bm`!8rCVRP?@Jn0yX zsb+F-@<#ZOV>FK$rjk#gzdBCO2xur#Gt1mTaczN5DU;g7JsqYpWe#xt&XeNVmM0v8Og zEo|i7q~(xs{nrh4@@~>Mm?6)^0=j|`&x;>vU@%WpSK{maBb~*FH>aQIc1Ao)f1*k) zZZnp22)RX%Fyc0E(=jix;GtTM^1Dr6sEq{YU+~=9FLVk+zRdWAM%6*Xh2+mZ-9qlr z9U(4<8o5jPxwkZ5Zzc?AV<|(3DIE$%)Yn~z+Ci$8TFgyaQUqh)F zi2tn^@%W^70*1X?6$H&89bJSK2aNFjMiQJS#y z8f$@SD^Y^Nf$At@1T_N+QPv6SnOq20%iIt&3@A*g($t-64&@U@unV+4O19)Jcqb2nmHtS;YcePrIMD+><~9IK7`-AMJUGwZH3>wMJN{;9X7E2L@GA~ zVf%?x)Mh+M*kJ#wloEsu_P88z4xf?2PH)rEtDp?KRml~G6QDVDRf+`7f*+Z8Q?yv-sj&in zpw&%@6f`L~PfApx1f>T1kVK^=Cz9LQNxCcIh_>-FOu~C8otasN@!?y2%JxutFfucY z+AD^J^icW=!{`;GfQAT~5<4-Zr!q>=l2{XHlAzzmPb>49k}AlUkQVZqk}fDZ>w?rv zSsLD{DBJBzfv4W@n}$p=bO zItjWRwK@ zU^rHpA?UlMTcxqew}NJ$TNg4;xg{v`+$Ny&9eCb3 zy+zRLy{Sy?!PC1Edc^t4Y({B@7VMCnin%~w`Cxx|I`4BqIJbRUIVb3qSby@iQYh%o zEQh>M`Ag8Bv;5(aJ@1}8qTT!FkVQ&>ph5lNtpKHlAiwc{+TT$k1qF^z^?65WW->f% zNRWvcN_#x5F66HfiX-1P{IV4lr zBBX%!t92HbFFAC_KAY3iHr`&jrjel?`{IWlJPr1tsQ^`CS z9N$;eUKk*s^=BzQjM50s6ILoK8S(LcrII5E$NQDaUPgS@uu8ek-LYB2D&=PG`pcncb{{Y=P4WiAq)|7-)hb(@t%!f+Q1zgv_Wg2n-DQ|=0y z3#;E;I< z(p?bxc~I%Y$u!W@gUV2b+|xtKH{6i5?ZZkzF)Fm^hTmbu7=XbaBx#8WHsQ)xD(9a~5UvGD5$xX#45Xp%*Q>c)DEZWsCYZsTTU3MX_ev+1>>fele~_ zsGEKt=Lr49GBY8-yB3Xt0DrS+W}j<5_bob}RzLKCMbDixLLXZ6d$;J&M;49hW!m(| z7Mi_cLM7Fe-rI5QLluiOTSBO6(N!ZcRI})~kq`=RaEg3-p>?lNn?;AumJao{=tQ&j zp`|Svw|k%&TE+uMhWc7GSpF?nz1O) zAxEk^1+C44H{{iWf)3WmA^%m63HlOl&ib$Vm7r-O2Kv=iF9}*O!q>a5sXpe&>UurZ zcL>Hi%~;U*xKdB8Dk!UQJ9|AfiWAs88d_g%I+Rsequ!?ZB&DGX|@RMo_ zwZEY0JK~g<>J&k50ku*W3BsM8*6Pp^+!x&GiBab=;t7mZmoVaeV5~ZIq{*_z7!=pr zKUSSRl2b}t!}77JlTj+E0lj=1b(t{Rc=1$doO(vkA)t1uErkd8!^OSjUQuf@N+Y{q zuGm4{%E>r$A&11Pdjws)AOT%U5#!(X3ve%y`lB#Be8GowRJ}&=$kc-6XD79SpeR^= zc2Zvy6av5LPf)`JHH6>vC#X#Y8DQ2~Z6~NQm~~cP74#5h4PDehKy3fh4?OLnjuVEs zJK0rzLlACGc2zSN!7mqJLe)(@DF`OGDpqT8siLwl($ z1Pub}txiFL^&czyBz50-vM?g479pi!{fJwQD# zY|el}8>n6vW|v^;GD!VV&@Zrb8KmB`Y~Bh@R%^e3A(*Ko4d&!S)CCMvNp+aZ4^!_6 z(joW}YJFBqQpr6S(^J$bf+E3ew7QuQZ%$*?Gr|l9+;M758V11=I8L2mkq?;Vb28yn z+P%>6>NSo)r2Itnjzy0`C#x-IF>k=k2s70#7L^T~rVg~IYS>J5f<-mLW_wUr*jx{4 z5cZZjL)bJkYBdXUs_$41+lDRju$mCISY0j5*25XVrRtLTJThIoAe~v{PT^8D<{hL| z5(pExrRp(3Cd`YLsZ%q!*@~rbQH>h7jMHp$g%5dO4P41FH%lWc)Nn!1!PdhHwIL&( z!7J4s!VEKbmD+zTy2A{f=)X#x#>x1pYz|qg&J$EvRsuRNXlk__@_~9)P#S*!_&}}w z0rSQ2AO-NXV_LX;Ui9)Y7Pk7 zroOPA({Ce2gl$)ke9S4k=7g|ZwaNx0C+TgZhV4+lWRyYb`Ogm9t=_U|ao7R%-bU`O zwXrtrsJeXbX7`wyr)tg&54F)=+KHAF330BXk%63lO!0dt=Cg|-e z8^SJI19iI&*L<#9)b+^Wuy57g%x0QVbw!@^gSvrHDrwgt-~NMY9^{6s6S}E}HET|tpB0^Cy@?_&K`nh^^N$9w89VHgjSkKfd>f(F3k z<2UsaK~vxW+3)H$K?~q+r{C3Mg1Uj(ef5l>!C-b@Ef6%SrbB+977ChP6F$PI4|j?2 z?<|~HD^lg%Jf`2n0;5Q+Am}=*ejlpU1U-b+??bhwpgl93(jRJXLHR(B)Fpy^XE~)m z)suq$1N4__>|r6W!hWoF*vrPhgCsLiBahW7fKa~D)-&^K0PW}GzhHh1qD39xbYa-J zFiER;kki|{uZL;c#lxIl?RhKAOY_d-)N0b(HA`!i1=Wsw5ay#bXOv1N9)C+It0f@e z`4`+IDW~oFf;nWTVf?i?Sgm7a!vkdHwHJA#7AXj?VG7V@=c8FF z>0d)~RMJi|;+r{Dv|gvUyQo{J86NMNV>*OX*SefVN`r%EHb+fus72e#zodZy!OLcGiW*`OPEkX(*~}(iMLM)c zj8cg_%Fhw5H9f~eXahgliO^OvN;Axn@Hrt;TPJV^Yz#zdTLjfV1D_1E-GW-5flmh7 z5l$@Hb+wvbb59S#%%HAzOi)W0xaw;izTsx?hXy!a*2V}b7!c%$(p<-s63wN-j>cNp z1)knYjU0}qT5m?F#CJ}xqq$b)BKM~K;$TNhZGfO7-J=|>wHbo;!BiwxJIE-FTGP#N9cd^Lj;_!YIvXv$vh2gZ8PQUVF`Uj(F{sz~*ocx})~OWfmDD0jQJKLy#X( zg0@IdFi>ahn4q?E5*%GLp)mB`9caf}@)@Mo>MVL~Wg*MRO8NM|bUpz-(~% zs#fJH_oj7&1V;}oK~Q&~p4vP?xB4eIUegW=A_Ec}y|hP+;Fee@ir(6aYdrORf%<4o zuXCCJ)K5DpXfBXBK)d=aH|zj7Nc;2#rz3E_X|NXf9a0+Hj{7KJu+~CQ*-@`LhG~JXt-mzcH5%yjufrj_uLn0=Xl3x?PWm+-x=>1Yihk2rjlF3O~-hx#Z7MY zefX3#QS&a~gd6IUwBC$TNxw7cj>%ewAGz6U@MD|TwS$5_cqPE`x)$~mH`^FmEx^=P zGfE}%wobU`N}y-v+3=o)NJI<=*OCUwt~-quzMn$sOlx@jK? zstCUTSg36l6bwyup|0Rx+BDbIKYQHi{CFsk$n&;GZx%Q}tjep#m_q8ey-QKLwy#I82vqB4F z1fS}_n-$t7M%>*>?Tj#Eb7C!w{nVK+I#v}6ew7x>%(yRWSSQ53|H0+U$_LsT%#eGU zt*sDN(bF8!%`Ob=w5NTjo38Fj427#>SckkY5O;yrTZDIke{9jOM*C2>=Tg|L6Z44! z4vQk0WFc&3~{Omc$B^Q~2t9#vceDA`*x?6s86nKyven;~>6@6dObXH~WYqQvI*B2U7 z7L*FVuWc6O-F8})``Qjc72B2tvjc*9oU0W6K)WQ!9L&%&hzG?2e4ssGR{3Yd2bvfA zc|5OP53Gp3ySo~A>Pr3PaW%sqT7(1jUlw64d2G=}a~50;t-Bmzg`yU%A6GA26_gQp zYn&8nv&^s}dRw%6+#eyOEStS{HwiCenc+3`if>LWRk>v8a; zfIe5yPDZ>4aTm3BcwK#+hr5^cZy6mVEr!P_FY9*&B?C1yb%ouV0GBZKSgJ(nQG$K} zYNV$yN+n|GdB28B1(uL_&ZPdVgh{idMKr~FB@UdV`lJ8GuaF3s}-_X?Zq z4F&awpKY|z&8`A*GTl-iEeNOGt@LGr*tViRx(q9A_9-bwpDYMJCB^7-II)6>)fWrG zf{E4FGUEB$RzJds=Wm=|&SdvQ@C=UA|HFt|jni8&;#S+~71qR)4@|EXkC_yns821&VoI{cq=t9bi9e4TZY%cGt1;qv@tR(nQ3iQ?_nh$8 z^bS?fCeo7de#M$^vc6rIeLHJ)c(Q)cqMY!-`Xe9+KZBT)Hii$?1KG_RPSS4V_V8hP zZ;SSZ4=?8FNPQPGTS)5m$qOIJdI;B5Eh&QVs+KRqMq88|eJp&OMRZ_muQ!)1DJM&C=*)XEXd^-l#Y(`rYo)^7^B zqD4lm)&Els3+8+2{qgV|n;t1>dk3T#PNwut&n6Kc>3l)-y@VHTueV5#_VJ(xP2uJ) z%WO|mAF{!siePi2MQ^LEA~socwnM9kPc51c_dsm5$b2{#E>N;?{ycxO-J&F*T#L?( zg@fi6WkvauofcIFPj^}LU)Vd?ZPER7iR`f`uOGa$Xi;AiHWv0-_}V0R6xyQxwc14- zut-_eDdIDWvL`2zBNk=OOd>}uI<%vA#OD@$-qfEQx9Gd3$q`>#bn>h@BH|>gCR5=R ziwjT_PFXYrYQi^+VEj{4?BgS@S!Q#tQ{N~P~Cl3>F0 zy+!MT-!dcI*ew37h?|z-njwoKezZtWOsVve1{alDRCV&| z2sZ@-{cf3^+4WI`S!Ch3*v%1t=o47I9ZMO&5x-3NZ-IHm0X5d!=JjsZsYl0 zLU(`a-hwbPf9ipPFrt6y+Zin)tA^!9NX8*XX(V#wVk(=4tL9@&W#hQ8+9aX}RgJ5{ z8_1{#)lk`mKWSur@V*G$sLbel3DavcUJ!)2W-}fM!d$Z(UjO0E5Yy{zg@<`j+Aza} zA!fd>(V0;iX%@dPqO1XpmrVCLtYS0tw+NeId5f?@RkR3OdL@gnrMn3mteddGRyMHz zWkFzPQpIwJoyqeSVQYTTB5chyEW-XG*dlD(Zo;Nr%WVdY`6Y|6Y1amV@G*thw(D4i z*tSC~!nPf15w`6xi?D4wEW)-OZc$%o+7T9EHy3Hq$+IIO>LQsecx?CeEkkVg4J^WT z|FT8c?weSI?Y^l+*zTh(!gk-nBJ7Y`GQ!5(aR5B}#0b)VSS{1Qg-H1^o^&qBljgmW z7r`B(&6qwKX>WPDUOf}xruuU<(!pg`3SWwFQ&iq58qdv4m|8!#2p(Rstll_$igvQ- zrA6=qON%~>&6C{pJ3K+)rpNmv4?3HkLpodTE<-W72_IwXBFxOgrAGIaEIeEaf4kk) za)`&r-Bi>H-fywY-Y@S-xp1P%GE*NzwRF=gC~Y^rcBN{S?k-($nAy2Lo;K^lT}N)4EuhM}spUL}{F>!wC#d;uGB?3?N-xWBKWwMC>H6Fp z__~9=0F-vA+jAuk8V{Z(S!UD0Q#WlL>yZ0cW{03{S)|TZzlrGUGJ~(D#?6R97Opc2 zBa$tuIPb5BVJ<2a++hYCX;Do$py#GYIH2dIzu+);ie=Mw*q^xR!8;Cllx0>r1AhPR z#y|EtEJ}{98kuGhI-Fx1;lV>HYDdmB zYOwp~(hR&mX@L+h8edp8kJoS-=PjFGR(2XUJ#4;hm@mG_GSMhVfD@la zn4n)1;KZlVf)fjVp)uOB85OzEm}=QtRE;4+oGe5!I9Fk!KFgi%W+I(+c zY}90Qm>ln{RatDn`WqV;PB7qex^aLRPAC0kB=;@_(pSRlw1jk%5#N+~(&jy3^Aw4V zEN-^UFxXXq(@6&iVHt#g z8BfxC#&SkHqVGLn6Q(|F{Ac%nzGq}x4lf3;Fb-QZruItX1|z&yY)0+1#?+d;=Hu;P z9~Sd8$Joitcpm0FVfLjk+akr6;${#&kLgFoMPc}&9AD}qqg*i0i$CO~QtOI&^RW>p z%!!gDHg<>fxe(QL8$gyGRwL$_I!9Gw)o!=hf%qa*hU!rcCe?01=&&_lfu`I!r$ zhf0e)WD#~WM~gZ9+%g*;y(sdSMaj|2BTrb=D|%hznPTqFS!Tndw?%$!k(nI5C-Q=Y zy`sN}ykdM>$DJ3~j5;B%GCUJ`&1huNg~;nhJBw~a-Z1)Fw3_^2WLmVH+%&c`${^Rv z{v3JB$m3>4vI%pMJH}aoIQh6^++@Uy;*QZR6obz&em`(O@(x54uAPLu5;tvp_ zk-otMc4NDOG)Pa7HgY5#o%zg1XOZ3im+G56!8a40k4I0#*I)oa>rstw`TQ>=_if4v z^o^@Mb$Ga@XJDR@Ky~qGm5k_jEzk~1`Tu65zceqS7Z>3gJuYQZiRA&8JaXSp#sCUO zV42m3!LqCYHyb@WhmO}r`^({iB}&v(w4c-li+CVJR3nX;+iaFA)9XRSk;%d&w0dtO zTKyTMM0)0-{>vGt-(WlH!(%p}zqTIA^HAwzg4b+PGQ0EBbQE&xsW!R3O3rjAhXp^VUQ)k}Oi_Cmx@SXwuuhcv-eUD%ix!UCap4Gl1yUSqp z=UpuYjJi9&19p z_&g*1+ZX81i+|f~y9?d?r(QjJ0G8sP30U^tEHg{$@H}{yqzvnZdB8W}USzm(j9Jb98dJX*q(pYYI4P6<4c%%S7bwYt9@EvRc=mcq z&tml~tVpx_)15VAqcwIWGQr>_*0H$M_{uXMaww_BI$+c(UVEP9mRCbpB>uMkd!~S^ zdA)Tx#vrFdamZwGi4mlvJ{Ca<`*8mN8OP#Y(m@3e2d*KCT0<1K?>7%Kzp;nSLN+Wp zU<`Bx=C-4dU(UGo(I)i&e1d>dX5~#;hAX1Hxjr^FN=7Wek&xE|I~ylaLUjX=JpJKn zmv4=RqAQ+fJgn5_=!!K|`2Cj~Jk*qIWi^AFo|%gQa4$TYkY{`0U67{?dL3Qy>dcGJ zvl?R6hVzfyJI@m3J=a~h4^k$TS*PUbsizm7>XK36K4W!rHAv4;W=z50PnfLZOXhj4ZRy>&Xi|5bEn|n z1R#-rj0(GrI8Zguf|HF?$Gb9lUP*VWA2CH?=Z&a>t} z?$UJ?2UgFLYFFeu?enPP3PL7ZK6SZrxy6Yn6|1f|UjIGQipH{K?9LDD`^1rt;Q^o%7Tad-=v+-WIwbWSuJ%j&Wsrm37x)h_>b`eGeC$7A!cBLM5VE)5< z@2A&WPiOx|O^FloPZ9Z-))<4F3{oO)HD#|$OGLU1rmpqxB?YbSp;$I}icKMtSq7ef z>*aY4xeCRd4$lZt5(vw*;yS;xDNJ8h13X>vJm&LF(+^fQG6`qvn-xsmr4M@K)~5vZ z6~gtooo|m}L_cFwv642?R28PEmWA3g5<-pdKS%^iOD3@}{i39QXAGf+Sava+ zo~e9x?U}+RWGLZ&cbIBYQT2H0&wPgA>LX43$44rijp+Z+E8yp_@P2l*GFxGU=9b3@ zEh^9E|4(RvW4BIm^|MC8f205Td5qSRHm&(T+l>)T@kvXrHNsQ!23B`6sn!ou!%g|1 z{1lt4KuhTVyY(;kw4{vd^7Q2?x0%-#BNqcRY1a^i^+_dPu(>s_Tjpu#^I2wpCleZBW|myx@^OTBvAA*J+8yGne{Ra> zfI@A;v=i!oPq$U>45Rf=dweA_^Z&Rf^_dSTbCvG1O8wvH^M&cZvB`_ZvWfk_1^+*& zt@{70NbsV0BGyktlo!NbFu{6SyZ5ZNB|soJg~pt{o*y5SKAWl`-eT_n%AN=I4K!ehlx!E#Y%;=&5*oP)CAVRR+p%Xb+!FWBGaa6G z{$BmG6cVz{(zES&R@-O!Q!I*5+lq}BuKHihlE+Zt=_&8Ad52xDC3e{O4WxMF zJR|fhKRxxu{=a81p2p8od)ohhq&8uv>VMGzKPwV{pC3mfSpUyQr)Q-#n~h^!-Wh|@ zJrw7v+cH6YN*==uKp}-IpRCB=GPk^M=mBFX?0kZbOpeS%HAL?JZ2n)6_RqOhGR2-v zj<+edwD$kG*0b`!Q~z06?P=#MOqEg=-Pgiy)k2n-T!>Li72 zUUFA_7jz12)+r<<9g}f}E$gm;q+}Oc*5S{PRPrN8jr6fCwDSx)<2q3+ zj`MmI*OADDS*XJ!S9yTjG~yhpd%*-%CM&w3Z@m-Urs!KqpP~LQ8-fP7(a5Dt9vP_q ziA|GvR2;3*yBlA)y;uQR%Dr=WI$}51p%6S~zDvJNb#yzc2Ih+Ax8`<7!H&t&>axoF z_U~cd?x}G>k|e~)#p*E$Oe+t&#4mQ!)>VLm?XMD7fsPed?hD^ZzHc{y)_*iv|CzJUDg=Q^2LC9iAWlQ0g-K z`b~)+%a4+!?rA53^)cK|vGWhO6Xse-@I~@pB}R1aY#-|z7BP>w`Y$%p?_&L(Q^QQY zUlt?14^CCdWCEOuqA(kVqejq&%FqKgg^pYzhUvf{|AIc8l8&&NSD00mS=E?TU0CJc zys%yHog78z^8hwpzyQ!|g=AkrudOXc(0`WBzM4?}xIOfwW9+SpZyWJoX2CHu91D0l zFqpk;)%OZ3f&naYxiDTRq(T~+mfMMv7ukLjqy9u?$Ns-$11nj6|0^AAmo~%2V{Ys~=9eW^QUDernQt7S5;0qUH42W@(`6i@rN+2oV!nB0r2Y|pb~kIiF> zb|jL)q-Q~R2H>fl-Uy@e_aF3+<)NLWCJdvLEPz-SkFTe9&r(mCfnH!*p{Fb1gJ(pa zt%f@3TDLyi($nocD_Z|X|0s0c5`hF@{pacUFEk;Sx(t-1D^1*#r;n@A)MfJ&E9n@P z;rJ3PT<3HWWmh&vpbmWV0#i76;ZZ24<~mUSv7D%AslzX!0hewEF4M=G(6rMDl;@yJ ze%jE*t0zYE+4<^`LuRpB>R}-2xu=e&ng{duI-aJUYVLOQ9*m-ivpku!Vwulpd;zUd z=PhV#l(dA*bR8YM#rk|cU-AMwl>7>ZE#UAqn_T0GF+OQ?P2JvxuBP~@GCr3qrf;(G ziW|IH!ogJt#^tGXBrT8~NegrxN#kyxJ#)mwRAM~`+H^(EHMxcQFO$(?4)301dd~iM z04_Udzdod!k|rP(5(d43%Faz{WH9)nlO(7^2FZolpN-&H;F<$^PUm?p#==ie!6Td? zD{O+SlA?aNFxYSaJv!~-xMv0i>1lJ&d9;~!5p8Z_HhBZ)(H*fH1AhAQgGWeW(|nl! zc&-@`*SOvjliA+i>XnIz~i0*EPcE-Yvp-dXUvWt>tASGd+`-ZMu z{*>L1cJ9J@NFi^5S|xd7(3BlTH9gLv7GEAb>nJLpN*|&a{HHPK5l^>g4gdG*e>ne! zr

G`+rYQc@y%Sr1KIjxdQYY*gSh!;Tu2y!vo;Po(@W?d63+uXXJQW}ZA|JEOgf`ICNQCPQzT);2gZGSzM6NVL9c3QM zOeTjhd5z5hKZ!#95N4+h^aK)VU_y)}*7@+Gb#N$h66$!you`tYe4YZ8QS~t8!Mh@{ z1;%wshQy)|(J*C&$K4OC)_x<_>qNZ23dw@CtJ0%a3O36xDBE1N)8Hh~%x z4dq4S;Q;MJ0fBueAh6%CrUdqT$H`#->;e27Imj*rO60dOE-8~YuE?O1(-kApw>w5c z87I`Z{smwGpaUPUB$MsqQQbMwt&iTxWNl3u0?vV9Mk1@$qn)<08zZ!V5qfTmo1mf74t9_{eX zXSFNHfAYs9E{`zod2sEVMApESj529_9@Y3%5SE`X1v`VUpt|K8DG=+w1o?3sazY`i zT46y{h2qeNz7-3u?Jx>9Tg<^>z3s5#u3SEt-~|M8t{KWl@C!$YIAQY$(#qu7v8Y}Z zh4KYvr!o8@R3c;!$|Cr^uLOfN%2sE2Fcj2#UPN_|>ZqSI33Z+fo|2##jC6|G5YFg( z81s0!Vz;FcrVk$@!TMY*HBeZ&EZy>HO!tKmXy*n$I;R#d|kj3qn)Ipn=$Ipls&i`B6 z(Gp6T{0#egFtvj2LLs|Op#F{s)Q>ucX*$uZWB`AsGwTeR{?G(v$*}`FeyIQM{`_fu z_|u*JlPiAQ47V&?VZV^s5< z4vD#P9kg^G$MQU;^|Yf|CO^yN>FKC*=&4)cF-f-$9>am<70XgCeb1r}|1^^WGsLH5 zb;-R#p<_a~Q+%9818DJVJS>^{m-b=+yvR`f?}`jpi4Afm>hg2rRq)_5V!bpl7M#__UBu;*l^pG=1g1i~@Y-HOiiTHxlNB~GL5)9IZ zIGAieOoV6#u}sD@naE@kNPm*d)G16(WHO7%Y>*m>mrxdgtVMif3@jLA111}j2B6kR zBGW?fVvm_?r zJy6gYK!Q}XkLr;mm8tiG^d~kAe|($Du6B*rx256HzNokcyJ%x(_n&zz)o z^&F7n;O72x(joX`P)~p#;=%KvV^HUM%yy8uZ8Vat2gV+QYi4Rhp9l5OuE$6w^Jt@x z(l974$cdlGM&doN5ai-8yg}ysG%Dqji#0XrYq04J>IaR>fxJ<(iYZBSycsB6W0APV zB9Tw>YrY6pmkz51mg>f7q=AHTzkX}1L)x#ehu=nLlF!zxhT!q#=uC3DWpj`RF1L|3 z61;e!fHa@p9(2OMRWNg#3I6yKiT-#(Bk7RGou#jJ?bBB!^J{%!!#+|HWOy<-sG2xJ zD$uuW9|zI$TQvn_N-HP=@)f*kn@K)|U$#pWUpdPp%TM@|BFN02K>be7>5^n{b*N(w z_;V?^5NrlR9uz=9`~>P7$xiSspexF1C;iDa$cbbrz+}}YK$>_sTMCe7f%GQTQ#L?; zgv0Q8jZCQ_k!*+A8vAd)o39pvjD0E)!`32Z7`aB0p8cR2qqz$+r`9f5nhJ(*n zrCd@!{sOrAKJBg)Wb{3MUy3Bzt18J+}|F0a$yo+R!2$CLN z?j#3EQIqe37r!6q3F>~AQ7wPgPYyQfUwK`=Mt(mqP0lB;_M9U-!Jq8}{n;$%lBKmS zNDc`vbZ|&-b=@U9q@P;slf79)QA)&{WSF&%gBHf91&dJ&f)Pq$xgyc$;SPXYUH**F zZ0W{fl{PS(_3R)&YZX8@=1P|I`&TV# zmNb4%TaZ5u?MP#ddOLd1qbw5H(!5tpAFwnOjI$-YV4;CA^wm5mUrKv*0qD$!8*1Vq zGndmuB9|}SShtB@lbXeE2f1d*K5+Z+@)3|;d8cT;G!4?-z?k@| z54k2`HO!an2hW0^wbmvPDC)J)nxwCW!1^cI$a?t{Jt}uDPC%pq0H0q^jdwxcBON|ch#q8LX~YqwUa zkb7|RWE?ST$ANm{=#C&?8YPh`Bn8xF6_ypbWM|Dp1!aC zxdQSP>`11_c#X3}@mVLQ3BA=%#Az&s`|dJX6LK2fjx5D#U~85r^V;Zo?nCeb?}?Tu zzIvW2t84Zv`NR=*81(UK!hF&v>a@~8!U#2x&{aNZ*W??pe-$2c3WlPoO(lx&BT5wC zj7m5B#{ULtGhqK8%6?NNp516HdAOfAtXCq7aOh5n{jH>pKJef6bW@WSt_eX2yiht4&DHP=K1YkLB` zkZ>Ft-fbwLTp~@rAmz(jzRXi?6isckddg`~W8vn@HP$=iAo_Z!>5y$SqtVLi*v#G7-D-1GfwbFv<5P01# zU$%V}uSv8h%pnKZcqckMx~G;e7XxAj-Ys1Uv^X2wSu7G_Ao|yS^?a@>ZGA56=>An!JGJ3vTe{^|}y|xU~gP5f; zEHGairfCcrcxjqG2J&V$$m%Hz^eN1A4EbTl3Vj9yzf+&bf{%rq@FB5uRQDt@g+&x5 zCy*0UNSWhj!4-CTi{Se|^uw`qaQ9QRA1g~xzlk;W_^u!ISUUDi9};BCs8y);SBRTL^>#Owehu-a&a9oWj~Pz-xbrFS6nnZ@+v&XP28^aVc?f!M!GLSz(wwF2Xv?a6dD4XSRHcb!pH;Gfn3gXmps+6q7Y+7b>LV2&W zZKV5BKCwALWqKCr2q zS2k;q*{nrmvsMs9@hzMnmc3a*2gikM<|;_I4ePbVt4KbWv(sy%ZQ!N-Aj2-rG>TZS zS0sPeb%eALl6S=`mvn%AQ+zVw$bANle>_9FRtc*mnit`83?70I9VZvZ-{`Zuv}#7+ieMlHB(g!#GA_QQ?@ z`+o4PyS)&)CYVRr%r9E^2EcaN0A?vRs37f{jI=3cHh}^0~m~TaPyZ$eKy&>k3vrPdZYcSV0yRbQV3<*Ua0>^ z<@RsZ_Rg0>cfaiIP%(W$FlW_Bkk)5sbMJUqT4-c7>*H3lzAs*hXxPU)$Sb4POk*|c z2jdl`;UKVirQrzhT6%4%a@01otFL#mjZNOYMtm{bd!1+nn}@v%VYS}8&O6rYM4P=P z{2RIMkaxV-?Ytx2iCzycp8(_LaJ^KL7dD%GdDf^OK&MV3)`{puSZLE}lciEY6rX9@ zuWW)#l=ds3DdnNgkN8?5M_F`Jgxma4dZ~PQ6x0&v&Y`cI=r!&_^-^Ceci(6ZvK2_2ZciAm_m6QpKN@aQ-_$a$n5gW3L zObF(aQUU5nR+hIfZ!MMUwG*CC&-KEIbE1+_>$6f4-5C-GrF9ymdMx%rDM=j;arfmT zx_Td4N~TwY3B5h-&P~J^2Im>=%HT|TH9=RM%rdZ0O1L258ZWU-fme^%BBQ{oetZ$c z_nlXUmMQXjKW%K8La%$xCYQ0<6CgEhsAhpJ3B?b!TIrV2~}CY|CW4PddwFr#d{kmrs&Za~Mn_l!AnTKIp6;EJH8H z+=Zu^e@z(XldM!4JJ2Uc8Z)*N)CQcAf34$MKa=^8#bh$;6~MF`CSx%SLNN1(rk<&q zjyVu7J9agh>KCD7z@u%eCWEKd$D-F7$Y49ZRhz8zehD7vRr$((epytsuW;4G;Bd+dTwzR|{vi)32Yd{Sh* zT3VuWVZJNDjO7BX-HGwoCznK4MfqV_l>1SKr72fU`?Qj8u6lfHpl_Bubz2Qzg{}I0 z?fO(KKAcS{60Qh*?Tx?kg^oFCU%KKAtL6=oH(MP`^w#Il|9dlMnFO0wCW&9v&Nq`d zPe7MKA}4hOb)!k$K=NIWE*DULzy;h5sms)@nEF!tUcUSFPix@D%mSEdW)iGJnXLIq z6t821+=6$MGTHM!Fr*zC1AfAU#e^9gI*{nlhM1W+t|!|n#!vQbU}w`ZIu%Tz0>Y{< z+U~y~6`X}`e#`foI;-I#-=i!iB>LdQQeTNK9FheR-%6I~>+lwmM1M_l!sf%aRUd*r zzK)y33R){J!H{CgPp3mNF? z$}Z5`lTuM9Are1)g?SJ)^&F@J!%@Fi2b7=8M7gFe+W#-s7!hRSnU{T?c6{hpqD^OA z2LI>J{LWW0>7ZHP`DWTT9V!I5?$GbP1(2p>DV;#H;5Dh|ilGM{>Q&Bh6i*#@TD z62(WACALy2RMTg7^vhOp15IL%H`*^9>kc}*ha~ys+Mkc`Ct38H;RF3L)lg73fVIFd zzx|L(4fMCI8s&$xTa6S#GDi8~&fqA&EH!Za1V1M%&`dw4jyq~F-GxTz)C)}L`JFm$ zlwmo|@+;71*Bb|0aQ1`aq@(r@Eu7$Z$40o-){b+2NuE@%iWJP!m#*@e5?;Dqq~abx zk&4d}NNne`h}DcD^5?9I?76PW5ar7opyY{IhRaadO>p9G1pCr;=|(-?E!T=-C!9=y`bJE+wt|%bOR%l z&YtH^w)cGhj^gXRU~doV>;3809<+g1zsZfu26*2b)1vG~d%NvzK;o92M7P4|hoc-u z@c~r2T>Unzt8h=GYuQ|~5_Sf2$wnCVVol@6K7Gmtdq0jF3sQ=kQr6);3bx%Ec-Nmj zt!$PweQZY>?Ty{@QF|Z^wXsay0OXrx8+hYTTLiTlHkrvP@U9%|%7Qie1x!`651`b` zvHq?c>+gcKZ8@vU#(P&!$tfGGd4(2&9kUQpAFPdrP9|7;2g*Cq8)rmEVT$o(*>Vz& zY2{ca3R7vA%_Vs!T|5ttv4%UCYyk3lS%-G%n}V{qj~WLl{`Mm*4%|JD)^5?RQ!AWe1e8O$zjTtV&;BAz&^?fCk+(~j?)JMH+Oxzmmh znLF+HNO`=1kCVqMMf1!k@D5)izozaUj%Bu#s z2~IoiWjk3xNOa)#7|@S|mwhGL5h`F3uby(;A-;9nzFZQ^Cs^7-n@VPCYz0toc6hYf zESIXm3>enA*pO0L154Ew%^qDYU3+aPq*BLeNQyQ&dSbZ%t^NKx@W$I8Lttjdz5=9Z z_?k8DjCU>T)Nw`N)NurH>bMUgv5rWh)kk1);AW&m@wMPg?LV#HWq2*56`cRWJpw@=v@SS`u+ zzS`<;xh(0*4%~2lc)26UBlB=0dIc23MsKW=+1@pdHSy2(KKMS?OTTz`sQoH&CXi+qZ;m30CaxQC(}MdO`XS#6S*+`os2%2mINN`| z0&c;foIF0d0#09BgF5JJbOqck>t$BBrumQaCl34A=z*Xfv2C&sOe>N`gBq(_zBgAt zTzW^j#uBw15i}fG} zwcJ}F-}r6gmle{wBgauRSecT!dr>)-b1^V28k=lc<+K^^(z+W zTaM#^-ipZ+GsnSKgT|W!%fz#OHrUisUh7gZR?CG77_8w_E5RDZJ>EN`mJjGGgYz4~ z8uswM+VWS@E9R4(QS&Pnc%==1b&?%7uCb!|K<)WyFRbXG-qfHH`_fs&ax0(|jvYnX z&h9HK1~IinqZemal&CTXr5U$0yJE1g^v!?`6^pbQJ>bipR_1k-52E&0^wp#C_E*G0 z$pbZ3Rj>ow=K=aJ%oHnEfWBhh%RNX8BT+A{LUJr z<9F5~EnsJv0AGEa8GDLG>jlRu01WL4ouX!IR4t%L%Z6S$y401t{a!(O_U>8%!8%UJ zg28K?%~hY{0Q-rJ_Cs_rNMD^zRrCR%6JM(9xryKd4l}+wPU?Mi9Bh1boJsiVxcv6j zyD_;>Vkz88Y@p|^I~9;r zs!{jz0S)v5c*b+Tt?}mlUcNf6>3wzFE%4PVgSvtKevShkC&E#*fxZ)xBtd23I7tIq@#88TGGoMeiY!)w{~)ZgBf*cr3U)4;kclDd&~tNUmf>Eidb#1 zu`+h*xU?wJ_CcQ?1>MeUy}*uv;dbLFn8x|Q(WG2*61wW6vft&{N=e|VJ;-l^sO$)(2cdaqKt9uvQ&QWl%8HLyL-?^Cvc?fE8~ zD`lxT9yTy-wVUJuU=2@aX-d~?ZbCIa7L~5!BT?7X1=~@lZG0Yhhb4-e&tIa~;Dyt^ zx#iVLFg<~fGB}s~9@O}N5e&*OSmTtWogL>Ew#ulEsGJF*L{!ewt6gpZ((Jmf4gBji zvVG-=rP}UzUCz=gwCGYf*!XixpUO7K#(|ZS!BhN-S+;-EGS{RI{ZlGklbV_+JHVnM z#ny6Yge`?lw^M8#ht97Y53XJ*ono7KIkWOLX?^fYkP&9nGO@C=%_o&(<&U~<0+}4~ zNoBBOUfxnUiOt57l>W_Ml#;@YzUWz{fn;p% zS7o9)DHtxFR|^u>857kdV{^zYwwKmGA~8d%WZI3UldB}_k?Lc7U8s_JW*84uV`jj)Gi7z6801oCdj!oCmprTmre8 zTnG6f`2plQatq`JQV8->=I3_uJE(V&KS1syA-4o1_lNTO=Ih9a0bEJrV`-0f`3rh_nJpq_!Xx3B5L?4j{dy z&LDlH?jXxay+Br!`hlz>C4&rKt@SU zkWHlwkS(NlLH=KDeF;ERW!L|6@7!5sHkMfg6@v;Ajm#7j6$K4k3KfxZVGu}3+%cE2 zhQ$q6ENZmOFs;O_v^2ETFtx;`v@|WP@O4Q_(>^V&?DhXU=U)4I|L>DB% zxa0vcO-Gje1uWSC`9v$5h|`@0Cg^U%G*(BmSfab9HQK9d2Q1Yk0%zzR0?yWT1(xZ0 z0_W(c`UN^_%3_wQb=3449W{N0j+(womyVRRoMs)TSindy(^A;%csPBd&A#H@W;< zoJJ_rbVWHFKm{g+S{9@k zd=K&tFuRs; zR5QS0gq&pw0cJDiTAYwaSX@A#B@$R@i3X0f+zl+T+y|Uw3EU4VwR8f`up|R#TY3P? zEHsyMEVT3%SkhowY{>vtb3bYn_*>(f*IA!L%0pbv5l(rGQ=a6Mr#WSll_ugGmw(AR5$UfYWdQSMrImS;@fM@7 zkv~vuRH%tD#74f)!5D5M#~EcSMQpTLbH08?$1 zz;qi=mW{T07GXg6Y}A87+X6(7wJiab*q#MWvXQGPwFM#1u&n~lwygn{* zC_8Nb0yfxw0PeM20`9l{0z72<4S2-%C-9g}L}Pc@=ome1(?f2u(R`n?Ss-7u*@2gA z;lQglFYvmpHSne_26)RB2NZVl7K*(+WK+Q25fozY0(96@fZ_IDK##pIFv{K^7;Vo2 z#@dGh4me^~7lkBenOYIwgGdOm({T;|<_AS6U_U*t0_Fcfm z_C3IA`+i`J{V;Ha{R`kK`w3vJ{WNf${S0uuoz}`m#!dDM0hqSfe*$i^lV96mr#0VT zzY5D<`>(+L_CJ7!?6-kO>`Gfqf!z!|X}1AS+rxlOb`S8Jy%q4H{Vw1o`@O)c_5|Q{ z`vbt6_Rhdt_HIDoNChg6K5YY-14ln7A&y6Z4o5aH-0>LD;}`{uaufig9dBXKVjZ-? z;~ZmQNpOq@COW17JFz{9Eh!G#mZ^^Eu%|m_12Y`t^#(Y|#br6lVaayTsgdiL*B0x4 zgkup*K1VgM(D6KQtm8#siQ^UEB*!{nsiO`!!|^t7wuAgcnd3dka~#`%3miLviya>W zs~w*LYaEAwD;!6Gs~ogNYaQfc);Yd{WxeARaHFFM7}(@E58C4R5xC891-Qd;9oXRb z9k|!=Z{U6hx#U9*-CdXhhY5JhLFd>>hZXW^M<}q#;Rc>_L;){4+5#^*?g3tPv;$su zBm!?b9s=HSkarPII+m1xlbwvSDI>+X46Bj$FPt{KH1T{`_ zJ}aE$ZdW;JQP(=j$E;_0qm$g-Chq+fXITJ6Y~!R2PMW8^T*Q9PaL7qZ=^WcHvgH!T zUS+#4jA9GJsG6~1>(QW+u(yEW;Z%+%oT`iprv}BcB`%zrmB5z7aLUyQX|Vp2!l{iT zID?O)3psi$+ea2XiU{hZDT1035ep1~ytW^>Va#}k?7aM24Q z=-OG$ZLi_BuV7q-LNS*S)Z=xG>rnwVQUoo`P2A%x5wxnep-Swdhhl8G-4GXT zONWa#VYrL7rN>35NtBEBLbQvHoLCp_rZ^YvtOQqpDA7gdRVNo6!AUMUY*JjbFH&7} z;HJB1ZD+X10}gP}A)Do*y`Jr&gD2NT&SZp(&k+~7ph6dI%dsvx@k(5MV438ibF$P$ z`)G!X4(r)2+V*9x$I1WCanbHy;G#2av5VYGwTn*c8W){uD_nGbuX62xz1BrrZk>y^ z-+C9hrj0H-#W%U=ez3(wUT>R=j+q@UI&vCZw9EIp==9s~qRo8BMLzL}i|zr(T)B4z z;Kf|zKu){pv~F_Ik$TQWj_9I`JoY6QdF-n$^5NHA~>1?cZ z)7iMrO_t0(8vhprC;JakdZ^3dfh+e3G{Tn}9_MtJBJ3-Tnm&PU!T^i4M=rVrMLznSO9=a1;_0XN*x`!_2 zH$8Mh-ty4Pb>aO6Uftx~1g9I~{T{Nzdkz@xZ3cS0KLew@*MQO9o4{D_U%)u890UKK z;5Ej;=X*ndoxDz9lD87xKE?YC`FyVoO!tQ46v*&~Kpx;V0<&1oW;vHD9>JCQIAx*N zg>uGvBY`E1lh7axyO&<>&Gx#0WnMa#0&~3N!xwnTV=wlS6Rq}=zpL@mE1nfz@&v2A zv>|J~w0hThso(3p^cs01D#oyTX$-coyv<9mY<95RfW~3i(NGLKnuTHa(&QfTM#o^( z(J_pA0K?K2e}GzvcmM7K`^AsG4&WBzWM|?qafUfkh%ThZ2s3j#;bneM<8Go2>uFki zf6PgTaz+F6`94j@-{L{=*a;$b^1M%xCtCzj_q2p4^kzFShioV*PVwG&r@6^(UGA;$mu` zkqvEo5tE@Ad{ET(BKC{AUS^}J6Z^%7y<)&=($~qve(_UsJouD2+>6*RntNq}@i)v} zi2Xw9U99QEe&OxC2i#vm$KW>5p+FZB!X(ip9(+x7?@jC%1DQ{W<-If2gk1{2!!aUt zn%)Se#YXHGq0Euepfs~t9Vy~4=}0nM02-|88n4-jb<%Tb#9>n4NOBs4A(E|Yrk0?9 z^@UxF!PFpPzc`sj9D^yS((J^3(K4MlM#@RA1Je}k0jEj!ZjG8wObuxUQ-g`I_|l1E z0?25#s2O9xX;PbR@nA|wObLmpf=n<~P^@tkm>Njz7pv2WX~gQZ_(m?`kQ+$=C6O&#CrVbGMMfX0$ zw3r(;JF#DU(+7;de?i1q7=}pSbZZ7v1Bj_0bBL-FlOC_>#H6Qz)1>R&h~coXF(q81+3UbOmteneWs*)k*{#Jl za{RnZ;s>Sb%rlz3S+f&&la6H))9#V%S_8o-H;`tA;1|{X+G-K;YD5~bU;NRJm{xx; zEk09=C#HPFJhYm99W+0{n&6-Y3y4j%?KumhPrW2E% zsp-U|7l3I*i#0nj*~>J06_`ep*pK&r(n+8m)@ljrz|`UfO>YEK24eCD#FV~Ci*E)~ zdb5+#z1W}FFV->Bc8%BU#C~zPKQY-e!2!xx4B-w_ORJz$LBxLi;WRM~Wu2Cen9?EILedMw z%9OR5owz{kNofMp5T6BqC@!ZEuNBvs3&fu(xHfUT4ou|`?-6%*CoT{jx~FRKK6-F0 z6;!Jk8Z>UwScGfw8n4y3LE}9dpVe4IXccQ5t#Mn8V>IriaT=b#t}Yg^Uwl8HiusoT zb~-sRNm;mkji2dNJ$s2bO7irN&ike|KQ5rU%w) zLLEmO9oV4hdo*rj`zMc_)%0f8jagbeI)5V6EE;fx|T1&+6 zuz~K)EIg1!d`di;W%f|SR_0UUNLD=S{RR=A5~BxYvi>deL17(S%({#Dlt>?3#d<#T zLENJ2p!4Eo`_#dWV9H1A7l99ZHM2o@1yc`;!F(TJ`_jQx;1;;a ztkvS{*j_t$x2Ep_)1|eM?Ry97TB>@C#_?e6{~LpQLEt$ggJ?Y@U(?Gqu3~%kkUHim zLmHXi9Ma6(IK+$>2Yw-E$20fHu3{dNUB^5+yOFsxyP0`jc5xJ?e^e5w z$ZiBv4~hL^>ELG8BZdBYoVC+2bgKCG_!tJR&g}NCl4j|i}!|B zX*w}ppbV{J{VcOz^vP*v`^cR5wgF1;KvsNPb@63_X|WLd#ni#Y%v-aFsR8B~vM2D9tEn><~0O1#FI8W)2pzDnadjT@OUQUM5*kqq6WBRRe9Q8N&e>&yiE#mJmu zw*Qq(OzF+{(hz?!jMy)lhQ(_-v0oT+Gc}#qFCug6SbvZi{)3rZaG+65m`m&z-!Y#O zrpKB!J274%v3^Qidn`Imh(E=NE>-uDeeC1Jr^GsDn)^DoyN45#otW1I+lLHqWc#zs zum_TxIl?-E_>>sHOc~7WsDgtdh{;Y&_IS33jU+yWCm$1&J(KOjM-rbBbD7Cr%=SM< z5|dsA)=9RcDz*n=N7b>=dsG9MwqYadzEMq@-pu+lqs$4^pch8<0`qod{q0ftnqJKM z=cCFsy^8f8M%6Lj8r8_`%xh+j$&=cnoB%2`LzqghfHW?r2-w$XTnEN>$!laDnbQou zCMxoX{h}t%+(Ffe{bE;MJoqJXIxmy?d|om0&v{kMH}dM3g|87DcuAOj&1?wuneV5J zk-m85SYIY{dtWhgXI~X_PhTB#hOdzsHzwvmK64`Ff7}<(T;R)OF7XvJPxDnVKjW)o zp6_c+#QuLtRQsCQu+nFKfC_lk7tj2rFOzwTub6qKuZsB-Umf%3zDDMgzGmh#K3^ww zO_GyMPjq|&y_HvEaXq=y-*)=|+vD96&_fUC_#$~CR z-b>>&mCtA_1=3YRTa9~ZT;4~uOMO+&&s4cw95*%YkWpyX@F{Pt8uR!tsITZ zhpBqtj3%UxR1H3j%QUXlxIyElJMp8`^tBqd^=TDoT(0pNjZ^cr@-;3~IS^H=8Klu_ zg0>p>(l}q^a*fw$yj$Zlcj61x{A)DMAE)Z&8aGT(^(KvdGe{3?jVfaScR-CBG;Y#Z z%v3X$%~H8m;|7hJ?yz5t$LINYO+{;*s9tyr!wE2>|^ebT*llbxt2LKxq&$|xrupjGCs$O{DI-g(JT}ur!tRE_A#d?l`%h+ zT+2K*sew6=+{B!dBz~a+@{&@o5idygF)vRpV}3EYmU(S*!><&-F}aC(YqI!_^j*o( z!~yYXau4&4m~4dStUF?!M|jP?E2hrg5c4L&TlSA*-T`k0Z-sq3{V|^+G};fu9JC*bId1hh#c2vuK#g)-0|+t?g8$>?#JEZ-80?Ky0^MNaewK)>K2{|Ppl`^lj(WXGtx88 z^MYrUr`~hK^Npv;^QY$?Z#Qphz?h;_IGqz!M`AfVsoJhJ9NW;rvG|K-&qz+k41Toxb6=UMrp9HN<&1bl!H&9V;H4e(MEa< zZ=?;!N6klw&QcyeZ0-}?rF?wQd^A2_UL^WSPl$oi7<|CI7;nlxDYB&rVze|7A1p7$ z$I55nL*-B7>nF>^L}`VXEMYHKORL3l=@k)_YQ+j^jaVtYDqfVfiI?zghN~nYlDgi; z𝔊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 delta 141836 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

V;P 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%0DP!$Kcx}ity(V)GNUV@I#$K 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

}2Uz?KpAcu3|?p>^_A>9~eF` zRGUTew9?0GB}1_KKv!-Hs+BJ-S{qX(9eg^}O4r~1qASoJCdLDOYYTih)vs+rx@8qk zpxSQlvZJS%Vy~7>3r$v7gTfle6_xKvO;19UtYB>Jjn9=vvwO z)?O29<(tfci?U5R*0frbZ9%K7TKOu@hf%fLlTUweXwzGaG>ug`4vbnQT+U_;Z|HYmF2+Nq!vKTr-ziK$X9ElKH6 zt6Zx0I?^S{U`gBF9ui?oV@7wHZRwDd+Hnx7hi97YhtlD-%i)cR*MR!G9#f^WtaQn! z-C2Iz>^lSgy%3R68--@pPG$@5WaUiT22wJcUQ?Ap%VGZqB1Xzr^EZ@5wb5r;Z9lMu zJ^^}o$i~`fN(?MT(%9x=8g4GSPXKK*Ng~^ni)R}S6O@=fr4UzU;^o?Y>XUuUI1if| zG%}pp)MrNiTsv06-Kkg!cc)^dOxT=?lC~eV)#(P2O|hkWeBRNoPP)gYh$q0O%6jM# z(!K-Xb)uw_by0ODs6zwcqlKCjzs8uLE*`UrTxa`aQPSv+F?I6nlUnzxld69VkD^_L z>FUKgxRsG&*2y7n8?V+e$apdx=wwExl9}MnAa4TABDp|klRTjF$YP+mWEs$fWChSg zLK`XOZwtkoZDXQ^Omq*$R3Bg}4zpw(r;mfWQ}juoXJ`P>GTIpEc^VG% zA`5$kg}u&_a+B%5&Gg@8`tQ-1CPYINOuM3B1crhMa#xyy3NIxZXmth4z*oVv*HPL4 z^;bFot*>Ab0~E}05YrIKG(<9=X3Qs=X^T;?3}O{5gHB3U)Tv=uUu`C~|2i5*U!Qpe zfETD^KDo?iA@fdv z0+i^fKoxyBP(x=eNgw?nzkw7V0*HvXSw&4v*W&WZQV4Q*ATr*oc{7I|To-Y)gSX z+lEmtv0;HPw@rbRuCToUbd7BW&~>)iKsVZQfNrrZ0J_cg9?(MD5}$rUl)SuD%Ze`#Oa4QEIY0=9A=sst0&r!M@^wZDOcLYmmuh8Wu9iMND!D zlU&XuS9oBVtznusdc=bK7ACpPWA0-n)F1qV`eXEf2loEMOzCk(PkG=-cZSh24;&>g zdUOUASD1?H9?yXLCduFQWmTkO7kf zdA9Z z)Di_mOG?Y~lDVx7QYv0bQ`?x9m{yWj<_%3NOifWcYU)wb3d>T=O3TWQcFy-aYo@;5 z^M0Q)&+otf>oRNBtQ#Aci9P|Xj{XeU)du=pt$NK0mVQ+{&58WKy2;CO_19WHf z&(ON)>(D*Xe?a#~b8a{kttMi0L|dW9L(!4Isc1L!Y_u2J5FHOaADsxj7~KMTIl3kE zO7xx3YtbE{*P}C_H>0~jg);}LIXTJLoSbALoxR|3Ir~E6oP(f#=P+o3lifDaSpYlP zSqx2ah8_S~J0FI&bxwqKbWVY$JEuc4ogrwJjP2ok26iuJB{a|Z9CUzlF?5Kt3Od~R zGPJ4?~wYk3*}Rr=csHUqGv!Uqjb8FGANkzlW}O{si6N{0+L5D72$%GBn-wBsA0YG&IXq0qx=94AILq2X>xo0d#=t1?Ui07&_dw z0$Si&1ub&D4jtp-%rVZz*=4+I9Xu0V8=#Y2TcFci??FQ|Tpt2uu07CaT=md7u75!1 zyN*E@x;Pmxah-x)<@y}D!i7~!RJ*={y~cF`y4H0Wy54may214;bhGOQbel`y-R{)+X zuBOmyt|aJnR|@o|>kg=Jw})!(G^ov;35|4fadNq{VaK`eh5Frnpb72)&_s7WG}#@x zA4qW*LR-7XK-;=G=XZ3M!cKQT0?l-Dp3ibmg5ASC4cg1i6)exqDh_e;nufbM6BM{P z`4qW1-HvgyQ;&0Vl9?#&$!<>A)7-rJ8E(!5W$tIVTb<+PeVQ+eSST|rakDF}m;MdX zvsuP&lm3)g#cGS^L+M#NQe z{!fl$hLkvFXdNdDMFa|sW481-ZkV#-Sac7WvX@Mm7spEMl%6{2*(3ArkKz)wTtD7D! z!NSYMM)PuD*t}eDBfad~E-z=mI4>7jzn5b@!OMjw(aXss*((yd3wvyj;xkyv`6J26(xq4e@e%8Sdq3UEt-KR^;XSJ;u8T zX~uaukB{3d!iHBI(%6`$ti{$PfevtF5(%gi%gE;)0&9Od)9T>Tb$IhdDtIVVUu9Hq77co*qgnavA20Shwt=q-mdd<0^Z~0+`iw- zMfs4I)6Nkur|08d%;(~im(%%KFK74$FDL2qUQW^%y_~i$dpW^h@p6K{=EamB64$*i zqKKQ`P_)g*9ZsZ=+YOhG^H-dY^OxVpIWED+c`eb$Wi;8x#W%&rCA+mx zF6B}?`nVjY`?wd%^l>)K@^QNB;p0A_mygq0D9^{$dVr6s^$;Idyy3oP&;lR#Cq+K4 zgkyZE&~ZMljpKcsB`5m0W={5Tk2KB4UDFI7cTHtJxtsFI-IR}er};kaofi7IelGEG zaj)`mabMx%a*sC*bE#P4<5IEK$Him4kL&#gAJ_ZMKJEav`MA99^i?BGo$od19^aeL z{XQ;ThkV>Y9r1D3blk@^@RW~h#91GAiw!<5$LD?AoL%&B$8g!l9m5qLcM{ipA#M$> z`?y)S>Ep&h__;yQ{M=&L{M=AP`nkDq`MG_F^K+x-_j7ZW;OCw$(a$YLvY)%46n`bO zwVykvwtl&r@^g=r?&mHm)6ZQ~mY-Xm9)7u-@^=j(bDp1Di2;6YFNgTKLmlqta$Mk- zJ6b;%r!jsmpyT{pOvn4V;hgB__HweH>-sc57pED1u8?JZ?wgrg5#Go5uBiZpJtGxf$Q=uSe`QKlcPX{oI(> z`ME;w@$;MW{r-0_s~_<{i%Ivme>3b;{_W7S{tuuH{@u{?{{7I4{!gHn{hvaw_)kKw z`On^p`Tx5A90E7}-$F%TIA(h-Fqm_G;1kaIfkqVV3Y>%;7x)zFmv(}*69YVPa)2jG zkttgTzJuL1a0S{?YI9X!ZcxV1~5I0{qVA8EMZ!<lFMRPWPZB97be|J#{IFISUpT*1F-~1bc;zH2@BYepqUr^6Mf0hqaTu7H+rsQ{pdF(FN{7QX)d`WnN;GypJ)a}c1f<} z)yxVoLfP1<20SSIUCE$m-j$EIr@tONhFd@e#XVgc!GoeiGAPD}y4o#F@L~oT6tlY~ zfy|gH{W^o9u4^vBXGCH*GALf`Rw~1vN(M#WyDMdQoMcd3yt_t*O<816lxNk;@OzRB zHzIscgfg;e1V#63yOoX%Niud*^ zFV%tZ$AmCsLXrt{jRd6zD?wI}42rZKBwMV;h~Ew7C?9twgQB5xJ;?MVZdDJG>AwaC zE5CHMM;H}|!1$LnfrB;A1(}gNC_d>?Y9u5XUulF%hHF4x02vhj>_M_K?*<1ele*L! z@g#=%JtX5BL7ulU1cL?HBXtMKa1xlKEa*Z8#VcJ>jd+srxki{|xD;eX$e=iM56Kf% z8h$b;V(uk59BT}Jhz7>xy(A+VjR-O*7T!zB;Tff$zzzmQ=bj|fr%FG1v-H2ylcc{C zBTUwWS0?NFXNl#k{y)P+;fJ%(eRU9 zlnJ>cM~~t(DhRS%I~WwHy_*~URQf~g{W4;4Z<4(~+enbh1c)b@k(5nq_)De#hu$Rp zl_0N_f2+HwKgATjP=!77{Ng!J$)$o(_=Ne&>;Zh?^GF%2SUnR&3 zAUO|^yufNBzQ%>|&l=Ymj(U(8NM<0Jp}~l61exCMX1Wf2$e`#d$>Ex6_{pG{)rX`% z7nFVAZ)8O)-5CEYs8VJ)EXk&dWI5%6$Yyft~OX_aJRv)4GNE*-()b+ zU~_}`eFRydQZOi{0I{*dT5fW{e7Iv|w}@wMa`abrNP z3{M?M9u%(+ES2GRB+rP?2Ug1Pza$T0*Ia|J?7Y$+IjA0FK9U=nMj2k#iR1>w9>DmQ zb2|)fy_$pUJS7H8LAfuG@wX4E0J#~h1S7DssgeGSLAyZa+ik?xOaI70UmM}nCM6IMq@~g44;w2jF;ai{rUN+iHtwcpJai#GK>?-aOr@?=8Uh%x8F*x%C86Igq6ez zD>XA@Pu7i8gSnubDh*Z|tdYb$2bq!VqU_I4ZNY-`^K(JA9Le}b@Mm#gD2d@a)P9>D zCWGSNLsRu|NE$&AJ1iRxo|u$#vrN!xSS5%(pCmhLjr1QFMq9@D!i6aWgGh*)jB>k!Mhs59l8fU~)l8ne@g!rj|WVlp@6Gm1_ zb{<(HIecWjjsslqDkM+_K zKdJ#_xDlL$?^Nuqb!LO~7aJ@EgQC-@awA+R!}<9&;Ll?EC^9JKkE%DqWKe7!)d(&Z z$44o5=;hh(!1!M-J|C3|$8z!Qs9eb(N0mxmA60H7tdwD;aFr3Rkzq$+y<}`*qhvy% zy$#E0QJ5;(rZ87Bt*}%wtFTfMJ0r>5!umELW*Ai1C>SSfj=utxH9VNs}~-V|j9 zl}>uN!JtUf!-)p73>FzIGnm~)PgiX4T&5mYx*E*VS!Ph_u7^X}hEZ&=+~6vM=W_If z#XWTH>Z$Xb!REd6u+m#+bA#Ciiw%|=Ts6cfM`tMET)yte9;!2Iq|PFPWd^Ga)){R0 zGk%nwzT9B7!CeN=8B_}Obj3wRdP%JRs|?33gXat?#d^Z#2D1!i8!R$dX0Y1exzTz) zr9|hdQk}aD);*$!8^{obRnauvQD(5(VBMeo>3V#%!8(Ht1{2YVIXue@)>Y`?27^Vj zjd+7~bBuUUj( zig)yI*$$o62J!oY`jr~YGFW7=%wYAO;oU}lgLMWQ42sYmqdkKA-$(ikVTG0ja^RzO_Z_}zJ ze@v^Byq?w|sifoAB$3XMo+ufco+X)(UL@Hfy-c!AD7{)5Y3X&6S?LXux#@T&6$%)X zo+vpYJxg*-dXeOW^fJk*>D7{<^g78o=?#*L(#0j_ex^BrZU5eR`Q>XiIvv zG(JeLliZiyAbBKRe8&P#rzc8&m7XQ}U3!t^we&K{KhmouEg5x^pQklQIy3MqqR6kL zCrbJ=vLt^@E0VmPR{aCw@%*cdIvS#7MuTLB4DlnwnHh;!$$K)gB>QC)Ne;^>lPt=( z)xIbx9mmM1MM;G?ik*v-#yXcKJ&2>!8BTf_oB%!s{}k9yzDd+N}a_7rQ zp$f>e&Xq~CovV@-IoBjD#u3J`499ZBy$r5I+-mSO95p!B;n;+@3(nV*uHyI^$1f=G zHx&FkjvF}s!0{g(CfD*LD-OGBSyBWT1-1h_fOol;6(yy?=mJMq9Czc$MmPsYPuP83 zuP61#F%otmj$#}oIPhR!Yy0eNq=d6@Eu6PStkpX-ZN;<6~yWtd2Pm zb2jE;%#D~9v0Y*dVjqv46}vF@VC=Ejws9G8BjO&43&zciTN(Fm+@ZKn<3gTR-qqfH z-tWEt_D1-c`)>E$>Fe(6=X=mM*SFla*0QDB!_h~)i2sJ)6~NEa18oD{0|lW#NnmndZeUm7T;M|B*T5eEt%;*aph?Fj_ctkOQr=`~ zll4vZG&$7dXp@soE;sqDi5l;WZy%o%pBq0Yepq}#d}(|resTQT_#N^4;=hmoJ-$Uk zuLM2;)QxBU#o{^NP4L>qco8Ww;OPs`09^b~;TOa448I~gxhhmFZV{!TshA)Vu@y@} z%M{*WQ-#R8I}v*O$Yki+`%lB)Y5?_LeI3xb$Em?x^h|0^O?ilVqm;Vip>fF7PWm4m zH6HfcBdKFYP?NKm=J&hn=?}GMAg-9YvJG{W)C5`3{ddyS$Nb;^p`YO*#gxYqq3=~p zfhx18G4Cfs|8Y0dua?@bG6f#nTT4bHkNvCL3na+)A-O=qL;WR`iSq*Mn8#u z;y2MB-x>@M{}BW6yV`?;Q`4lb$X^G0T<>?GkGxn5-P3I+R4;S8j1B$0i0Lbs*|DF+9hOD>lD!M|rAPKc zm-J*+79BYVowxG{G(VkH2^^;XLWo-T5j{VCbR4QyFz;tM^lv}%8FbCYFQ7x8JP+Np z@e;H&wDAfsef6)wO!Xkdz zMO{6u2|RhvB|=9Wx(yl~Yz=*X2P^u`*7mU9_>{TopQG+CV%6`EZ8`oUw&?mPtnR4y z=)d

e=lpxYzf~z}_N8Z;^NLuso$l+BMQ{KZ>ziYtvD5lI#b`vO-H`g@!-G*a7kc z3IF8v-I&-7DX+=Ob*k+Fd+Qda>AQhiw24}X%fMde>NExp%%>jNOdWWvH!|E49sr#j z9t!t?|X_(2e0T=wns0py3ziLs#X!03EWV3i?GmX8W%Oghy|`dGb!b zCH3fNrd(Riisod{{<7*7lu#hM^O{%Jz;4r>{?K08ljBb@sroAGtE;>Jn@IG@-VM;b zd$&TfkL`rs_9U-Z&-K{*Ouy;zUGQw3xDVQQ;wRAQ?OF6ldGDh~AA{$%bb5Z8MeTP# z&ox+{)mbPE&9_g7SwcX}Mq4A^%|B=@#lhY5z<1`9X3l=yOTV5m|)Z^Yx*n53}#4vZne#YAT15K9GVve!$7} zAv9<=)96D>A5QwP+|%zG(yVy;U(jRnWco0!d6Ma03sTRVqV71gi~WD83?$5^YjS_l z2_sd`Yqj#kBVXq5`&jCXVN9bJ=Q=|>^$f4?!X{p^?K2DV>ZjD_xF)@r=19-T|F0kY zUoY;`BP?i7H%^v%=ApCc(dWkt@{aD6#T}9-)^q*+#CmJ#Ew@Ydc0G;W5B^_`kMcu8 zpShaJ>(d+db=k9F3yqWm?6{nu4#`<>St_f0^i5vz)CDoP;+J3XLY=t@ z(8wolg+8p^hx8vgS6)@V}oy!8aUAkNvFva`>UX)0uw92%01yl-9(66p=AU$K7m z`n8TP=4mdCr2gH$Z7)5iZs)y!=@E|UR`T{mZs>{9u8w7_-nvWV8WEYte(=O;rtfl^ zm+Dv%;UvqYp(Z4ePc3F_W7k=rfGAQ>3hf>L)S>AERnHq zjAm?aIrZK#4{1UoTh{vHxlA;IE^&4;bxZ#eRBN3aa+PwbIlF}ZJ?~S!nN&@t56fBo z`|hPk|M%&+-y}}Vcgf{ydp$)NZIy3& zLkTt2ZWAui462HI#O>H&-wU;gd$kn!dqP#w6Hmleu#-%Mzn9h${#>Xkaz!indqZua zx7Hf|K2R0=%{$=FgW{L2v^Mbfg{s(t-U)v{s0|OTZVUfQAwU(wL_4_N)7rze1FB*h z-vOSTT1R-^hpOT}>}71?1FaK0A3{}ezeq!IBcL`sDJvcR`=P2BB{JZ7)Z7`KiBMG( ziY`c51ht8;%$e|i4OK<42z5ooXwelB=gr*^@eNeP459o4C!= zyB}P);~kcGVIP_ezffq&gC`ZLiigo)Hqp|;G_9a`w<@;pHu0`y06ZI^Dn7^<2%RSe zqjK}b;My(2O;%gzh-t5aCuKra@u_Ja>|;`vg=K|1=$heG;nTkNG})4qWn2UUefy8zn@#gp8%M%aF+DgxSf zu$w?t5wCp@I{~VSR@#rSTSHaRP77TH+G{_<)d7lkb!xxBz6**Mz-hn1?hI8$7wvc0 znNU@9)o#G<235t~+8?m9psE<6{RehFR24(=95^6lm5E z0wXmm0*`5S*pEY1F-ePnJsGNsDOwclsZdosp*dksgQ{Y>=7t8fSm+GR1OHP{RXnZv zV27ZpDANM4%b}{6sl~&tfa1+)+AYxMv}P(^BK16=iiKKpL@$Ek3H@3U>=jVF@Iz|> z`xU4vR%*Ayu7={xc3LXzSD~s{t+j%^2C9nn+8xlhv^(K>8;aM8Xm~`7*Z@^Ut=0kd zHmEB0Xm_c2#QR`i%?ZGYWc7)LGflzZ5ZsEP*wb)-3R;MP`u;AJOZ`~ zMK?E(gsnkUahJIecBc@aiZpXE0_jk6I&%r^&QMikn#aQK3PndVKM3tb7%?zCFUm(7z0(s zSo4#xAAn+dG6!LggJK#oKLz_CDBkaDX1ARJMVB;}!=463zcE+9UI9hFF+U6Y6)5_R zc{c27DBg91hhi&YH56}6G0$T`ubJl|@Va>c>^Goz1G)Km*z2I^Q07Ij--4>*ZS!K- z??CbH8}m}=esdU}dMNsec^T}3Q1lh^a@e0h(O1kb!#)f}Uoo$QeH4nmVqV4me+)op zF|S6%2`D;?`8C)lq3A5;H(;NJV!kuiz&-<2#aZ(@*q=jH@rC&<*k3|b(O`ZD_Bp7E zXHC5ejj(KjClacPD9aYu(NI<7S!&t;`vQ1#jb%F``a@MQz_J7OK&UDPS>A^|7^;d{ zmJgw`ExX{E164((WjA!LWiND#Wgq-op{jV_QV;tBs4DhZ4#M6KRYkq!6W9l!su*KE z3=NINp9qu zK~?d%^=s%P>o?HJ)(g-lt&Py>*6*M}>-W$Z)*qoyS+643(;)!0u>Ood8C1p7Gk$?R z6N)9v`Wx(Lpm+zR^>^5_plAc@4cK#_czvMt59o8&|G@J+6jK=|87Mr%BBZGz%PSZ{&76^d8uSewD#4#n$Z@Kjkm5*3P9^I4Oic3X=Kz+t=H z6ffGFGVm#7M^hK9`2UC)CgzHUsFu-l#aB_SqmOG{Cv5T*PPm};oG@fUhY1)1J;Ps& zGj$J@#=aT*L0qz@)DsLS39ba8;P>lo_|!~^5M{gY>7w$bIModw^Wh~BV@{ZaMOk1v z)lCDRH@L{)VuMR1txDL``dOx1W;*-mywh=X3MC-~yOECNWFudQMvkL6j|JW1xNft8JsqD)<~lyK*%0pI z2;WP8Uq|=jWPeBZ?&Ls6`yD*NV1xON>&F-#=J-PLK1bbq43BVZk{sz6wu2QZcCclH zQsU?wl1(xeS7^mkCmwX1@5ZJoMS)B(4;3O8ph9FQqOLz#9&v0h85McmW(S>-pGqE! zbnfJppNL!mW+^8lKa{ufbfkVu&qRKMuvz&$vbv`O75g$W^ur$3@Lc41$*&{X)E4C% zgBJ`oMsCQV|GUWU-O2AG$DAO4jMT62YNURJKSzFxrnM-)ME+zWe?!H{-y`*wx?%8- z$YHYO{u7c$wxUG6Et|{~bxjsvjtqh-IVZ(dIT8x(FzaQ|^OEmsp|0X4Df^P`14Wzy0 zHG$`n=yoRjDQEyJU-)Jbfd;k)>?252#o-RS+gf}S%6Jhz=VZU3qPa{Jae%F$j zkHFv7r`yHIe9^GSz+dgx{XU$ys+Dg43;qGEb$bJB8-9C*TOo3)q%LKfY_9 zjYJy;>xu40#M%dRyA*cyle(=I3Xv7m?TN52&eHAqu-nejZ6E9_dv*H_rom**6L&2_ z3uWteBy2z0oc5<3$`{EEQEa!ikS!5l9ek z;>TF)aIDAi7LK=Zyn|x{ezNs0ezLU@$0pGXPy1;mwushZE52v0#j#D~<5^ev;ywI8 zY=;;rcH(#+#|Jn*#8HQ17mkl`?8dPN$6g#Cbj|wxAvE4t%(x8$EDpH zUh2{|y)n(L*~4E1G<)r;CfZOn-0T+Zo7&i>TCKJA%NE+F_S#){YTMQDoc7wIVNVC` z*4i!|v^zYtlX__bZMAy`Xp<6LvtRhQ>PqU2p4I&xIoeuzdV9Fn1a0qawwRgxiV$i{ z#R>f@5)Zd-DqKx*kD3azLqT+Hhex#OYO}zCK z6B_St-z=~^@UHa~*6l%3%_ zr{i?{!v)i|MarS@57V`l%8_s&sEx88SDFf|CuZjHa9L3MIp%Dv)#k7{+_^F33u4N) z#mqca`|J#Sw`^rmG39aLc~5I6YZrvH+Z3fCytzzERL+M_lxeA+0-We*jMa8av@NET zHjazo*mCVcpM;nSezD3G364Znb-BwG_e?vRt0GbVl97p#R!dA-gUuFGUS_k|JTYaf z6quS&qUB|lmxb?{skK$g!c%8z&s&RP%3U$#9mA0oTJm3kvJ%bxJKfL1^?V2(?yy00~@!IgwXK`oN zhc7*=-O^;IYEBd}6_vI`#a*^NX4W!0FRL=9ye`~)mNunXa!dukaJ)V{(hF$6sL-ut<3-`XKP!OYqfXJ!Ml%?sqi~i>Il<`P8BC}32d!z4vTK^f zU7kl7Kwm-l+zZ+*%~*qq1iR(0n~5MRgxd;94&Sm^YZpppq7=%r^lqROQF^ErGu`h} zw$O8ma-L_ohAWx?qXH@2Gb1T3N*u*cNuac)bflzHWE)(CRlXD@&0NBoJuov@i7At3 ztz??@jH#pS!8xYUSO6(I1SucF6jvy`;0i&}D6Bz+OSM>-YO@XHmakHy(WLGQ)}f+f zICY8EG{zycn0ws0Huo46cUn#*B}+7yVoTJ6$>HEqZI!KnA@|IJaPo^2(sDcrk%0l>e=OHpd1S3{Z`tL`hs(U> z!^6=lwCT#_aODcEjdCTtZH3mpn+^4``BAe9n`&i!?0!F}`t6urgo>`6i&|f?C7KkQ z8dLVNEUF?wM`AeTWv!p1C>qf=4APF_vX`}%#Y-?GZ2~g_#^w@fEc}~ip+%UY@GlzM zZ@67i`u}KbJu#R38N~G?lIbGxI}?AUL;JuEN4%m9!6++wMe7outk)$4<2t5%JqDyb zQN;v?fxSMw^%X5EwKYy?^G8SHvT&t-zkbDN<%;2$vHa0Cq1qT45N@_o^LU5Yklv2F z6)CJpjXK%f73tyLE43CFhZ9$7>ER74wRe@Q@aSso;f{G$o^ECyW)~D=gE|~Gd!oq! zpW_yX1q}xW6S>Pm5R#s^pqdTIfM<#0MJn87};ha_4tq~KW61AAJXA>~G!xL9& z8(XxsG3R6Gn(`K)Ds9m;?ur7|%PJIiF6?m6SG8rR+__h^r!W;1uGSt-$TQp6D@?dL z4c16=3VK3;)ZyW8S8I)0yEg4R)*f4Y%cHL6j>XPMaC0y+`w+=^NwsgTK0KG3;xm+vhT{tAUlf3$RsFrq|T(Js8mZ6091g4Z74R4M7T?kkobl|^l> F{|6#JGNJ$g diff --git a/Bin/Debug/VSoft/ryUpdate.dll b/Bin/Debug/VSoft/ryUpdate.dll index c7a4776b7e2acbcb64458146bc56f4c00bc44dce..12328e13aded958e38c64ea78bfc7a411e1e74fd 100644 GIT binary patch delta 68 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 delta 9265 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 hnC>Qb - - - - Debug - AnyCPU - {8EE4505A-7D76-4209-85D5-274357A81FB8} - WinExe - DyLine - DyLine - v4.0 - 512 - true - - - x86 - true - full - false - ..\..\Bin\Debug\VSoft\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - Form - - - Form1.cs - - - - - - Form1.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - + + + + + Debug + AnyCPU + {8EE4505A-7D76-4209-85D5-274357A81FB8} + WinExe + DyLine + DyLine + v4.0 + 512 + true + + + x86 + true + full + false + ..\..\Bin\Debug\VSoft\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + \ No newline at end of file diff --git a/Source/VSoftBox/Properties/AssemblyInfo.cs b/Source/VSoftBox/Properties/AssemblyInfo.cs index f98556c..6521475 100644 --- a/Source/VSoftBox/Properties/AssemblyInfo.cs +++ b/Source/VSoftBox/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2012.0801")] -[assembly: AssemblyFileVersion("1.0.2012.0801")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.2012.2701")] +[assembly: AssemblyFileVersion("1.0.2012.2701")] \ No newline at end of file diff --git a/Source/VSoftBox/VSoftBox.csproj b/Source/VSoftBox/VSoftBox.csproj index fe07296..86f232a 100644 --- a/Source/VSoftBox/VSoftBox.csproj +++ b/Source/VSoftBox/VSoftBox.csproj @@ -1,93 +1,93 @@ - - - - - Debug - AnyCPU - {CA619284-2939-4A14-9525-30FD7C04ADC7} - WinExe - VSoftBox - VSoftBox - v4.0 - 512 - true - - - x86 - true - full - false - ..\..\Bin\Debug\VSoft\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - logo256.ico - - - - False - ..\..\..\..\..\公共代码\C#\公用控件组\Bin\Debug\CommonControls\.NET4\MyDb.dll - - - False - ..\..\..\..\..\公共代码\C#\公用控件组\Bin\Debug\CommonControls\.NET4\ryControls.dll - - - - - - - - - - - - - - - - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - {13c45e68-2da3-4c9e-9bca-e63d0fa9a760} - VSoft - - - - - - - - + + + + + Debug + AnyCPU + {CA619284-2939-4A14-9525-30FD7C04ADC7} + WinExe + VSoftBox + VSoftBox + v4.0 + 512 + true + + + x86 + true + full + false + ..\..\Bin\Debug\VSoft\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + logo256.ico + + + + False + ..\..\Bin\Debug\VSoft\MyDb.dll + + + False + ..\..\Bin\Debug\VSoft\ryControls.dll + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {13c45e68-2da3-4c9e-9bca-e63d0fa9a760} + VSoft + + + + + + + + \ No newline at end of file diff --git a/Source/VSoft_Dll/Config/Soft_Config.cs b/Source/VSoft_Dll/Config/Soft_Config.cs index 5fc80a2..fabb3b9 100644 --- a/Source/VSoft_Dll/Config/Soft_Config.cs +++ b/Source/VSoft_Dll/Config/Soft_Config.cs @@ -22,7 +22,15 @@ namespace VSoft.Config ///

/// 显示主窗体的热键 /// - public static string ShowMainHotKey = ""; + public static string ShowMainHotKey = ""; + /// + /// 是否开启鼠标快捷键 + /// + public static bool ShowMainMouseKeyOn = true; + /// + /// 鼠标快捷键 + /// + public static int ShowMainMouseKey = 0; /// /// 单击打开软件 /// @@ -39,6 +47,8 @@ namespace VSoft.Config ShowMainHotKey = Stor.GetAttrValue("ShowMainHotKey", "1+88"); OpenByClick = Stor.GetAttrValue("OpenByClick", false); HideAfterRun = Stor.GetAttrValue("HideAfterRun", true); + ShowMainMouseKeyOn = Stor.GetAttrValue("ShowMainMouseKeyOn", true); + ShowMainMouseKey = Stor.GetAttrValue("ShowMainMouseKey", 0); //low_count = Stor.GetAttrValue("LowCount", 10); } } diff --git a/Source/VSoft_Dll/Config/frmSetting.Designer.cs b/Source/VSoft_Dll/Config/frmSetting.Designer.cs index ea82e54..2fc5b48 100644 --- a/Source/VSoft_Dll/Config/frmSetting.Designer.cs +++ b/Source/VSoft_Dll/Config/frmSetting.Designer.cs @@ -28,152 +28,196 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSetting)); - this.ChkAutoRun = new System.Windows.Forms.CheckBox(); - this.btnCancel = new ryControls.ButtonEx(); - this.btnOK = new ryControls.ButtonEx(); - this.chromeTabControl1 = new ryControls.ChromeTabControl(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.ChkOpenByClick = new System.Windows.Forms.CheckBox(); - this.hotkeyTextBox1 = new ryControls.HotkeyTextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.ChkHideAfterRun = new System.Windows.Forms.CheckBox(); - this.chromeTabControl1.SuspendLayout(); - this.tabPage2.SuspendLayout(); - this.SuspendLayout(); - // - // ChkAutoRun - // - this.ChkAutoRun.AutoSize = true; - this.ChkAutoRun.Location = new System.Drawing.Point(6, 9); - this.ChkAutoRun.Name = "ChkAutoRun"; - this.ChkAutoRun.Size = new System.Drawing.Size(108, 16); - this.ChkAutoRun.TabIndex = 1; - this.ChkAutoRun.Text = "开机时启动软件"; - this.ChkAutoRun.UseVisualStyleBackColor = true; - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); - this.btnCancel.Location = new System.Drawing.Point(541, 460); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(79, 30); - this.btnCancel.TabIndex = 22; - this.btnCancel.Text = "取消"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); - // - // btnOK - // - this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); - this.btnOK.Location = new System.Drawing.Point(456, 460); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(79, 30); - this.btnOK.TabIndex = 21; - this.btnOK.Text = "保存"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); - // - // chromeTabControl1 - // - this.chromeTabControl1.AllowDragTab = false; - this.chromeTabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.chromeTabControl1.BackTabPageImage = null; - this.chromeTabControl1.Controls.Add(this.tabPage2); - this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default; - this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25); - this.chromeTabControl1.Location = new System.Drawing.Point(5, 2); - this.chromeTabControl1.Name = "chromeTabControl1"; - this.chromeTabControl1.SelectedIndex = 0; - this.chromeTabControl1.ShowAddButton = false; - this.chromeTabControl1.ShowCloseButton = false; - this.chromeTabControl1.Size = new System.Drawing.Size(621, 452); - this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; - this.chromeTabControl1.TabContextMenuStrip = null; - this.chromeTabControl1.TabIndex = 23; - this.chromeTabControl1.TabMaxWidth = 100; - // - // tabPage2 - // - this.tabPage2.Controls.Add(this.ChkHideAfterRun); - this.tabPage2.Controls.Add(this.ChkOpenByClick); - this.tabPage2.Controls.Add(this.hotkeyTextBox1); - this.tabPage2.Controls.Add(this.label1); - this.tabPage2.Controls.Add(this.ChkAutoRun); - this.tabPage2.Location = new System.Drawing.Point(1, 29); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(619, 422); - this.tabPage2.TabIndex = 0; - this.tabPage2.Text = "普通"; - this.tabPage2.UseVisualStyleBackColor = true; - // - // ChkOpenByClick - // - this.ChkOpenByClick.AutoSize = true; - this.ChkOpenByClick.Location = new System.Drawing.Point(8, 63); - this.ChkOpenByClick.Name = "ChkOpenByClick"; - this.ChkOpenByClick.Size = new System.Drawing.Size(228, 16); - this.ChkOpenByClick.TabIndex = 5; - this.ChkOpenByClick.Text = "单击列表图标时启动软件(默认是双击)"; - this.toolTip1.SetToolTip(this.ChkOpenByClick, "在默认情况下,需要双击列表图标才能启动软件,你\r\n可以修改本项配置,来实现单击鼠标启动。"); - this.ChkOpenByClick.UseVisualStyleBackColor = true; - // - // hotkeyTextBox1 - // - this.hotkeyTextBox1.BackColor = System.Drawing.Color.White; - this.hotkeyTextBox1.HotKey = "0+0"; - this.hotkeyTextBox1.Location = new System.Drawing.Point(113, 31); - this.hotkeyTextBox1.Name = "hotkeyTextBox1"; - this.hotkeyTextBox1.Size = new System.Drawing.Size(244, 26); - this.hotkeyTextBox1.T_Key = System.Windows.Forms.Keys.None; - this.hotkeyTextBox1.T_Modifiers = 0; - this.hotkeyTextBox1.TabIndex = 4; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(6, 39); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(101, 12); - this.label1.TabIndex = 3; - this.label1.Text = "显示主界面快捷键"; - // - // ChkHideAfterRun - // - this.ChkHideAfterRun.AutoSize = true; - this.ChkHideAfterRun.Location = new System.Drawing.Point(8, 85); - this.ChkHideAfterRun.Name = "ChkHideAfterRun"; - this.ChkHideAfterRun.Size = new System.Drawing.Size(132, 16); - this.ChkHideAfterRun.TabIndex = 6; - this.ChkHideAfterRun.Text = "启动软件后隐藏自身"; - this.ChkHideAfterRun.UseVisualStyleBackColor = true; - // - // FrmSetting - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(630, 502); - this.Controls.Add(this.chromeTabControl1); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FrmSetting"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "设置"; - this.Load += new System.EventHandler(this.FrmSetting_Load); - this.Resize += new System.EventHandler(this.FrmSetting_Resize); - this.chromeTabControl1.ResumeLayout(false); - this.tabPage2.ResumeLayout(false); - this.tabPage2.PerformLayout(); - this.ResumeLayout(false); - + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSetting)); + this.ChkAutoRun = new System.Windows.Forms.CheckBox(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.chromeTabControl1 = new ryControls.ChromeTabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.ChkHideAfterRun = new System.Windows.Forms.CheckBox(); + this.ChkOpenByClick = new System.Windows.Forms.CheckBox(); + this.hotkeyTextBox1 = new ryControls.HotkeyTextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.CbbMouseKeyShow = new ryControls.RyComboBox(); + this.ChkMouseKey = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.chromeTabControl1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.SuspendLayout(); + // + // ChkAutoRun + // + this.ChkAutoRun.AutoSize = true; + this.ChkAutoRun.Location = new System.Drawing.Point(6, 9); + this.ChkAutoRun.Name = "ChkAutoRun"; + this.ChkAutoRun.Size = new System.Drawing.Size(108, 16); + this.ChkAutoRun.TabIndex = 1; + this.ChkAutoRun.Text = "开机时启动软件"; + this.ChkAutoRun.UseVisualStyleBackColor = true; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnCancel.Location = new System.Drawing.Point(541, 460); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(79, 30); + this.btnCancel.TabIndex = 22; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnOK.Location = new System.Drawing.Point(456, 460); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(79, 30); + this.btnOK.TabIndex = 21; + this.btnOK.Text = "保存"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // chromeTabControl1 + // + this.chromeTabControl1.AllowDragTab = false; + this.chromeTabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.chromeTabControl1.BackTabPageImage = null; + this.chromeTabControl1.Controls.Add(this.tabPage2); + this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default; + this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25); + this.chromeTabControl1.Location = new System.Drawing.Point(5, 2); + this.chromeTabControl1.Name = "chromeTabControl1"; + this.chromeTabControl1.SelectedIndex = 0; + this.chromeTabControl1.ShowAddButton = false; + this.chromeTabControl1.ShowCloseButton = false; + this.chromeTabControl1.Size = new System.Drawing.Size(621, 452); + this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; + this.chromeTabControl1.TabContextMenuStrip = null; + this.chromeTabControl1.TabIndex = 23; + this.chromeTabControl1.TabMaxWidth = 100; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.label2); + this.tabPage2.Controls.Add(this.ChkMouseKey); + this.tabPage2.Controls.Add(this.CbbMouseKeyShow); + this.tabPage2.Controls.Add(this.ChkHideAfterRun); + this.tabPage2.Controls.Add(this.ChkOpenByClick); + this.tabPage2.Controls.Add(this.hotkeyTextBox1); + this.tabPage2.Controls.Add(this.label1); + this.tabPage2.Controls.Add(this.ChkAutoRun); + this.tabPage2.Location = new System.Drawing.Point(1, 29); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(619, 422); + this.tabPage2.TabIndex = 0; + this.tabPage2.Text = "普通"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // ChkHideAfterRun + // + this.ChkHideAfterRun.AutoSize = true; + this.ChkHideAfterRun.Location = new System.Drawing.Point(8, 115); + this.ChkHideAfterRun.Name = "ChkHideAfterRun"; + this.ChkHideAfterRun.Size = new System.Drawing.Size(132, 16); + this.ChkHideAfterRun.TabIndex = 6; + this.ChkHideAfterRun.Text = "启动软件后隐藏自身"; + this.ChkHideAfterRun.UseVisualStyleBackColor = true; + // + // ChkOpenByClick + // + this.ChkOpenByClick.AutoSize = true; + this.ChkOpenByClick.Location = new System.Drawing.Point(8, 93); + this.ChkOpenByClick.Name = "ChkOpenByClick"; + this.ChkOpenByClick.Size = new System.Drawing.Size(228, 16); + this.ChkOpenByClick.TabIndex = 5; + this.ChkOpenByClick.Text = "单击列表图标时启动软件(默认是双击)"; + this.toolTip1.SetToolTip(this.ChkOpenByClick, "在默认情况下,需要双击列表图标才能启动软件,你\r\n可以修改本项配置,来实现单击鼠标启动。"); + this.ChkOpenByClick.UseVisualStyleBackColor = true; + // + // hotkeyTextBox1 + // + this.hotkeyTextBox1.BackColor = System.Drawing.Color.White; + this.hotkeyTextBox1.HotKey = "0+0"; + this.hotkeyTextBox1.Location = new System.Drawing.Point(113, 31); + this.hotkeyTextBox1.Name = "hotkeyTextBox1"; + this.hotkeyTextBox1.Size = new System.Drawing.Size(244, 26); + this.hotkeyTextBox1.T_Key = System.Windows.Forms.Keys.None; + this.hotkeyTextBox1.T_Modifiers = 0; + this.hotkeyTextBox1.TabIndex = 4; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 39); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 12); + this.label1.TabIndex = 3; + this.label1.Text = "显示主界面快捷键"; + // + // CbbMouseKeyShow + // + this.CbbMouseKeyShow.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMouseKeyShow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbMouseKeyShow.Enabled = false; + this.CbbMouseKeyShow.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMouseKeyShow.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbMouseKeyShow.FormattingEnabled = true; + this.CbbMouseKeyShow.Items.AddRange(new object[] { + "中键", + "侧键1", + "侧键2"}); + this.CbbMouseKeyShow.Location = new System.Drawing.Point(80, 62); + this.CbbMouseKeyShow.Name = "CbbMouseKeyShow"; + this.CbbMouseKeyShow.Size = new System.Drawing.Size(121, 24); + this.CbbMouseKeyShow.TabIndex = 8; + this.CbbMouseKeyShow.SelectedIndexChanged += new System.EventHandler(this.CbbMouseKeyShow_SelectedIndexChanged); + // + // ChkMouseKey + // + this.ChkMouseKey.AutoSize = true; + this.ChkMouseKey.Location = new System.Drawing.Point(8, 66); + this.ChkMouseKey.Name = "ChkMouseKey"; + this.ChkMouseKey.Size = new System.Drawing.Size(72, 16); + this.ChkMouseKey.TabIndex = 9; + this.ChkMouseKey.Text = "双击鼠标"; + this.ChkMouseKey.UseVisualStyleBackColor = true; + this.ChkMouseKey.CheckedChanged += new System.EventHandler(this.ChkMouseKey_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(208, 68); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(65, 12); + this.label2.TabIndex = 10; + this.label2.Text = "显示主界面"; + // + // FrmSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(630, 502); + this.Controls.Add(this.chromeTabControl1); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "设置"; + this.Load += new System.EventHandler(this.FrmSetting_Load); + this.Resize += new System.EventHandler(this.FrmSetting_Resize); + this.chromeTabControl1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.ResumeLayout(false); + } #endregion @@ -186,6 +230,9 @@ private ryControls.HotkeyTextBox hotkeyTextBox1; private System.Windows.Forms.CheckBox ChkOpenByClick; private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.CheckBox ChkHideAfterRun; + private System.Windows.Forms.CheckBox ChkHideAfterRun; + private System.Windows.Forms.CheckBox ChkMouseKey; + private ryControls.RyComboBox CbbMouseKeyShow; + private System.Windows.Forms.Label label2; } } \ No newline at end of file diff --git a/Source/VSoft_Dll/Config/frmSetting.cs b/Source/VSoft_Dll/Config/frmSetting.cs index 1154a8c..ec9c643 100644 --- a/Source/VSoft_Dll/Config/frmSetting.cs +++ b/Source/VSoft_Dll/Config/frmSetting.cs @@ -1,49 +1,61 @@ -using ryCommon; -using ryControls; -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 VSoft.Config -{ - public partial class FrmSetting : Form - { - public FrmSetting() - { - InitializeComponent(); - } - - private void FrmSetting_Resize(object sender, EventArgs e) - { - } - - private void BtnCancel_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - private void BtnOK_Click(object sender, EventArgs e) - { - mySetting.Save(); - ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; - ryCommon.RyRegedit.SetAutoRun(ChkAutoRun.Checked, Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/","\\") + "\" "+ Soft_Info.Soft_Pram); - DialogResult = DialogResult.OK; - } - ryControls.RySetting mySetting = new ryControls.RySetting(); - private void FrmSetting_Load(object sender, EventArgs e) - { - mySetting.FilePath = Soft_Info.UserDataFolder + "\\Setting.xml"; - mySetting.Add("ShowMainHotKey", hotkeyTextBox1, "1+88"); - mySetting.Add("OpenByClick", ChkOpenByClick); - mySetting.Add("HideAfterRun", ChkHideAfterRun,true); - mySetting.Read(); - ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; - ChkAutoRun.Checked = ryCommon.RyRegedit.IsAutoRun(Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" "+ Soft_Info.Soft_Pram); - } - } -} +using ryCommon; +using ryControls; +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 VSoft.Config +{ + public partial class FrmSetting : Form + { + public FrmSetting() + { + InitializeComponent(); + } + + private void FrmSetting_Resize(object sender, EventArgs e) + { + } + + private void BtnCancel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void BtnOK_Click(object sender, EventArgs e) + { + mySetting.Save(); + ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; + ryCommon.RyRegedit.SetAutoRun(ChkAutoRun.Checked, Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/","\\") + "\" "+ Soft_Info.Soft_Pram); + DialogResult = DialogResult.OK; + } + ryControls.RySetting mySetting = new ryControls.RySetting(); + private void FrmSetting_Load(object sender, EventArgs e) + { + mySetting.FilePath = Soft_Info.UserDataFolder + "\\Setting.xml"; + mySetting.Add("ShowMainHotKey", hotkeyTextBox1, "1+88"); + mySetting.Add("OpenByClick", ChkOpenByClick); + mySetting.Add("HideAfterRun", ChkHideAfterRun,true); + mySetting.Add("ShowMainMouseKeyOn", ChkMouseKey, true); + mySetting.Add("ShowMainMouseKey", CbbMouseKeyShow, 0); + mySetting.Read(); + ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; + ChkAutoRun.Checked = ryCommon.RyRegedit.IsAutoRun(Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" "+ Soft_Info.Soft_Pram); + } + + private void CbbMouseKeyShow_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void ChkMouseKey_CheckedChanged(object sender, EventArgs e) + { + CbbMouseKeyShow.Enabled = ChkMouseKey.Checked; + } + } +} diff --git a/Source/VSoft_Dll/Config/frmSetting.resx b/Source/VSoft_Dll/Config/frmSetting.resx index 7f05ee6..91c33a2 100644 --- a/Source/VSoft_Dll/Config/frmSetting.resx +++ b/Source/VSoft_Dll/Config/frmSetting.resx @@ -1,200 +1,200 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALu+nQCUlIQAfXx1WoaF - eteGhXrXhoV614WEetN7enNGh4d7AHNxbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcAHRY3AB0WNwAdFjcAHRY3AAAAAAA4MkgAZGFlAFpX - XguNjH+2lZWE/5WVhP+VlYT/lZWE/4uKfZ8pIj8EVFFbACkjPwAAAAAAHRY3AB0WNwAdFjcAHRY3AB0W - NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRY3AJiYhgB2dXAAkZCBAGZkZgAzLkUAFQ0yABQM - MQCoqZAAf352WpOTg/eVlYT/lZWE/5WVhP+VlYT/kpGC7nt5c0WQkIEAAAAAAA8ILgAyLEUAaWZoAIWE - egBhXmIAY2BkAB0WNwAAAAAAAAAAAAAAAAAAAAAAAAAAAB0WNwCkpY4AeHZxAGNgZBlzcW5XYV5iKCAZ - OQj///8A////AG5sazaOjX/XlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/jIt+yGdlZyno7bkA///2ABkS - NAdiX2MqcG1sSExIVQlgXWIAYl9jAB0WNwAAAAAAAAAAAAAAAAAdFjcAo6SNAHh2cQBdWmAXh4Z7qZKR - gvuMjH7ihYR5tX59dpN/fXaUjIx+2pWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/i4p9z3x6 - dIZ9fHWKhIN5so2Mf+KQkIHzgH93fCkiPwZfXGEAYV5jAB0WNwAAAAAAAAAAAAAAEwB/fnYAYF1iGIaG - e6mUlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lJSD/5SUhP+VlYT/lZWE/5WVhP+SkoL3gH52ejgzSQddWmAAAAAAAAAAAAAAAAAAYl9jAAIA - JgGIiHyOlJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+SkoL3g4J4YJmahwAxK0QAAAAAAAAA - AAB6eHIAoqOMAJOTg3mVlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhPuSkYJXl5eFAD45 - TAAAAAAAAAAAAIB+dgCRkYEAj4+ANJSUhO6VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lJSD/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lJSD2o2N - fxyNjX8ARUBQAAAAAAAAAAAAHRY3AIeGewCIh3sTk5OD0ZWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+UlIP/lpaF/5ubi/+fn4//n5+P/5qaiv+VlYT/lJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+TkoKzeXdyBXx6dAAAAAAAAAAAAAAAAAAjHTsAcG5sAHd2cQqSkYLDlZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lZWE/6Kikv+0tKf/vr6y/8HBtf/BwbX/vb2x/7KypP+fn4//lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/lZWE/5CQgaH///8AJyE+AB0WNwAAAAAAQj1PACkiPgCMjH4Ac3FuMZGRgeKVlYT/lZWE/5WV - hP+VlYT/lZWE/5aWhf+rq53/wcG1/8XFufzExLjZxMS4t8TEuLvExLjgxcW5/7+/s/+np5f/lZWE/5WV - hP+VlYT/lZWE/5WVhP+VlYT/j46Ay2ViZRt5d3IAAAAaADAqQwByb20AAAAAAG1qajuKin3FlZWE/5WV - hP+VlYT/lZWE/5WVhP+VlYT/qama/8PDt//ExLjmw8O4bcPDtxvDw7cGw8O3B8PDtyPDw7iCxMS48cHB - tf+jo5T/lJSD/5WVhP+VlYT/lZWE/5WVhP+UlIP+h4Z7rmRhZCj5/8QAZ2VnAGdlZzN+fXWIjo6A5pWV - hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5ycjP++vrH/xMS47sLCt1LGx7oAw8O3AMPDtwDDw7cAw8O3AAAA - AADCwrdvxcW5+bm5rP+YmIj/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIT/jIt+2Hp4c3RhXmMkjYx/3pSU - g/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIP/qama/8TEuP/CwraakpCRAby7sgDAwLUAAAAAACAZ - OQDBwbUAvr2zALm4rwvCwre6w8O3/6OjlP+UlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/k5OD/4uK - fbuTk4PwlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+zs6X/xMS4+728slPCwrcAv7+0AAAA - AAAAAAAAAAAAAAAAAADb3MoAzc2/AL6+tHbExLj/rKyd/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV - hP+VlYT/kpKC0Zybi+2fno3/n52N/p+djf6fnY3+n52N/p+djf6fnY3+n56N/rm4q//Dw7j2tbWtQLu7 - sQAhGjoAAAAAAAAAAAAAAAAAAAAAAFVQYgDGxroAubmwYcTEuP+zs6X/np2M/p+djf6fnY3+n52N/p+d - jf6fnY3+n52N/p+ejf+bmovPpKKR8aakk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/ubiq/8PD - uPyysapaxMS4AJybmQAdFjcAAAAAAAAAAAAdFjcA////AO7w2QC2tq19xMS4/7W0pf+mpJP/pqST/6ak - k/+mpJP/pqST/6akk/+mpJP/pqST/6OgkdOkopKgpqST6aakk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - kv+zsqP/xMS4/7a2rqhFQFYHcW14AGhkcQAdFjcAHRY3AIyKjQCIhooAgH2EFLu6scXDw7f/r62e/6ak - kv+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJPlpKKRiqalkwSlo5M1pqSTp6akk/qmpJP/pqST/6ak - k/+mpJP/pqST/6qomP/AwLP/wcC29aOin2kAAAACjYuOAFlVZgBfW2oAmpmYAC8pRQirqaSGw8O3/L29 - r/+oppX/pqST/6akk/+mpJP/pqST/6akk/+mpJP2pqSTmaWjky2oppQDpKKSAKakkwCjoZEJpaOSgaak - k/qmpJP/pqST/6akk/+mpJP/pqST/7Kxov/Dw7f/vr608KakoYyBfoQyXFhoFWFdaxeIhYk8q6qkn8HA - tfjCwrX/r62e/6akk/+mpJP/pqST/6akk/+mpJP/pqST86WjkmyioJAEpqOTAKSikgCal4sApaOSAJ6c - jgCZlooSpKKSzqakk/+mpJP/pqST/6akk/+mpJP/p6WU/7SzpP/Cwrb/w8O3/7q6seq0s6vRtLSs1Ly8 - su/ExLj/wcG0/7GvoP+mpJP/pqST/6akk/+mpJP/pqST/6akk/+joZGrj4yEBKGfkAClo5IAjYuCAAAA - AAAdFjcAgHx5AIJ/ewuioJDEpqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/66snP+6uav/wcCz/8PD - tv/Dw7b/wMCz/7i3qf+sqpr/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6Cdj5f//+8AAAAOAAAA - AAAAAAAAAAAAAB0WNwCLiIEAioeAHaKgkdumpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - lP+pqJf/rKqa/6yqmv+pp5f/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/oJ6Ptmhk - agdtaW0AHRY3AAAAAAAAAAAA/P3NAKOhkQCTkIZLpKKS96akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - k/+ioJDhiYZ/Jo6LgwAdFjcAAAAAAAAAAABhXGUA////AJyajJOmpJP/pqST/6akk/+mpJP/pqST/6ak - k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - k/+mpJP/pqST/6Wjkv6YlopdqKaUAB0WNwAAAAAAAAAAAIB9egDS0rEApKKSUqakk+empJP/pqST/6ak - k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - k/+mpJP/pqST/6akk/+mpJP/pqSTwqOhkSWoppUAHRY3AAAAAAAAAAAAhIF8AJqYiwCoppQApaOSTqak - k+SmpJP/pqST/6akk/empJPnpqST5qakk/umpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak - k/mmpJPkpqST6aakk/mmpJP/pqST/6akk8KkopImpaOSAK+tmQAdFjcAAAAAAAAAAAAAAAAAoqCQAKKg - kACqqJUApaOSTaakk7+mpJOHpqSTR6akkyampJMkpaOTdaakk/OmpJP/pqST/6akk/+mpJP/pqST/6ak - k/+mpJPnpaOTYKakkyKmpJMppqSTTqakk5OmpJOspKKSJ6akkwCwr5oAm5mMAAAAAAAAAAAAAAAAAAAA - AAAAAAAAop+QAKKgkAD///8ApaOSDKimlQCmpJMApqSTAKWjkgCNioIBpaOShqakk/+mpJP/pqST/6ak - k/+mpJP/pqST+aSikmeqqJYApaOTAKakkwCmpJMAm5mMAKSikgimpJMAsK+aAJuZjAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAoqCRAKOhkQClo5IApaOSAKSikgB1cnIAo6GRAKKgkQChn5AZpaOSzqak - k/+mpJP/pqST/6akk/+lo5KynpyOCqGfkAChn5AAlZKHAKWjkgClo5IApKKSAJ+djgCcmo0AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcA////AK6s - mACkopJ2pqST+Kakk/ampJP2pqST8qOhkVWnpZMAqKaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/+AH//BAAg/gAAAHwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AA - AAEAAAAAAAAAAAAAAAAAAQAAAAPAAAADwAAAAYAAAAAAAAAAAAAAAAAAAAAAAIAAAAOAAAABgAAAAYAA - AAGAAAABgAAAAcAAAAPgAAAH8AAAD//AB/8= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALu+nQCUlIQAfXx1WoaF + eteGhXrXhoV614WEetN7enNGh4d7AHNxbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcAHRY3AB0WNwAdFjcAHRY3AAAAAAA4MkgAZGFlAFpX + XguNjH+2lZWE/5WVhP+VlYT/lZWE/4uKfZ8pIj8EVFFbACkjPwAAAAAAHRY3AB0WNwAdFjcAHRY3AB0W + NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRY3AJiYhgB2dXAAkZCBAGZkZgAzLkUAFQ0yABQM + MQCoqZAAf352WpOTg/eVlYT/lZWE/5WVhP+VlYT/kpGC7nt5c0WQkIEAAAAAAA8ILgAyLEUAaWZoAIWE + egBhXmIAY2BkAB0WNwAAAAAAAAAAAAAAAAAAAAAAAAAAAB0WNwCkpY4AeHZxAGNgZBlzcW5XYV5iKCAZ + OQj///8A////AG5sazaOjX/XlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/jIt+yGdlZyno7bkA///2ABkS + NAdiX2MqcG1sSExIVQlgXWIAYl9jAB0WNwAAAAAAAAAAAAAAAAAdFjcAo6SNAHh2cQBdWmAXh4Z7qZKR + gvuMjH7ihYR5tX59dpN/fXaUjIx+2pWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/i4p9z3x6 + dIZ9fHWKhIN5so2Mf+KQkIHzgH93fCkiPwZfXGEAYV5jAB0WNwAAAAAAAAAAAAAAEwB/fnYAYF1iGIaG + e6mUlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lJSD/5SUhP+VlYT/lZWE/5WVhP+SkoL3gH52ejgzSQddWmAAAAAAAAAAAAAAAAAAYl9jAAIA + JgGIiHyOlJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+SkoL3g4J4YJmahwAxK0QAAAAAAAAA + AAB6eHIAoqOMAJOTg3mVlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhPuSkYJXl5eFAD45 + TAAAAAAAAAAAAIB+dgCRkYEAj4+ANJSUhO6VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lJSD/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lJSD2o2N + fxyNjX8ARUBQAAAAAAAAAAAAHRY3AIeGewCIh3sTk5OD0ZWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+UlIP/lpaF/5ubi/+fn4//n5+P/5qaiv+VlYT/lJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+TkoKzeXdyBXx6dAAAAAAAAAAAAAAAAAAjHTsAcG5sAHd2cQqSkYLDlZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/6Kikv+0tKf/vr6y/8HBtf/BwbX/vb2x/7KypP+fn4//lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5CQgaH///8AJyE+AB0WNwAAAAAAQj1PACkiPgCMjH4Ac3FuMZGRgeKVlYT/lZWE/5WV + hP+VlYT/lZWE/5aWhf+rq53/wcG1/8XFufzExLjZxMS4t8TEuLvExLjgxcW5/7+/s/+np5f/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/j46Ay2ViZRt5d3IAAAAaADAqQwByb20AAAAAAG1qajuKin3FlZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/qama/8PDt//ExLjmw8O4bcPDtxvDw7cGw8O3B8PDtyPDw7iCxMS48cHB + tf+jo5T/lJSD/5WVhP+VlYT/lZWE/5WVhP+UlIP+h4Z7rmRhZCj5/8QAZ2VnAGdlZzN+fXWIjo6A5pWV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5ycjP++vrH/xMS47sLCt1LGx7oAw8O3AMPDtwDDw7cAw8O3AAAA + AADCwrdvxcW5+bm5rP+YmIj/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIT/jIt+2Hp4c3RhXmMkjYx/3pSU + g/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIP/qama/8TEuP/CwraakpCRAby7sgDAwLUAAAAAACAZ + OQDBwbUAvr2zALm4rwvCwre6w8O3/6OjlP+UlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/k5OD/4uK + fbuTk4PwlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+zs6X/xMS4+728slPCwrcAv7+0AAAA + AAAAAAAAAAAAAAAAAADb3MoAzc2/AL6+tHbExLj/rKyd/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/kpKC0Zybi+2fno3/n52N/p+djf6fnY3+n52N/p+djf6fnY3+n56N/rm4q//Dw7j2tbWtQLu7 + sQAhGjoAAAAAAAAAAAAAAAAAAAAAAFVQYgDGxroAubmwYcTEuP+zs6X/np2M/p+djf6fnY3+n52N/p+d + jf6fnY3+n52N/p+ejf+bmovPpKKR8aakk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/ubiq/8PD + uPyysapaxMS4AJybmQAdFjcAAAAAAAAAAAAdFjcA////AO7w2QC2tq19xMS4/7W0pf+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6OgkdOkopKgpqST6aakk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + kv+zsqP/xMS4/7a2rqhFQFYHcW14AGhkcQAdFjcAHRY3AIyKjQCIhooAgH2EFLu6scXDw7f/r62e/6ak + kv+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJPlpKKRiqalkwSlo5M1pqSTp6akk/qmpJP/pqST/6ak + k/+mpJP/pqST/6qomP/AwLP/wcC29aOin2kAAAACjYuOAFlVZgBfW2oAmpmYAC8pRQirqaSGw8O3/L29 + r/+oppX/pqST/6akk/+mpJP/pqST/6akk/+mpJP2pqSTmaWjky2oppQDpKKSAKakkwCjoZEJpaOSgaak + k/qmpJP/pqST/6akk/+mpJP/pqST/7Kxov/Dw7f/vr608KakoYyBfoQyXFhoFWFdaxeIhYk8q6qkn8HA + tfjCwrX/r62e/6akk/+mpJP/pqST/6akk/+mpJP/pqST86WjkmyioJAEpqOTAKSikgCal4sApaOSAJ6c + jgCZlooSpKKSzqakk/+mpJP/pqST/6akk/+mpJP/p6WU/7SzpP/Cwrb/w8O3/7q6seq0s6vRtLSs1Ly8 + su/ExLj/wcG0/7GvoP+mpJP/pqST/6akk/+mpJP/pqST/6akk/+joZGrj4yEBKGfkAClo5IAjYuCAAAA + AAAdFjcAgHx5AIJ/ewuioJDEpqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/66snP+6uav/wcCz/8PD + tv/Dw7b/wMCz/7i3qf+sqpr/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6Cdj5f//+8AAAAOAAAA + AAAAAAAAAAAAAB0WNwCLiIEAioeAHaKgkdumpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + lP+pqJf/rKqa/6yqmv+pp5f/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/oJ6Ptmhk + agdtaW0AHRY3AAAAAAAAAAAA/P3NAKOhkQCTkIZLpKKS96akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+ioJDhiYZ/Jo6LgwAdFjcAAAAAAAAAAABhXGUA////AJyajJOmpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6Wjkv6YlopdqKaUAB0WNwAAAAAAAAAAAIB9egDS0rEApKKSUqakk+empJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqSTwqOhkSWoppUAHRY3AAAAAAAAAAAAhIF8AJqYiwCoppQApaOSTqak + k+SmpJP/pqST/6akk/empJPnpqST5qakk/umpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/mmpJPkpqST6aakk/mmpJP/pqST/6akk8KkopImpaOSAK+tmQAdFjcAAAAAAAAAAAAAAAAAoqCQAKKg + kACqqJUApaOSTaakk7+mpJOHpqSTR6akkyampJMkpaOTdaakk/OmpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJPnpaOTYKakkyKmpJMppqSTTqakk5OmpJOspKKSJ6akkwCwr5oAm5mMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAop+QAKKgkAD///8ApaOSDKimlQCmpJMApqSTAKWjkgCNioIBpaOShqakk/+mpJP/pqST/6ak + k/+mpJP/pqST+aSikmeqqJYApaOTAKakkwCmpJMAm5mMAKSikgimpJMAsK+aAJuZjAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAoqCRAKOhkQClo5IApaOSAKSikgB1cnIAo6GRAKKgkQChn5AZpaOSzqak + k/+mpJP/pqST/6akk/+lo5KynpyOCqGfkAChn5AAlZKHAKWjkgClo5IApKKSAJ+djgCcmo0AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcA////AK6s + mACkopJ2pqST+Kakk/ampJP2pqST8qOhkVWnpZMAqKaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/+AH//BAAg/gAAAHwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AA + AAEAAAAAAAAAAAAAAAAAAQAAAAPAAAADwAAAAYAAAAAAAAAAAAAAAAAAAAAAAIAAAAOAAAABgAAAAYAA + AAGAAAABgAAAAcAAAAPgAAAH8AAAD//AB/8= + + \ No newline at end of file diff --git a/Source/VSoft_Dll/FrmInCMD.Designer.cs b/Source/VSoft_Dll/FrmInCMD.Designer.cs index 444a5d5..17f5cef 100644 --- a/Source/VSoft_Dll/FrmInCMD.Designer.cs +++ b/Source/VSoft_Dll/FrmInCMD.Designer.cs @@ -99,7 +99,6 @@ this.IconViewEx1.MultiSelect = false; this.IconViewEx1.Name = "IconViewEx1"; this.IconViewEx1.OwnerDraw = true; - this.IconViewEx1.SelectedBackColor = System.Drawing.Color.LightYellow; this.IconViewEx1.ShowItemToolTips = true; this.IconViewEx1.Size = new System.Drawing.Size(550, 365); this.IconViewEx1.TabIndex = 0; @@ -312,7 +311,6 @@ this.TabList_Type.Name = "TabList_Type"; this.TabList_Type.OwnerDraw = true; this.TabList_Type.Scrollable = false; - this.TabList_Type.SelectedBackColor = System.Drawing.Color.LightSkyBlue; this.TabList_Type.Size = new System.Drawing.Size(74, 398); this.TabList_Type.TabIndex = 4; this.TabList_Type.TileSize = new System.Drawing.Size(80, 28); @@ -347,7 +345,6 @@ this.TabList_Column.Name = "TabList_Column"; this.TabList_Column.OwnerDraw = true; this.TabList_Column.Scrollable = false; - this.TabList_Column.SelectedBackColor = System.Drawing.Color.LightSkyBlue; this.TabList_Column.Size = new System.Drawing.Size(519, 29); this.TabList_Column.TabIndex = 1; this.TabList_Column.TileSize = new System.Drawing.Size(70, 28); diff --git a/Source/VSoft_Dll/FrmInCMD.cs b/Source/VSoft_Dll/FrmInCMD.cs index 085d76b..d7fb9e1 100644 --- a/Source/VSoft_Dll/FrmInCMD.cs +++ b/Source/VSoft_Dll/FrmInCMD.cs @@ -608,15 +608,15 @@ namespace VSoft TabList_Column.Items[0].Selected = true; } TabList_Column.Focus(); - var color = TabList_Column.SelectedBackColor; - TabList_Column.SelectedBackColor = Color.LightYellow; + var color = TabList_Column.SelectedStartBackColor; + TabList_Column.SelectedStartBackColor = Color.LightYellow; using (var bg = new BackgroundWorker()) { bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 bg.RunWorkerCompleted += delegate { this.Invoke(new Action(() => { - TabList_Column.SelectedBackColor = color; + TabList_Column.SelectedStartBackColor = color; })); }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 bg.RunWorkerAsync(); @@ -635,15 +635,15 @@ namespace VSoft TabList_Type.Items[0].Selected = true; } TabList_Type.Focus(); - var color = TabList_Type.SelectedBackColor; - TabList_Type.SelectedBackColor = Color.LightYellow; + var color = TabList_Type.SelectedStartBackColor; + TabList_Type.SelectedStartBackColor = Color.LightYellow; using (var bg = new BackgroundWorker()) { bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 bg.RunWorkerCompleted += delegate { this.Invoke(new Action(() => { - TabList_Type.SelectedBackColor = color; + TabList_Type.SelectedStartBackColor = color; })); }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 bg.RunWorkerAsync(); @@ -1076,15 +1076,15 @@ namespace VSoft } } TabList_Column.Focus(); - var color = TabList_Column.SelectedBackColor; - TabList_Column.SelectedBackColor = Color.LightYellow; + var color = TabList_Column.SelectedStartBackColor; + TabList_Column.SelectedStartBackColor = Color.LightYellow; using (var bg = new BackgroundWorker()) { bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 bg.RunWorkerCompleted += delegate { this.Invoke(new Action(() => { - TabList_Column.SelectedBackColor = color; + TabList_Column.SelectedStartBackColor = color; })); }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 bg.RunWorkerAsync(); diff --git a/Source/VSoft_Dll/FrmVSoft.Designer.cs b/Source/VSoft_Dll/FrmVSoft.Designer.cs index 7bf7d0a..da3fc72 100644 --- a/Source/VSoft_Dll/FrmVSoft.Designer.cs +++ b/Source/VSoft_Dll/FrmVSoft.Designer.cs @@ -1,521 +1,535 @@ -namespace VSoft -{ - partial class FrmVSoft - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmVSoft)); - this.panelEx1 = new ryControls.PanelEx(); - this.LblEmpty = new System.Windows.Forms.Label(); - this.MenuList = new System.Windows.Forms.ContextMenuStrip(this.components); - this.以管理员方式启动ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); - this.新增软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.新增内置功能ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.修改软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.从列表删除该软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); - this.打开软件所在位置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.rySearch1 = new ryControls.rySearch(); - this.BtnAddColumn = new System.Windows.Forms.Button(); - this.MenuTabColumn = new System.Windows.Forms.ContextMenuStrip(this.components); - this.添加栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.修改栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.删除栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.MenuTabType = new System.Windows.Forms.ContextMenuStrip(this.components); - this.新增分类ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.Menu修改分类 = new System.Windows.Forms.ToolStripMenuItem(); - this.Menu删除分类 = new System.Windows.Forms.ToolStripMenuItem(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.LblDrag = new System.Windows.Forms.Label(); - this.timer1 = new System.Windows.Forms.Timer(this.components); - this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); - this.MenuTray = new System.Windows.Forms.ContextMenuStrip(this.components); - this.显示主窗体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.打开官网ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.捐助ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.退出软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.LblSetting = new System.Windows.Forms.Label(); - this.TabList_Type = new ryControls.TabList(); - this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.TabList_Column = new ryControls.TabList(); - this.IconViewEx1 = new ryControls.IconViewEx(); - this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.panelEx1.SuspendLayout(); - this.MenuList.SuspendLayout(); - this.MenuTabColumn.SuspendLayout(); - this.MenuTabType.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.MenuTray.SuspendLayout(); - this.SuspendLayout(); - // - // panelEx1 - // - this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.panelEx1.BackColor = System.Drawing.Color.White; - this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); - this.panelEx1.Controls.Add(this.LblEmpty); - this.panelEx1.Controls.Add(this.IconViewEx1); - this.panelEx1.Location = new System.Drawing.Point(84, 65); - this.panelEx1.Name = "panelEx1"; - this.panelEx1.Padding = new System.Windows.Forms.Padding(3); - this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; - this.panelEx1.Size = new System.Drawing.Size(626, 448); - this.panelEx1.TabIndex = 1; - this.panelEx1.TileBackColor = System.Drawing.Color.White; - this.panelEx1.Resize += new System.EventHandler(this.panelEx1_Resize); - // - // LblEmpty - // - this.LblEmpty.AutoSize = true; - this.LblEmpty.BackColor = System.Drawing.Color.Transparent; - this.LblEmpty.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.LblEmpty.ForeColor = System.Drawing.Color.Silver; - this.LblEmpty.Location = new System.Drawing.Point(31, 196); - this.LblEmpty.Name = "LblEmpty"; - this.LblEmpty.Size = new System.Drawing.Size(456, 19); - this.LblEmpty.TabIndex = 1; - this.LblEmpty.Text = "暂无软件,请右击列表或者直接拖放文件到列表中添加"; - this.LblEmpty.Visible = false; - // - // MenuList - // - this.MenuList.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.以管理员方式启动ToolStripMenuItem, - this.toolStripMenuItem2, - this.新增软件ToolStripMenuItem, - this.新增内置功能ToolStripMenuItem, - this.修改软件ToolStripMenuItem, - this.从列表删除该软件ToolStripMenuItem, - this.toolStripMenuItem1, - this.打开软件所在位置ToolStripMenuItem}); - this.MenuList.Name = "contextMenuStrip1"; - this.MenuList.Size = new System.Drawing.Size(185, 148); - this.MenuList.Opening += new System.ComponentModel.CancelEventHandler(this.MenuList_Opening); - // - // 以管理员方式启动ToolStripMenuItem - // - this.以管理员方式启动ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("以管理员方式启动ToolStripMenuItem.Image"))); - this.以管理员方式启动ToolStripMenuItem.Name = "以管理员方式启动ToolStripMenuItem"; - this.以管理员方式启动ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.以管理员方式启动ToolStripMenuItem.Text = "以管理员方式启动"; - this.以管理员方式启动ToolStripMenuItem.Click += new System.EventHandler(this.以管理员方式启动ToolStripMenuItem_Click); - // - // toolStripMenuItem2 - // - this.toolStripMenuItem2.Name = "toolStripMenuItem2"; - this.toolStripMenuItem2.Size = new System.Drawing.Size(181, 6); - // - // 新增软件ToolStripMenuItem - // - this.新增软件ToolStripMenuItem.Name = "新增软件ToolStripMenuItem"; - this.新增软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.新增软件ToolStripMenuItem.Text = "添加软件"; - this.新增软件ToolStripMenuItem.Click += new System.EventHandler(this.新增软件ToolStripMenuItem_Click); - // - // 新增内置功能ToolStripMenuItem - // - this.新增内置功能ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("新增内置功能ToolStripMenuItem.Image"))); - this.新增内置功能ToolStripMenuItem.Name = "新增内置功能ToolStripMenuItem"; - this.新增内置功能ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.新增内置功能ToolStripMenuItem.Text = "添加内置功能"; - this.新增内置功能ToolStripMenuItem.Click += new System.EventHandler(this.新增内置功能ToolStripMenuItem_Click); - // - // 修改软件ToolStripMenuItem - // - this.修改软件ToolStripMenuItem.Name = "修改软件ToolStripMenuItem"; - this.修改软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.修改软件ToolStripMenuItem.Text = "修改软件"; - this.修改软件ToolStripMenuItem.Click += new System.EventHandler(this.修改软件ToolStripMenuItem_Click); - // - // 从列表删除该软件ToolStripMenuItem - // - this.从列表删除该软件ToolStripMenuItem.Name = "从列表删除该软件ToolStripMenuItem"; - this.从列表删除该软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.从列表删除该软件ToolStripMenuItem.Text = "从列表删除选定软件"; - this.从列表删除该软件ToolStripMenuItem.Click += new System.EventHandler(this.从列表删除该软件ToolStripMenuItem_Click); - // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(181, 6); - // - // 打开软件所在位置ToolStripMenuItem - // - this.打开软件所在位置ToolStripMenuItem.Name = "打开软件所在位置ToolStripMenuItem"; - this.打开软件所在位置ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.打开软件所在位置ToolStripMenuItem.Text = "打开软件所在位置"; - this.打开软件所在位置ToolStripMenuItem.Click += new System.EventHandler(this.打开软件所在位置ToolStripMenuItem_Click); - // - // rySearch1 - // - this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); - this.rySearch1.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); - this.rySearch1.EmptyText = "输入名称或拼音即可搜索"; - this.rySearch1.Location = new System.Drawing.Point(87, 6); - this.rySearch1.Name = "rySearch1"; - this.rySearch1.Size = new System.Drawing.Size(228, 27); - this.rySearch1.TabIndex = 2; - this.rySearch1.OnSearch += new System.EventHandler(this.rySearch1_OnSearch); - this.rySearch1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.rySearch1_KeyDown); - // - // BtnAddColumn - // - this.BtnAddColumn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.BtnAddColumn.Image = ((System.Drawing.Image)(resources.GetObject("BtnAddColumn.Image"))); - this.BtnAddColumn.Location = new System.Drawing.Point(682, 34); - this.BtnAddColumn.Name = "BtnAddColumn"; - this.BtnAddColumn.Size = new System.Drawing.Size(27, 28); - this.BtnAddColumn.TabIndex = 3; - this.BtnAddColumn.UseVisualStyleBackColor = true; - this.BtnAddColumn.Click += new System.EventHandler(this.BtnAddColumn_Click); - // - // MenuTabColumn - // - this.MenuTabColumn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.添加栏目ToolStripMenuItem, - this.修改栏目ToolStripMenuItem, - this.删除栏目ToolStripMenuItem}); - this.MenuTabColumn.Name = "MenuTab"; - this.MenuTabColumn.Size = new System.Drawing.Size(125, 70); - this.MenuTabColumn.Opening += new System.ComponentModel.CancelEventHandler(this.MenuTabColumn_Opening); - // - // 添加栏目ToolStripMenuItem - // - this.添加栏目ToolStripMenuItem.Name = "添加栏目ToolStripMenuItem"; - this.添加栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); - this.添加栏目ToolStripMenuItem.Text = "添加栏目"; - this.添加栏目ToolStripMenuItem.Click += new System.EventHandler(this.添加栏目ToolStripMenuItem_Click); - // - // 修改栏目ToolStripMenuItem - // - this.修改栏目ToolStripMenuItem.Name = "修改栏目ToolStripMenuItem"; - this.修改栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); - this.修改栏目ToolStripMenuItem.Text = "修改栏目"; - this.修改栏目ToolStripMenuItem.Click += new System.EventHandler(this.修改栏目ToolStripMenuItem_Click); - // - // 删除栏目ToolStripMenuItem - // - this.删除栏目ToolStripMenuItem.Name = "删除栏目ToolStripMenuItem"; - this.删除栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); - this.删除栏目ToolStripMenuItem.Text = "删除栏目"; - this.删除栏目ToolStripMenuItem.Click += new System.EventHandler(this.删除栏目ToolStripMenuItem_Click); - // - // MenuTabType - // - this.MenuTabType.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.新增分类ToolStripMenuItem, - this.Menu修改分类, - this.Menu删除分类}); - this.MenuTabType.Name = "MenuTab"; - this.MenuTabType.Size = new System.Drawing.Size(125, 70); - this.MenuTabType.Opening += new System.ComponentModel.CancelEventHandler(this.MenuTabType_Opening); - // - // 新增分类ToolStripMenuItem - // - this.新增分类ToolStripMenuItem.Name = "新增分类ToolStripMenuItem"; - this.新增分类ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); - this.新增分类ToolStripMenuItem.Text = "新增分类"; - this.新增分类ToolStripMenuItem.Click += new System.EventHandler(this.新增分类ToolStripMenuItem_Click); - // - // Menu修改分类 - // - this.Menu修改分类.Name = "Menu修改分类"; - this.Menu修改分类.Size = new System.Drawing.Size(124, 22); - this.Menu修改分类.Text = "修改分类"; - this.Menu修改分类.Click += new System.EventHandler(this.Menu修改分类_Click); - // - // Menu删除分类 - // - this.Menu删除分类.Name = "Menu删除分类"; - this.Menu删除分类.Size = new System.Drawing.Size(124, 22); - this.Menu删除分类.Text = "删除分类"; - this.Menu删除分类.Click += new System.EventHandler(this.Menu删除分类_Click); - // - // pictureBox1 - // - this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); - this.pictureBox1.Location = new System.Drawing.Point(4, 3); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(80, 60); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBox1.TabIndex = 5; - this.pictureBox1.TabStop = false; - // - // LblDrag - // - this.LblDrag.BackColor = System.Drawing.Color.Black; - this.LblDrag.Location = new System.Drawing.Point(716, 111); - this.LblDrag.Name = "LblDrag"; - this.LblDrag.Size = new System.Drawing.Size(2, 89); - this.LblDrag.TabIndex = 6; - this.LblDrag.Visible = false; - // - // notifyIcon1 - // - this.notifyIcon1.ContextMenuStrip = this.MenuTray; - this.notifyIcon1.Visible = true; - this.notifyIcon1.DoubleClick += new System.EventHandler(this.显示主窗体ToolStripMenuItem_Click); - // - // MenuTray - // - this.MenuTray.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.显示主窗体ToolStripMenuItem, - this.打开官网ToolStripMenuItem, - this.捐助ToolStripMenuItem, - this.设置ToolStripMenuItem, - this.退出软件ToolStripMenuItem}); - this.MenuTray.Name = "MenuTray"; - this.MenuTray.Size = new System.Drawing.Size(137, 114); - // - // 显示主窗体ToolStripMenuItem - // - this.显示主窗体ToolStripMenuItem.Name = "显示主窗体ToolStripMenuItem"; - this.显示主窗体ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); - this.显示主窗体ToolStripMenuItem.Text = "显示主窗体"; - this.显示主窗体ToolStripMenuItem.Click += new System.EventHandler(this.显示主窗体ToolStripMenuItem_Click); - // - // 打开官网ToolStripMenuItem - // - this.打开官网ToolStripMenuItem.Name = "打开官网ToolStripMenuItem"; - this.打开官网ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); - this.打开官网ToolStripMenuItem.Text = "打开官网"; - this.打开官网ToolStripMenuItem.Click += new System.EventHandler(this.打开官网ToolStripMenuItem_Click); - // - // 捐助ToolStripMenuItem - // - this.捐助ToolStripMenuItem.Name = "捐助ToolStripMenuItem"; - this.捐助ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); - this.捐助ToolStripMenuItem.Text = "捐助"; - this.捐助ToolStripMenuItem.Click += new System.EventHandler(this.捐助ToolStripMenuItem_Click); - // - // 设置ToolStripMenuItem - // - this.设置ToolStripMenuItem.Name = "设置ToolStripMenuItem"; - this.设置ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); - this.设置ToolStripMenuItem.Text = "设置"; - this.设置ToolStripMenuItem.Click += new System.EventHandler(this.设置ToolStripMenuItem_Click); - // - // 退出软件ToolStripMenuItem - // - this.退出软件ToolStripMenuItem.Name = "退出软件ToolStripMenuItem"; - this.退出软件ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); - this.退出软件ToolStripMenuItem.Text = "退出软件"; - this.退出软件ToolStripMenuItem.Click += new System.EventHandler(this.退出软件ToolStripMenuItem_Click); - // - // LblSetting - // - this.LblSetting.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.LblSetting.AutoSize = true; - this.LblSetting.Cursor = System.Windows.Forms.Cursors.Hand; - this.LblSetting.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.LblSetting.ForeColor = System.Drawing.Color.Blue; - this.LblSetting.Location = new System.Drawing.Point(681, 9); - this.LblSetting.Name = "LblSetting"; - this.LblSetting.Size = new System.Drawing.Size(29, 12); - this.LblSetting.TabIndex = 7; - this.LblSetting.Text = "设置"; - this.LblSetting.Click += new System.EventHandler(this.LblSetting_Click); - // - // TabList_Type - // - this.TabList_Type.AllowDrop = true; - this.TabList_Type.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.TabList_Type.BackColor = System.Drawing.SystemColors.Control; - this.TabList_Type.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.TabList_Type.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader2}); - this.TabList_Type.ContextMenuStrip = this.MenuTabType; - this.TabList_Type.HideSelection = false; - this.TabList_Type.Icon = null; - this.TabList_Type.IsDrawGridLines = false; - this.TabList_Type.IsDrawIcon = false; - this.TabList_Type.Location = new System.Drawing.Point(4, 65); - this.TabList_Type.MultiSelect = false; - this.TabList_Type.Name = "TabList_Type"; - this.TabList_Type.OwnerDraw = true; - this.TabList_Type.Scrollable = false; - this.TabList_Type.SelectedBackColor = System.Drawing.Color.LightSkyBlue; - this.TabList_Type.Size = new System.Drawing.Size(74, 445); - this.TabList_Type.TabIndex = 4; - this.TabList_Type.TileSize = new System.Drawing.Size(80, 28); - this.TabList_Type.UseCompatibleStateImageBehavior = false; - this.TabList_Type.View = System.Windows.Forms.View.Tile; - this.TabList_Type.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.TabList_Type_ItemDrag); - this.TabList_Type.SelectedIndexChanged += new System.EventHandler(this.TabList_Type_SelectedIndexChanged); - this.TabList_Type.DragDrop += new System.Windows.Forms.DragEventHandler(this.TabList_Type_DragDrop); - this.TabList_Type.DragEnter += new System.Windows.Forms.DragEventHandler(this.TabList_Type_DragEnter); - this.TabList_Type.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); - this.TabList_Type.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TabList_Type_KeyDown); - // - // columnHeader2 - // - this.columnHeader2.Width = 80; - // - // TabList_Column - // - this.TabList_Column.Alignment = System.Windows.Forms.ListViewAlignment.Left; - this.TabList_Column.AllowDrop = true; - this.TabList_Column.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.TabList_Column.BackColor = System.Drawing.SystemColors.Control; - this.TabList_Column.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.TabList_Column.ContextMenuStrip = this.MenuTabColumn; - this.TabList_Column.HideSelection = false; - this.TabList_Column.Icon = null; - this.TabList_Column.IsDrawGridLines = false; - this.TabList_Column.IsDrawIcon = false; - this.TabList_Column.Location = new System.Drawing.Point(87, 34); - this.TabList_Column.MultiSelect = false; - this.TabList_Column.Name = "TabList_Column"; - this.TabList_Column.OwnerDraw = true; - this.TabList_Column.Scrollable = false; - this.TabList_Column.SelectedBackColor = System.Drawing.Color.LightSkyBlue; - this.TabList_Column.Size = new System.Drawing.Size(589, 29); - this.TabList_Column.TabIndex = 1; - this.TabList_Column.TileSize = new System.Drawing.Size(70, 28); - this.TabList_Column.UseCompatibleStateImageBehavior = false; - this.TabList_Column.View = System.Windows.Forms.View.Tile; - this.TabList_Column.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.TabList_Column_ItemDrag); - this.TabList_Column.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.TabList_Column_ItemSelectionChanged); - this.TabList_Column.DragDrop += new System.Windows.Forms.DragEventHandler(this.TabList_Column_DragDrop); - this.TabList_Column.DragEnter += new System.Windows.Forms.DragEventHandler(this.TabList_Column_DragEnter); - this.TabList_Column.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); - this.TabList_Column.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TabList_Column_KeyDown); - // - // IconViewEx1 - // - this.IconViewEx1.AllowDrop = true; - this.IconViewEx1.BackColor = System.Drawing.Color.White; - this.IconViewEx1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.IconViewEx1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader1}); - this.IconViewEx1.ContextMenuStrip = this.MenuList; - this.IconViewEx1.Dock = System.Windows.Forms.DockStyle.Fill; - this.IconViewEx1.HideSelection = false; - this.IconViewEx1.Icon = ((System.Drawing.Image)(resources.GetObject("IconViewEx1.Icon"))); - this.IconViewEx1.IsDrawGridLines = false; - this.IconViewEx1.IsDrawIcon = true; - this.IconViewEx1.Location = new System.Drawing.Point(3, 3); - this.IconViewEx1.MultiSelect = false; - this.IconViewEx1.Name = "IconViewEx1"; - this.IconViewEx1.OwnerDraw = true; - this.IconViewEx1.SelectedBackColor = System.Drawing.Color.LightYellow; - this.IconViewEx1.Size = new System.Drawing.Size(620, 442); - this.IconViewEx1.TabIndex = 0; - this.IconViewEx1.TileSize = new System.Drawing.Size(100, 100); - this.IconViewEx1.UseCompatibleStateImageBehavior = false; - this.IconViewEx1.View = System.Windows.Forms.View.Tile; - this.IconViewEx1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.IconViewEx1_ItemDrag); - this.IconViewEx1.DragDrop += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragDrop); - this.IconViewEx1.DragEnter += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragEnter); - this.IconViewEx1.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); - this.IconViewEx1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.IconViewEx1_KeyDown); - this.IconViewEx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.IconViewEx1_MouseClick); - this.IconViewEx1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.IconViewEx1_MouseDoubleClick); - this.IconViewEx1.Resize += new System.EventHandler(this.IconViewEx1_Resize); - // - // FrmVSoft - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(722, 525); - this.Controls.Add(this.LblSetting); - this.Controls.Add(this.LblDrag); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.TabList_Type); - this.Controls.Add(this.BtnAddColumn); - this.Controls.Add(this.TabList_Column); - this.Controls.Add(this.rySearch1); - this.Controls.Add(this.panelEx1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "FrmVSoft"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "VSoft"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmVSoft_FormClosing); - this.Load += new System.EventHandler(this.FrmVSoft_Load); - this.Shown += new System.EventHandler(this.FrmVSoft_Shown); - this.ResizeEnd += new System.EventHandler(this.FrmVSoft_ResizeEnd); - this.Resize += new System.EventHandler(this.FrmVSoft_Resize); - this.panelEx1.ResumeLayout(false); - this.panelEx1.PerformLayout(); - this.MenuList.ResumeLayout(false); - this.MenuTabColumn.ResumeLayout(false); - this.MenuTabType.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.MenuTray.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private ryControls.IconViewEx IconViewEx1; - private ryControls.PanelEx panelEx1; - private ryControls.rySearch rySearch1; - private System.Windows.Forms.ContextMenuStrip MenuList; - private System.Windows.Forms.ToolStripMenuItem 从列表删除该软件ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 新增软件ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 修改软件ToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem 打开软件所在位置ToolStripMenuItem; - private ryControls.TabList TabList_Column; - private System.Windows.Forms.Button BtnAddColumn; - private System.Windows.Forms.ContextMenuStrip MenuTabColumn; - private System.Windows.Forms.ToolStripMenuItem 修改栏目ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 删除栏目ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 以管理员方式启动ToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; - private ryControls.TabList TabList_Type; - private System.Windows.Forms.ContextMenuStrip MenuTabType; - private System.Windows.Forms.ToolStripMenuItem 新增分类ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem Menu修改分类; - private System.Windows.Forms.ToolStripMenuItem Menu删除分类; - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.ColumnHeader columnHeader1; - private System.Windows.Forms.Label LblDrag; - private System.Windows.Forms.Timer timer1; - private System.Windows.Forms.ColumnHeader columnHeader2; - private System.Windows.Forms.NotifyIcon notifyIcon1; - private System.Windows.Forms.ContextMenuStrip MenuTray; - private System.Windows.Forms.ToolStripMenuItem 显示主窗体ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 退出软件ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 打开官网ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 捐助ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 设置ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 新增内置功能ToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem 添加栏目ToolStripMenuItem; - private System.Windows.Forms.Label LblEmpty; - private System.Windows.Forms.Label LblSetting; - } +namespace VSoft +{ + partial class FrmVSoft + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmVSoft)); + this.MenuList = new System.Windows.Forms.ContextMenuStrip(this.components); + this.以管理员方式启动ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.新增软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.新增内置功能ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.从列表删除该软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.打开软件所在位置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.BtnAddColumn = new System.Windows.Forms.Button(); + this.MenuTabColumn = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除栏目ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.MenuTabType = new System.Windows.Forms.ContextMenuStrip(this.components); + this.新增分类ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu修改分类 = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu删除分类 = new System.Windows.Forms.ToolStripMenuItem(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.LblDrag = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.MenuTray = new System.Windows.Forms.ContextMenuStrip(this.components); + this.显示主窗体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.打开官网ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.捐助ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.退出软件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.LblSetting = new System.Windows.Forms.Label(); + this.TabList_Type = new ryControls.TabList(); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.TabList_Column = new ryControls.TabList(); + this.rySearch1 = new ryControls.rySearch(); + this.panelEx1 = new ryControls.PanelEx(); + this.LblEmpty = new System.Windows.Forms.Label(); + this.IconViewEx1 = new ryControls.IconViewEx(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.MenuList.SuspendLayout(); + this.MenuTabColumn.SuspendLayout(); + this.MenuTabType.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.MenuTray.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.SuspendLayout(); + // + // MenuList + // + this.MenuList.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.以管理员方式启动ToolStripMenuItem, + this.toolStripMenuItem2, + this.新增软件ToolStripMenuItem, + this.新增内置功能ToolStripMenuItem, + this.修改软件ToolStripMenuItem, + this.从列表删除该软件ToolStripMenuItem, + this.toolStripMenuItem1, + this.打开软件所在位置ToolStripMenuItem}); + this.MenuList.Name = "contextMenuStrip1"; + this.MenuList.Size = new System.Drawing.Size(185, 148); + this.MenuList.Opening += new System.ComponentModel.CancelEventHandler(this.MenuList_Opening); + // + // 以管理员方式启动ToolStripMenuItem + // + this.以管理员方式启动ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("以管理员方式启动ToolStripMenuItem.Image"))); + this.以管理员方式启动ToolStripMenuItem.Name = "以管理员方式启动ToolStripMenuItem"; + this.以管理员方式启动ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.以管理员方式启动ToolStripMenuItem.Text = "以管理员方式启动"; + this.以管理员方式启动ToolStripMenuItem.Click += new System.EventHandler(this.以管理员方式启动ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(181, 6); + // + // 新增软件ToolStripMenuItem + // + this.新增软件ToolStripMenuItem.Name = "新增软件ToolStripMenuItem"; + this.新增软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.新增软件ToolStripMenuItem.Text = "添加软件"; + this.新增软件ToolStripMenuItem.Click += new System.EventHandler(this.新增软件ToolStripMenuItem_Click); + // + // 新增内置功能ToolStripMenuItem + // + this.新增内置功能ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("新增内置功能ToolStripMenuItem.Image"))); + this.新增内置功能ToolStripMenuItem.Name = "新增内置功能ToolStripMenuItem"; + this.新增内置功能ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.新增内置功能ToolStripMenuItem.Text = "添加内置功能"; + this.新增内置功能ToolStripMenuItem.Click += new System.EventHandler(this.新增内置功能ToolStripMenuItem_Click); + // + // 修改软件ToolStripMenuItem + // + this.修改软件ToolStripMenuItem.Name = "修改软件ToolStripMenuItem"; + this.修改软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.修改软件ToolStripMenuItem.Text = "修改软件"; + this.修改软件ToolStripMenuItem.Click += new System.EventHandler(this.修改软件ToolStripMenuItem_Click); + // + // 从列表删除该软件ToolStripMenuItem + // + this.从列表删除该软件ToolStripMenuItem.Name = "从列表删除该软件ToolStripMenuItem"; + this.从列表删除该软件ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.从列表删除该软件ToolStripMenuItem.Text = "从列表删除选定软件"; + this.从列表删除该软件ToolStripMenuItem.Click += new System.EventHandler(this.从列表删除该软件ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(181, 6); + // + // 打开软件所在位置ToolStripMenuItem + // + this.打开软件所在位置ToolStripMenuItem.Name = "打开软件所在位置ToolStripMenuItem"; + this.打开软件所在位置ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.打开软件所在位置ToolStripMenuItem.Text = "打开软件所在位置"; + this.打开软件所在位置ToolStripMenuItem.Click += new System.EventHandler(this.打开软件所在位置ToolStripMenuItem_Click); + // + // BtnAddColumn + // + this.BtnAddColumn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnAddColumn.Image = ((System.Drawing.Image)(resources.GetObject("BtnAddColumn.Image"))); + this.BtnAddColumn.Location = new System.Drawing.Point(682, 34); + this.BtnAddColumn.Name = "BtnAddColumn"; + this.BtnAddColumn.Size = new System.Drawing.Size(27, 28); + this.BtnAddColumn.TabIndex = 3; + this.BtnAddColumn.UseVisualStyleBackColor = true; + this.BtnAddColumn.Click += new System.EventHandler(this.BtnAddColumn_Click); + // + // MenuTabColumn + // + this.MenuTabColumn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加栏目ToolStripMenuItem, + this.修改栏目ToolStripMenuItem, + this.删除栏目ToolStripMenuItem}); + this.MenuTabColumn.Name = "MenuTab"; + this.MenuTabColumn.Size = new System.Drawing.Size(125, 70); + this.MenuTabColumn.Opening += new System.ComponentModel.CancelEventHandler(this.MenuTabColumn_Opening); + // + // 添加栏目ToolStripMenuItem + // + this.添加栏目ToolStripMenuItem.Name = "添加栏目ToolStripMenuItem"; + this.添加栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.添加栏目ToolStripMenuItem.Text = "添加栏目"; + this.添加栏目ToolStripMenuItem.Click += new System.EventHandler(this.添加栏目ToolStripMenuItem_Click); + // + // 修改栏目ToolStripMenuItem + // + this.修改栏目ToolStripMenuItem.Name = "修改栏目ToolStripMenuItem"; + this.修改栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.修改栏目ToolStripMenuItem.Text = "修改栏目"; + this.修改栏目ToolStripMenuItem.Click += new System.EventHandler(this.修改栏目ToolStripMenuItem_Click); + // + // 删除栏目ToolStripMenuItem + // + this.删除栏目ToolStripMenuItem.Name = "删除栏目ToolStripMenuItem"; + this.删除栏目ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.删除栏目ToolStripMenuItem.Text = "删除栏目"; + this.删除栏目ToolStripMenuItem.Click += new System.EventHandler(this.删除栏目ToolStripMenuItem_Click); + // + // MenuTabType + // + this.MenuTabType.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.新增分类ToolStripMenuItem, + this.Menu修改分类, + this.Menu删除分类}); + this.MenuTabType.Name = "MenuTab"; + this.MenuTabType.Size = new System.Drawing.Size(125, 70); + this.MenuTabType.Opening += new System.ComponentModel.CancelEventHandler(this.MenuTabType_Opening); + // + // 新增分类ToolStripMenuItem + // + this.新增分类ToolStripMenuItem.Name = "新增分类ToolStripMenuItem"; + this.新增分类ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.新增分类ToolStripMenuItem.Text = "新增分类"; + this.新增分类ToolStripMenuItem.Click += new System.EventHandler(this.新增分类ToolStripMenuItem_Click); + // + // Menu修改分类 + // + this.Menu修改分类.Name = "Menu修改分类"; + this.Menu修改分类.Size = new System.Drawing.Size(124, 22); + this.Menu修改分类.Text = "修改分类"; + this.Menu修改分类.Click += new System.EventHandler(this.Menu修改分类_Click); + // + // Menu删除分类 + // + this.Menu删除分类.Name = "Menu删除分类"; + this.Menu删除分类.Size = new System.Drawing.Size(124, 22); + this.Menu删除分类.Text = "删除分类"; + this.Menu删除分类.Click += new System.EventHandler(this.Menu删除分类_Click); + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(4, 3); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(80, 60); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 5; + this.pictureBox1.TabStop = false; + // + // LblDrag + // + this.LblDrag.BackColor = System.Drawing.Color.Black; + this.LblDrag.Location = new System.Drawing.Point(716, 111); + this.LblDrag.Name = "LblDrag"; + this.LblDrag.Size = new System.Drawing.Size(2, 89); + this.LblDrag.TabIndex = 6; + this.LblDrag.Visible = false; + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.MenuTray; + this.notifyIcon1.Visible = true; + this.notifyIcon1.DoubleClick += new System.EventHandler(this.显示主窗体ToolStripMenuItem_Click); + // + // MenuTray + // + this.MenuTray.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.显示主窗体ToolStripMenuItem, + this.打开官网ToolStripMenuItem, + this.捐助ToolStripMenuItem, + this.设置ToolStripMenuItem, + this.退出软件ToolStripMenuItem}); + this.MenuTray.Name = "MenuTray"; + this.MenuTray.Size = new System.Drawing.Size(137, 114); + // + // 显示主窗体ToolStripMenuItem + // + this.显示主窗体ToolStripMenuItem.Name = "显示主窗体ToolStripMenuItem"; + this.显示主窗体ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.显示主窗体ToolStripMenuItem.Text = "显示主窗体"; + this.显示主窗体ToolStripMenuItem.Click += new System.EventHandler(this.显示主窗体ToolStripMenuItem_Click); + // + // 打开官网ToolStripMenuItem + // + this.打开官网ToolStripMenuItem.Name = "打开官网ToolStripMenuItem"; + this.打开官网ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.打开官网ToolStripMenuItem.Text = "打开官网"; + this.打开官网ToolStripMenuItem.Click += new System.EventHandler(this.打开官网ToolStripMenuItem_Click); + // + // 捐助ToolStripMenuItem + // + this.捐助ToolStripMenuItem.Name = "捐助ToolStripMenuItem"; + this.捐助ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.捐助ToolStripMenuItem.Text = "捐助"; + this.捐助ToolStripMenuItem.Click += new System.EventHandler(this.捐助ToolStripMenuItem_Click); + // + // 设置ToolStripMenuItem + // + this.设置ToolStripMenuItem.Name = "设置ToolStripMenuItem"; + this.设置ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.设置ToolStripMenuItem.Text = "设置"; + this.设置ToolStripMenuItem.Click += new System.EventHandler(this.设置ToolStripMenuItem_Click); + // + // 退出软件ToolStripMenuItem + // + this.退出软件ToolStripMenuItem.Name = "退出软件ToolStripMenuItem"; + this.退出软件ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.退出软件ToolStripMenuItem.Text = "退出软件"; + this.退出软件ToolStripMenuItem.Click += new System.EventHandler(this.退出软件ToolStripMenuItem_Click); + // + // LblSetting + // + this.LblSetting.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblSetting.AutoSize = true; + this.LblSetting.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblSetting.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblSetting.ForeColor = System.Drawing.Color.Blue; + this.LblSetting.Location = new System.Drawing.Point(681, 9); + this.LblSetting.Name = "LblSetting"; + this.LblSetting.Size = new System.Drawing.Size(29, 12); + this.LblSetting.TabIndex = 7; + this.LblSetting.Text = "设置"; + this.LblSetting.Click += new System.EventHandler(this.LblSetting_Click); + // + // TabList_Type + // + this.TabList_Type.AllowDrop = true; + this.TabList_Type.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.TabList_Type.BackColor = System.Drawing.SystemColors.Control; + this.TabList_Type.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TabList_Type.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader2}); + this.TabList_Type.ContextMenuStrip = this.MenuTabType; + this.TabList_Type.HideSelection = false; + this.TabList_Type.Icon = null; + this.TabList_Type.IsDrawGridLines = false; + this.TabList_Type.IsDrawIcon = false; + this.TabList_Type.Location = new System.Drawing.Point(4, 65); + this.TabList_Type.Margin = new System.Windows.Forms.Padding(0); + this.TabList_Type.MultiSelect = false; + this.TabList_Type.Name = "TabList_Type"; + this.TabList_Type.OwnerDraw = true; + this.TabList_Type.Scrollable = false; + this.TabList_Type.SelectedBorderColor = System.Drawing.Color.LightSkyBlue; + this.TabList_Type.SelectedEndBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(236)))), ((int)(((byte)(181))))); + this.TabList_Type.SelectedForeColor = System.Drawing.Color.Black; + this.TabList_Type.SelectedStartBackColor = System.Drawing.Color.LightSkyBlue; + this.TabList_Type.Size = new System.Drawing.Size(77, 445); + this.TabList_Type.TabIndex = 4; + this.TabList_Type.TileSize = new System.Drawing.Size(77, 28); + this.TabList_Type.UseCompatibleStateImageBehavior = false; + this.TabList_Type.View = System.Windows.Forms.View.Tile; + this.TabList_Type.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.TabList_Type_ItemDrag); + this.TabList_Type.SelectedIndexChanged += new System.EventHandler(this.TabList_Type_SelectedIndexChanged); + this.TabList_Type.DragDrop += new System.Windows.Forms.DragEventHandler(this.TabList_Type_DragDrop); + this.TabList_Type.DragEnter += new System.Windows.Forms.DragEventHandler(this.TabList_Type_DragEnter); + this.TabList_Type.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); + this.TabList_Type.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TabList_Type_KeyDown); + // + // columnHeader2 + // + this.columnHeader2.Width = 80; + // + // TabList_Column + // + this.TabList_Column.Alignment = System.Windows.Forms.ListViewAlignment.Left; + this.TabList_Column.AllowDrop = true; + this.TabList_Column.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TabList_Column.BackColor = System.Drawing.SystemColors.Control; + this.TabList_Column.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TabList_Column.ContextMenuStrip = this.MenuTabColumn; + this.TabList_Column.HideSelection = false; + this.TabList_Column.Icon = null; + this.TabList_Column.IsDrawGridLines = false; + this.TabList_Column.IsDrawIcon = false; + this.TabList_Column.Location = new System.Drawing.Point(87, 34); + this.TabList_Column.Margin = new System.Windows.Forms.Padding(0); + this.TabList_Column.MultiSelect = false; + this.TabList_Column.Name = "TabList_Column"; + this.TabList_Column.OwnerDraw = true; + this.TabList_Column.Scrollable = false; + this.TabList_Column.SelectedBorderColor = System.Drawing.Color.LightSkyBlue; + this.TabList_Column.SelectedEndBackColor = System.Drawing.Color.SkyBlue; + this.TabList_Column.SelectedForeColor = System.Drawing.Color.Black; + this.TabList_Column.SelectedStartBackColor = System.Drawing.Color.PowderBlue; + this.TabList_Column.Size = new System.Drawing.Size(589, 29); + this.TabList_Column.TabIndex = 1; + this.TabList_Column.TileSize = new System.Drawing.Size(70, 30); + this.TabList_Column.UseCompatibleStateImageBehavior = false; + this.TabList_Column.View = System.Windows.Forms.View.Tile; + this.TabList_Column.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.TabList_Column_ItemDrag); + this.TabList_Column.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.TabList_Column_ItemSelectionChanged); + this.TabList_Column.DragDrop += new System.Windows.Forms.DragEventHandler(this.TabList_Column_DragDrop); + this.TabList_Column.DragEnter += new System.Windows.Forms.DragEventHandler(this.TabList_Column_DragEnter); + this.TabList_Column.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); + this.TabList_Column.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TabList_Column_KeyDown); + // + // rySearch1 + // + this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch1.BaseColor = System.Drawing.Color.Teal; + this.rySearch1.ColorGradient = true; + this.rySearch1.EmptyText = "输入名称或拼音即可搜索"; + this.rySearch1.Location = new System.Drawing.Point(87, 6); + this.rySearch1.Name = "rySearch1"; + this.rySearch1.Size = new System.Drawing.Size(229, 27); + this.rySearch1.TabIndex = 2; + this.rySearch1.UseDefSkin = false; + this.rySearch1.OnSearch += new System.EventHandler(this.rySearch1_OnSearch); + this.rySearch1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.rySearch1_KeyDown); + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BackColor = System.Drawing.Color.White; + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.LblEmpty); + this.panelEx1.Controls.Add(this.IconViewEx1); + this.panelEx1.Location = new System.Drawing.Point(84, 65); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Padding = new System.Windows.Forms.Padding(3); + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(626, 448); + this.panelEx1.TabIndex = 1; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + this.panelEx1.Resize += new System.EventHandler(this.panelEx1_Resize); + // + // LblEmpty + // + this.LblEmpty.AutoSize = true; + this.LblEmpty.BackColor = System.Drawing.Color.Transparent; + this.LblEmpty.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblEmpty.ForeColor = System.Drawing.Color.Silver; + this.LblEmpty.Location = new System.Drawing.Point(31, 196); + this.LblEmpty.Name = "LblEmpty"; + this.LblEmpty.Size = new System.Drawing.Size(456, 19); + this.LblEmpty.TabIndex = 1; + this.LblEmpty.Text = "暂无软件,请右击列表或者直接拖放文件到列表中添加"; + this.LblEmpty.Visible = false; + // + // IconViewEx1 + // + this.IconViewEx1.AllowDrop = true; + this.IconViewEx1.BackColor = System.Drawing.Color.White; + this.IconViewEx1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.IconViewEx1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.IconViewEx1.ContextMenuStrip = this.MenuList; + this.IconViewEx1.Dock = System.Windows.Forms.DockStyle.Fill; + this.IconViewEx1.HideSelection = false; + this.IconViewEx1.Icon = ((System.Drawing.Image)(resources.GetObject("IconViewEx1.Icon"))); + this.IconViewEx1.IconSize = 64; + this.IconViewEx1.IsDrawGridLines = false; + this.IconViewEx1.IsDrawIcon = true; + this.IconViewEx1.Location = new System.Drawing.Point(3, 3); + this.IconViewEx1.MultiSelect = false; + this.IconViewEx1.Name = "IconViewEx1"; + this.IconViewEx1.OwnerDraw = true; + this.IconViewEx1.SelectedBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(229)))), ((int)(((byte)(195)))), ((int)(((byte)(101))))); + this.IconViewEx1.SelectedEndBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(236)))), ((int)(((byte)(181))))); + this.IconViewEx1.SelectedStartBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(251)))), ((int)(((byte)(237))))); + this.IconViewEx1.Size = new System.Drawing.Size(620, 442); + this.IconViewEx1.TabIndex = 0; + this.IconViewEx1.TextHeight = 20; + this.IconViewEx1.TileSize = new System.Drawing.Size(100, 100); + this.IconViewEx1.UseCompatibleStateImageBehavior = false; + this.IconViewEx1.View = System.Windows.Forms.View.Tile; + this.IconViewEx1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.IconViewEx1_ItemDrag); + this.IconViewEx1.DragDrop += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragDrop); + this.IconViewEx1.DragEnter += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragEnter); + this.IconViewEx1.DragOver += new System.Windows.Forms.DragEventHandler(this.IconViewEx1_DragOver); + this.IconViewEx1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.IconViewEx1_KeyDown); + this.IconViewEx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.IconViewEx1_MouseClick); + this.IconViewEx1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.IconViewEx1_MouseDoubleClick); + this.IconViewEx1.Resize += new System.EventHandler(this.IconViewEx1_Resize); + // + // FrmVSoft + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(722, 525); + this.Controls.Add(this.LblSetting); + this.Controls.Add(this.LblDrag); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.TabList_Type); + this.Controls.Add(this.BtnAddColumn); + this.Controls.Add(this.TabList_Column); + this.Controls.Add(this.rySearch1); + this.Controls.Add(this.panelEx1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmVSoft"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "VSoft"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmVSoft_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmVSoft_FormClosed); + this.Load += new System.EventHandler(this.FrmVSoft_Load); + this.ResizeEnd += new System.EventHandler(this.FrmVSoft_ResizeEnd); + this.Resize += new System.EventHandler(this.FrmVSoft_Resize); + this.MenuList.ResumeLayout(false); + this.MenuTabColumn.ResumeLayout(false); + this.MenuTabType.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.MenuTray.ResumeLayout(false); + this.panelEx1.ResumeLayout(false); + this.panelEx1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.IconViewEx IconViewEx1; + private ryControls.PanelEx panelEx1; + private ryControls.rySearch rySearch1; + private System.Windows.Forms.ContextMenuStrip MenuList; + private System.Windows.Forms.ToolStripMenuItem 从列表删除该软件ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 新增软件ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改软件ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 打开软件所在位置ToolStripMenuItem; + private ryControls.TabList TabList_Column; + private System.Windows.Forms.Button BtnAddColumn; + private System.Windows.Forms.ContextMenuStrip MenuTabColumn; + private System.Windows.Forms.ToolStripMenuItem 修改栏目ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除栏目ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 以管理员方式启动ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private ryControls.TabList TabList_Type; + private System.Windows.Forms.ContextMenuStrip MenuTabType; + private System.Windows.Forms.ToolStripMenuItem 新增分类ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem Menu修改分类; + private System.Windows.Forms.ToolStripMenuItem Menu删除分类; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Label LblDrag; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.NotifyIcon notifyIcon1; + private System.Windows.Forms.ContextMenuStrip MenuTray; + private System.Windows.Forms.ToolStripMenuItem 显示主窗体ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 退出软件ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 打开官网ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 捐助ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 新增内置功能ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 添加栏目ToolStripMenuItem; + private System.Windows.Forms.Label LblEmpty; + private System.Windows.Forms.Label LblSetting; + } } \ No newline at end of file diff --git a/Source/VSoft_Dll/FrmVSoft.cs b/Source/VSoft_Dll/FrmVSoft.cs index d445393..33e8538 100644 --- a/Source/VSoft_Dll/FrmVSoft.cs +++ b/Source/VSoft_Dll/FrmVSoft.cs @@ -1,1333 +1,1368 @@ -using ryCommon; -using ryCommonDb; -using ryControls; -using SysFuns; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; -using VSoft.Config; -using VSoft.Prams; - -namespace VSoft -{ - public partial class FrmVSoft : Form - { - string[] prog_args; - string SQLConnStr = Itrycn_Db.SQLConnStr; - public FrmVSoft(string[] args) - { - InitializeComponent(); - prog_args = args; - //配置软件信息 - notifyIcon1.Text = Config.Soft_Info.Soft_Title; - Text = Config.Soft_Info.Soft_Title + " V" + RySoft.VersionStr; - if (!Config.Soft_Info.ShowTray) { notifyIcon1.Visible = false; } - if (!Config.Soft_Info.DonateVisabled) { 捐助ToolStripMenuItem.Text = "关于"; } - if (Config.Soft_Info.Soft_Url.Length == 0) { 打开官网ToolStripMenuItem.PerformClick(); } - notifyIcon1.Icon = Icon; - } - private bool IsProcUse = false; - private void LoadDb() - { - LoadDb(false); - } - private void LoadDb(bool isSearch) - { - IconViewEx1.Items.Clear(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - var id = GetCurColumnId(); - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - mySQL.AddField("SearchText", "%" + rySearch1.Text + "%"); - var sql = "select * from Softs where (Name like @SearchText or Path like @SearchText or Des like @SearchText or PinYin like @SearchText)"; - if (isSearch) - { - IsProcUse = true; - TabList_Column.SelectedItems.Clear(); - TabList_Type.Items.Clear(); - TabList_Type.Items.Add("默认分类").Tag = 0; - IsProcUse = false; - } - else - { - if (id > 0) - { - sql += " and ColumnId=" + id; - } - else { sql += " and ColumnId<=0"; } - } - DataSet ds = db.ReadData(sql + " order by sortindex asc,AddTime desc", mySQL); - IconViewEx1.BeginUpdate(); - for (int i = 0; i < ds.Tables[0].Rows.Count; i++) - { - DataRow row = ds.Tables[0].Rows[i]; - SoftInfo info = new SoftInfo(); - info.Id = row["id"].ToInt(); - info.SoftType = row["SoftType"].ToInt(); - info.ColumnId = row["ColumnId"].ToInt(); - info.Name = row["Name"].ToString(); - info.Path = row["Path"].ToString(); - info.RunPram = row["RunPram"].ToString(); - info.SetJson = row["SetJson"].ToString(); - info.StartPath= row["StartPath"].ToString(); - info.IconPath = row["IconPath"].ToString(); - if (info.IconPath.Length == 0) - { - info.Image = API.GetImg(info.TruePath,128); - } - else - { - info.Image = API.GetImg(RyFiles.GetRealPath(row["IconPath"].ToString()),128); - } - IconViewEx1.Items.Add(info.Name).Tag = info ; - } - IconViewEx1.EndUpdate(); - db.Free(); - if(IconViewEx1.Items.Count==0) - { - LblEmpty.Visible = true; - } - else { LblEmpty.Visible = false; } - } - } - private void LoadColumn() - { - TabList_Column.Items.Clear(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - TabList_Column.BeginUpdate(); - DataSet ds = db.ReadData("select * from Columns where parentId=0 order by sortindex asc"); - for (int i = 0; i < ds.Tables[0].Rows.Count; i++) - { - DataRow row = ds.Tables[0].Rows[i]; - TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); - } - if(ds.Tables[0].Rows.Count==0) - { - #region 如果没有栏目,则创建一个栏目 - RyQuickSQL mySQL = new RyQuickSQL("Columns"); - mySQL.AddField("Name", "默认栏目"); - mySQL.AddField("editTime", DateTime.Now); - mySQL.AddField("sortindex", 1); - mySQL.AddField("parentId", 0); - mySQL.AddField("addTime", DateTime.Now); - db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL); - DataSet ds2 = db.ReadData("select * from Columns where parentId=0 order by sortindex asc"); - for (int i = 0; i < ds2.Tables[0].Rows.Count; i++) - { - DataRow row = ds2.Tables[0].Rows[i]; - TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); - } - ds2.Dispose(); - #endregion - } - ds.Dispose(); - TabList_Column.EndUpdate(); - db.Free(); - } - if(TabList_Column.Items.Count>0) - { - TabList_Column.Items[0].Selected = true; - } - } - private void LoadTypeColumn(int id) - { - TabList_Type.Items.Clear(); - TabList_Type.Items.Add("默认分类").Tag = 0; - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Columns where parentId="+ id + " order by sortindex asc"); - TabList_Type.BeginUpdate(); - for (int i = 0; i < ds.Tables[0].Rows.Count; i++) - { - DataRow row = ds.Tables[0].Rows[i]; - TabList_Type.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); - } - ds.Dispose(); - TabList_Type.EndUpdate(); - db.Free(); - } - if (TabList_Type.Items.Count > 0) - { - TabList_Type.Items[0].Selected = true; - } - } - SysFuns.WinHotReg hotkey; - private void FrmVSoft_Load(object sender, EventArgs e) - { - MinimumSize = new Size(400, 200); - LblEmpty.Left =((panelEx1.Width - LblEmpty.Width) / 2); - Config.Soft_Info.UserDataFolder = ryCommon.RyFiles.GetRealPath(Config.Soft_Info.UserDataFolder); - VSoft.Prams.Itrycn_Db.CreateTable(); - VSoft.Config.Soft_Config.LoadSetting(); - LoadColumn(); - //rySearch1.PerformClick(); - //if(RySoft.IsAdministrator()) - //{ - // MessageBox.Show("管理员模式下启动本软件,可能会导致无法拖放图标到本软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - //} - hotkey = new SysFuns.WinHotReg(Handle); - HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey); - hotkey.RegHotKey(100,hot.Modifiers_Int, hot.KeyCode); - hotkey.OnHotkey += Hotkey_OnHotkey; - ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; - //如果开机启动没有启动 - if(!ryCommon.RyRegedit.IsAutoRun(Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" " + Soft_Info.Soft_Pram)) - { - switch (MessageBox.Show("您暂未设置开机启动,下次开机后软件将无法自动运行。\r\n设置过程中可能会遇到安全软件提示,请选择允许。\r\n\r\n是否要设置开机启动?", "开机启动", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)) - { - case DialogResult.Yes: - ryCommon.RyRegedit.SetAutoRun(true, Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" " + Soft_Info.Soft_Pram); - break; - } - } - LiveUpdate.RyUpdate update = new LiveUpdate.RyUpdate(Soft_Info.Update_Url); - update.CheckUpdate(); - } - - private void Hotkey_OnHotkey(int HotKeyID) - { - switch (HotKeyID) - { - case 100: - if (this.Visible && RyForm.GetActiveWindow()==Handle) - { - this.Hide(); - } - else - { - 显示主窗体ToolStripMenuItem.PerformClick(); - this.BringToFront(); - this.Select(); - this.Focus(); - RyForm.BringToTop(Handle); - rySearch1.Focus(); - } - break; - } - } - - protected override void WndProc(ref System.Windows.Forms.Message msg) - { - switch (msg.Msg) - { - case 17189: //处理消息 - { - #region 激活窗体 - switch (msg.WParam.ToInt32()) - { - case 100:// - #region 显示界面 - if ((int)msg.LParam.ToInt32() == 100) - { - this.Show(); - this.WindowState = FormWindowState.Normal; - this.Top = (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2; - this.Left = (Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2; - //RyForm.SetActiveWindow(Handle); - RyForm.BringToTop(Handle); - 显示主窗体ToolStripMenuItem.PerformClick(); - this.BringToFront(); - this.Select(); - this.Focus(); - RyForm.BringToTop(Handle); - rySearch1.Focus(); - } - #endregion - break; - } - #endregion - } - break; - default: - base.WndProc(ref msg);//调用基类函数处理非自定义消息。 - break; - } - } - - private void rySearch1_OnSearch(object sender, EventArgs e) - { - if(rySearch1.Text.Length==0) - { - MessageBox.Show("请输入内容。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - - } - LoadDb(true); - } - #region 对栏目标签进行操作 - /// - /// 将栏目列表中的第几个栏目修改 - /// - /// - /// - private void SetColumnRow(int id, int index) - { - #region 重新载入数据 - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Columns where id=" + id); - if (mydb.HaveData(ds)) - { - DataRow row = ds.Tables[0].Rows[0]; - var item = TabList_Column.Items[index]; - item.Text = row["Name"].ToString(); - } - db.Free(); - } - #endregion - } - private void BtnAddColumn_Click(object sender, EventArgs e) - { - FrmAddColumn frm = new FrmAddColumn(); - if (frm.ShowDialog() == DialogResult.OK) - { - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Columns where parentId=0 order by sortindex desc limit 1"); - TabList_Column.BeginUpdate(); - if (ds.Tables[0].Rows.Count > 0) - { - DataRow row = ds.Tables[0].Rows[0]; - TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); - } - TabList_Column.EndUpdate(); - db.Free(); - } - } - frm.Dispose(); - } - private void 修改栏目ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (TabList_Column.SelectedItems.Count == 0) { return; } - FrmAddColumn frm = new FrmAddColumn(); - frm.IsAdd = 0; - frm.GetInfo(TabList_Column.SelectedItems[0].Tag.ToInt()); - if (frm.ShowDialog() == DialogResult.OK) - { - SetColumnRow(TabList_Column.SelectedItems[0].Tag.ToInt(), TabList_Column.SelectedItems[0].Index); - } - frm.Dispose(); - } - - private void 删除栏目ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (TabList_Column.SelectedItems.Count == 0) { return; } - if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) - { - return; - } - if (TabList_Column.Items.Count ==1) { - MessageBox.Show("请至少保留一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - var column_id = TabList_Column.SelectedItems[0].Tag.ToInt(); - var ds = db.ReadData("select count(*) from Columns where parentId=" + column_id); - if (mydb.HaveData(ds)) - { - if (mydb.GetValue(ds) > 0) - { - ds.Dispose(); - MessageBox.Show("当前栏目下还有分类,请先移除再删除栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - db.Free(); - return; - } - } - ds.Dispose(); - db.DelById("Columns", column_id.ToString()); - TabList_Column.SelectedItems[0].Remove(); - db.BeginTransaction(); - for (int i = 1; i < TabList_Column.Items.Count; i++) - { - var id = TabList_Column.Items[i].Tag.ToInt(); - RyQuickSQL mySQL = new RyQuickSQL("Columns"); - mySQL.AddField("sortindex", i); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); - } - db.Commit(); - } - db.Free(); - } - #endregion - #region 对分类标签进行操作 - /// - ///将分类列表中的第几个分类进行修改 - /// - /// - /// - private void SetTypeRow(int id, int index) - { - #region 重新载入数据 - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Columns where id=" + id); - if (mydb.HaveData(ds)) - { - DataRow row = ds.Tables[0].Rows[0]; - var item = TabList_Type.Items[index]; - item.Text = row["Name"].ToString(); - } - db.Free(); - } - #endregion - } - private void 新增分类ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (TabList_Column.SelectedItems.Count == 0) - { - MessageBox.Show("请先选择一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var id = TabList_Column.SelectedItems[0].Tag.ToInt(); - FrmAddType frm = new FrmAddType(); - frm.ParentId = id; - if (frm.ShowDialog() == DialogResult.OK) - { - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Columns where parentId=" + id + " order by sortindex desc limit 1"); - TabList_Type.BeginUpdate(); - if(ds.Tables[0].Rows.Count>0) - { - DataRow row = ds.Tables[0].Rows[0]; - TabList_Type.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); - } - TabList_Type.EndUpdate(); - db.Free(); - } - } - frm.Dispose(); - } - - private void Menu修改分类_Click(object sender, EventArgs e) - { - if (TabList_Column.SelectedItems.Count == 0) - { - MessageBox.Show("请先选择一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - if (TabList_Type.SelectedItems.Count == 0) - { - MessageBox.Show("请先选择一个分类。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var id = TabList_Type.SelectedItems[0].Tag.ToInt(); - if (id == 0) { - MessageBox.Show("默认分类不支持修改", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - FrmAddType frm = new FrmAddType(); - frm.IsAdd = 0; - frm.GetInfo(id); - if (frm.ShowDialog() == DialogResult.OK) - { - SetTypeRow(id, TabList_Type.SelectedItems[0].Index); - } - frm.Dispose(); - } - - private void Menu删除分类_Click(object sender, EventArgs e) - { - if (TabList_Type.SelectedItems.Count == 0) { return; } - if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) - { - return; - } - if (TabList_Type.SelectedItems.Count == 0) { return; } - var column_id = TabList_Type.SelectedItems[0].Tag.ToInt(); - if (column_id == 0) { - MessageBox.Show("默认分类不支持删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - var ds = db.ReadData("select count(*) from Softs where ColumnId=" + column_id); - if (mydb.HaveData(ds)) - { - if (mydb.GetValue(ds) > 0) - { - ds.Dispose(); - MessageBox.Show("当前分类下还有软件,请先移除再删除分类。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - db.Free(); - return; - } - } - ds.Dispose(); - db.DelById("Columns", column_id.ToString()); - TabList_Type.SelectedItems[0].Remove(); - db.BeginTransaction(); - for (int i = 1; i < TabList_Type.Items.Count; i++) - { - var id = TabList_Type.Items[i].Tag.ToInt(); - RyQuickSQL mySQL = new RyQuickSQL("Columns"); - mySQL.AddField("sortindex", i); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); - } - db.Commit(); - } - db.Free(); - } - #endregion - #region 对软件列表进行操作 - private void SetSoftRow(int id, int index) - { - #region 重新载入数据 - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - DataSet ds = db.ReadData("select * from Softs where id=" + id); - if (mydb.HaveData(ds)) - { - DataRow row = ds.Tables[0].Rows[0]; - var item = IconViewEx1.Items[index]; - SoftInfo info = (SoftInfo)item.Tag; - info.Id = row["id"].ToInt(); - info.Name = row["Name"].ToString(); - info.Path = row["Path"].ToString(); - info.RunPram = row["RunPram"].ToString(); - info.SetJson = row["SetJson"].ToString(); - info.StartPath = row["StartPath"].ToString(); - info.IconPath = row["IconPath"].ToString(); - info.SoftType = row["SoftType"].ToInt(); - if (info.IconPath.Length == 0) - { - info.Image = API.GetImg(info.TruePath, 128); - } - else - { - info.Image = API.GetImg(RyFiles.GetRealPath(row["IconPath"].ToString()), 128); - } - item.Text = row["Name"].ToString(); - } - db.Free(); - } - #endregion - } - /// - /// 获取当前页面所属的分类或栏目ID - /// - /// - private int GetCurColumnId() - { - var ColumnId = 0; - if (TabList_Type.SelectedItems.Count > 0) - { - ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); - } - if (ColumnId == 0) - { - if (TabList_Column.SelectedItems.Count > 0) - { - ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); - } - } - return ColumnId; - } - private void 新增软件ToolStripMenuItem_Click(object sender, EventArgs e) - { - var ColumnId = GetCurColumnId(); - if (ColumnId == 0) - { - MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - FrmAddSoft frm = new FrmAddSoft(); - frm.ColumnId = ColumnId; - if (frm.ShowDialog() == DialogResult.OK) - { - LoadDb(); - } - frm.Dispose(); - } - private void 修改软件ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; - FrmAddSoft frm = new FrmAddSoft(); - frm.SelectId = info.Id; - frm.IsAdd = 0; - frm.GetInfo(info.Id); - if (frm.ShowDialog() == DialogResult.OK) - { - SetSoftRow(info.Id, IconViewEx1.SelectedItems[0].Index); - } - frm.Dispose(); - } - private void 从列表删除该软件ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) - { - return; - } - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - for (int i = IconViewEx1.SelectedItems.Count - 1; i >= 0; i--) - { - var info = (SoftInfo)IconViewEx1.SelectedItems[i].Tag; - if(info.IconPath.Length>0 && info.IconPath.StartsWith("\\UserDb\\SoftLogos", StringComparison.OrdinalIgnoreCase)) - { - RyFiles.DeleteFile(RyFiles.GetRealPath(info.IconPath)); - } - db.DelById("Softs", info.Id.ToString()); - IconViewEx1.SelectedItems[i].Remove(); - if (IconViewEx1.Items.Count == 0) - { - LblEmpty.Visible = true; - } - else { LblEmpty.Visible = false; } - } - ReSortSoftByList(db); - } - db.Free(); - } - private void 以管理员方式启动ToolStripMenuItem_Click(object sender, EventArgs e) - { - RunByListSelected(true); - } - private void 打开软件所在位置ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; - if (System.IO.File.Exists(info.TruePath) || System.IO.Directory.Exists(info.TruePath)) - { - RyFiles.OpenFolderGotoFile(info.TruePath); - } - else - { - MessageBox.Show("没有找到文件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - private void RunByListSelected(bool RunasAdmin) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; - var result= VSoft.Prams.Run.Open(info, RunasAdmin); - if (result>36 && VSoft.Config.Soft_Config.HideAfterRun) { this.Hide(); } - } - private void IconViewEx1_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Enter) - { - RunByListSelected(false); - } - else if (e.KeyCode == Keys.Up) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - var item = IconViewEx1.SelectedItems[0]; - if(item.Position.Y== IconViewEx1.Items[0].Position.Y) - { - IconViewEx1.SelectedItems.Clear(); - if (TabList_Column.SelectedItems.Count == 0) - { - TabList_Column.Items[0].Selected = true; - } - TabList_Column.Focus(); - var color = TabList_Column.SelectedBackColor; - TabList_Column.SelectedBackColor = Color.LightYellow; - using (var bg = new BackgroundWorker()) - { - bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 - bg.RunWorkerCompleted += delegate { - this.Invoke(new Action(() => - { - TabList_Column.SelectedBackColor = color; - })); - }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 - bg.RunWorkerAsync(); - } - } - } - else if (e.KeyCode == Keys.Left) - { - if (IconViewEx1.SelectedItems.Count == 0) { return; } - var item = IconViewEx1.SelectedItems[0]; - if (item.Index==0 || item.Position.X== IconViewEx1.Items[0].Position.X) - { - IconViewEx1.SelectedItems.Clear(); - if (TabList_Type.SelectedItems.Count == 0) - { - TabList_Type.Items[0].Selected = true; - } - TabList_Type.Focus(); - var color = TabList_Type.SelectedBackColor; - TabList_Type.SelectedBackColor = Color.LightYellow; - using (var bg = new BackgroundWorker()) - { - bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 - bg.RunWorkerCompleted += delegate { - this.Invoke(new Action(() => - { - TabList_Type.SelectedBackColor = color; - })); - }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 - bg.RunWorkerAsync(); - } - } - } - } - private void IconViewEx1_MouseDoubleClick(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - if (Soft_Config.OpenByClick) { return; } - RunByListSelected(false); - } - } - #endregion - - #region 软件列表拖放 - private void IconViewEx1_ItemDrag(object sender, ItemDragEventArgs e) - { - this.DoDragDrop(e.Item, DragDropEffects.Move); - } - - private void IconViewEx1_DragEnter(object sender, DragEventArgs e) - { - LblDrag.Height = IconViewEx1.TileSize.Height; - LblDrag.Parent = IconViewEx1; - ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); - if (lvi != null) - { - if (lvi.ListView != IconViewEx1) - { - e.Effect = DragDropEffects.None; - return; - } - } - e.Effect = DragDropEffects.Move; - } - private void IconViewEx1_DragDrop(object sender, DragEventArgs e) - { - LblDrag.Visible = false; - var filedrop = e.Data.GetData(DataFormats.FileDrop); - if (filedrop != null) - { - #region 拖放文件到软件列表 - var ColumnId = 0; - if (TabList_Type.SelectedItems.Count > 0) - { - ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); - } - if (ColumnId == 0) - { - if (TabList_Column.SelectedItems.Count > 0) - { - ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); - } - } - if(ColumnId==0) - { - MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - var path = ((string[])filedrop)[0]; - FrmAddSoft frm = new FrmAddSoft(path); - frm.ColumnId = ColumnId; - if (frm.ShowDialog() == DialogResult.OK) - { - LoadDb(); - } - frm.Dispose(); - return; - #endregion - } - Point pt; - pt = ((IconViewEx)(sender)).PointToClient(new Point(e.X, e.Y)); - var to_item = IconViewEx1.GetItemAt(pt.X, pt.Y); - if (to_item == null) { return; } - //获得拖放中的项 - ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); - if (lvi == null) { return; } - if (lvi.ListView!=IconViewEx1) { return; } - if (lvi.Index == to_item.Index) { return; } - IconViewEx1.BeginUpdate(); - IconViewEx1.View = View.List; - IconViewEx1.Items.RemoveAt(lvi.Index); - IconViewEx1.Items.Insert(to_item.Index, lvi); - IconViewEx1.View = View.Tile; - IconViewEx1.EndUpdate(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - ReSortSoftByList(db); - } - db.Free(); - } - private void IconViewEx1_DragOver(object sender, DragEventArgs e) - { - ListViewItem item = null; - if (sender is IconViewEx) - { - var filedrop = e.Data.GetData(DataFormats.FileDrop); - if (filedrop != null) { - if (LblDrag.Visible) { LblDrag.Visible = false; } - return; - } - var lvi = e.Data.GetData(typeof(ListViewItem)); - if(lvi==null) - { - if (LblDrag.Visible) { LblDrag.Visible = false; } - return; - } - else - { - var lvi2 = (ListViewItem)lvi; - if(lvi2.ListView!=IconViewEx1) - { - if (LblDrag.Visible){LblDrag.Visible = false;} - return; - } - } - var list = ((IconViewEx)(sender)); - var pt = list.PointToClient(new Point(e.X, e.Y)); - item = list.GetItemAt(pt.X, pt.Y); - } - else if (sender is TabList) - { - var list = ((TabList)(sender)); - var pt = list.PointToClient(new Point(e.X, e.Y)); - item = list.GetItemAt(pt.X, pt.Y); - } - if (item == null) - { - if (LblDrag.Visible) - { - LblDrag.Visible = false; - } - } - else - { - if (!LblDrag.Visible) - { - LblDrag.Visible = true; - } - LblDrag.Location = item.Position; - } - } - #endregion - #region 栏目拖放 - private void TabList_Column_DragEnter(object sender, DragEventArgs e) - { - //判定是否现在拖动的数据是LISTVIEW项 - ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); - if (lvi != null) - { - LblDrag.Height = TabList_Column.TileSize.Height; - LblDrag.Parent = TabList_Column; - e.Effect = DragDropEffects.Move; - } - } - private void TabList_Column_DragDrop(object sender, DragEventArgs e) - { - LblDrag.Visible = false; - Point pt; - pt = ((TabList)(sender)).PointToClient(new Point(e.X, e.Y)); - var item = TabList_Column.GetItemAt(pt.X, pt.Y); - if (item == null) { return; } - var columnid = item.Tag.ToInt(); - //获得拖放中的项 - var drag_item = e.Data.GetData(typeof(ListViewItem)); - if (drag_item == null) { return; } - ListViewItem lvi = (ListViewItem)drag_item; - if (lvi.ListView == IconViewEx1) - { - #region 从软件列表里拖放 - var info = (SoftInfo)lvi.Tag; - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - mySQL.AddField("ColumnId", columnid); - mySQL.AddField("editTime", DateTime.Now); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, columnid) + 1); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); - if (TabList_Column.SelectedItems.Count > 0) - { - if (TabList_Column.SelectedItems[0].Tag.ToInt() != columnid) - { - lvi.Remove(); - } - else if (TabList_Type.SelectedItems.Count > 0 && TabList_Type.SelectedItems[0].Tag.ToInt() > 0) - { - lvi.Remove(); - } - } - else - { - lvi.Remove(); - } - ReSortSoftByList(db); - } - db.Free(); - #endregion - } - else if (lvi.ListView == TabList_Column) - { - if (lvi.Index == item.Index) { return; } - TabList_Column.BeginUpdate(); - TabList_Column.View = View.List; - TabList_Column.Items.RemoveAt(lvi.Index); - TabList_Column.Items.Insert(item.Index, lvi); - TabList_Column.View = View.Tile; - TabList_Column.EndUpdate(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - db.BeginTransaction(); - for (int i = 0; i < TabList_Column.Items.Count; i++) - { - var id = TabList_Column.Items[i].Tag.ToInt(); - RyQuickSQL mySQL = new RyQuickSQL("Columns"); - mySQL.AddField("sortindex", i + 1); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); - } - db.Commit(); - } - db.Free(); - } - } - private void TabList_Column_ItemDrag(object sender, ItemDragEventArgs e) - { - this.DoDragDrop(e.Item, DragDropEffects.Move); - } - #endregion - #region 分类拖放 - private void TabList_Type_DragEnter(object sender, DragEventArgs e) - { - //判定是否现在拖动的数据是LISTVIEW项 - ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); - if (lvi != null) - { - LblDrag.Height = TabList_Type.TileSize.Height; - LblDrag.Parent = TabList_Type; - e.Effect = DragDropEffects.Move; - } - } - - private void TabList_Type_DragDrop(object sender, DragEventArgs e) - { - LblDrag.Visible = false; - Point pt; - pt = ((TabList)(sender)).PointToClient(new Point(e.X, e.Y)); - var item = TabList_Type.GetItemAt(pt.X, pt.Y); - if (item == null) { return; } - var columnid = item.Tag.ToInt(); - if (columnid == 0) - { - if (TabList_Column.SelectedItems.Count>0) - { - columnid = TabList_Column.SelectedItems[0].Tag.ToInt(); - } - } - //获得拖放中的项 - var drag_item = e.Data.GetData(typeof(ListViewItem)); - if (drag_item == null) { return; } - ListViewItem lvi = (ListViewItem)drag_item; - if (lvi.ListView == IconViewEx1) - { - #region 来源自软件列表 - var info = (SoftInfo)lvi.Tag; - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - mySQL.AddField("ColumnId", columnid); - mySQL.AddField("editTime", DateTime.Now); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, columnid) + 1); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); - if (TabList_Type.SelectedItems.Count > 0) - { - if (TabList_Type.SelectedItems[0].Tag.ToInt() != columnid) - { - lvi.Remove(); - } - } - else { lvi.Remove(); } - ReSortSoftByList(db); - } - db.Free(); - #endregion - } - else if (lvi.ListView == TabList_Type) - { - if (lvi.Index == item.Index || item.Index==0 || lvi.Index==0) { return; } - TabList_Type.BeginUpdate(); - TabList_Type.View = View.List; - TabList_Type.Items.RemoveAt(lvi.Index); - TabList_Type.Items.Insert(item.Index, lvi); - TabList_Type.View = View.Tile; - TabList_Type.EndUpdate(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - db.BeginTransaction(); - for (int i = 1; i < TabList_Type.Items.Count; i++) - { - var id = TabList_Type.Items[i].Tag.ToInt(); - RyQuickSQL mySQL = new RyQuickSQL("Columns"); - mySQL.AddField("sortindex", i); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" +id, mySQL); - } - db.Commit(); - } - db.Free(); - } - } - private void TabList_Type_ItemDrag(object sender, ItemDragEventArgs e) - { - this.DoDragDrop(e.Item, DragDropEffects.Move); - } - #endregion - private void FrmVSoft_Shown(object sender, EventArgs e) - { - ryCommon.Ini ini = new Ini(VSoft.Config.Soft_Info.UserDataFolder + "\\Win.dat"); - ini.WriteIni(VSoft.Config.Soft_Info.Soft_Id, "hwnd", Handle.ToInt32()); - var width=ini.ReadIni(VSoft.Config.Soft_Info.Soft_Id, "width",Width); - var height = ini.ReadIni(VSoft.Config.Soft_Info.Soft_Id, "height", Height); - if(width>=400 && height>=200) - { - Width = width; - Height = height; - } - if (prog_args.Length >= 1) - { - //如果是自启动,并且开启了右下角托盘图标,则隐藏自身。 - if (prog_args[0] == Soft_Info.Soft_Pram && Soft_Info.ShowTray) - this.Hide(); - } - } - private void TabList_Type_SelectedIndexChanged(object sender, EventArgs e) - { - if (IsProcUse) { return; } - LoadDb(); - } - private void TabList_Column_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) - { - if (IsProcUse) { return; } - if (TabList_Column.SelectedItems.Count > 0) - { - LoadTypeColumn(TabList_Column.SelectedItems[0].Tag.ToInt()); - } - else - { - LoadTypeColumn(-1); - } - //LoadDb(); - } - /// - /// 将当前列表中的软件在数据库中排序 - /// - /// - private void ReSortSoftByList(IDbInterface db) - { - db.BeginTransaction(); - for (int i = 0; i < IconViewEx1.Items.Count; i++) - { - var info = (SoftInfo)IconViewEx1.Items[i].Tag; - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - mySQL.AddField("sortindex", i + 1); - db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); - } - db.Commit(); - } - - - private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e) - { - this.WindowState = FormWindowState.Normal; - var topmost = this.TopMost; - this.TopMost = true; - this.Show(); - this.TopMost = topmost; - } - - private void 退出软件ToolStripMenuItem_Click(object sender, EventArgs e) - { - Application.Exit(); - } - - private void 打开官网ToolStripMenuItem_Click(object sender, EventArgs e) - { - ryCommon.RyFiles.OpenUrl(Config.Soft_Info.Soft_Url); - } - - private void 捐助ToolStripMenuItem_Click(object sender, EventArgs e) - { - if (Config.Soft_Info.DonateVisabled) - { - FrmAbout frm = new FrmAbout(); - frm.ShowDialog(); - frm.Dispose(); - } - else - { - MessageBox.Show(Config.Soft_Info.AboutText.Replace("#softname#", Config.Soft_Info.Soft_Title).Replace("#ver#", "V" + RySoft.VersionStr), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - - private void 设置ToolStripMenuItem_Click(object sender, EventArgs e) - { - hotkey.Enabled = false; - FrmSetting frm = new FrmSetting(); - if(frm.ShowDialog()==DialogResult.OK) - { - VSoft.Config.Soft_Config.LoadSetting(); - hotkey.UnHotKey(); - HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey); - hotkey.RegHotKey(100,hot.Modifiers_Int, hot.KeyCode); - } - frm.Dispose(); - hotkey.Enabled = true; - } - - private void FrmVSoft_FormClosing(object sender, FormClosingEventArgs e) - { - if (Soft_Info.ShowTray && Soft_Config.HideByCloseBtn && e.CloseReason == CloseReason.UserClosing) - { - e.Cancel = true; - this.Hide(); - notifyIcon1.ShowBalloonTip(3000, Soft_Info.Soft_Title, "软件已经最小化到此处,请右击托盘图标进行关闭。", ToolTipIcon.Info); - return; - } - } - - private void TabList_Column_KeyDown(object sender, KeyEventArgs e) - { - if(e.KeyCode==Keys.Down) - { - if(IconViewEx1.Items.Count>0) - { - if(IconViewEx1.SelectedItems.Count==0) - { - IconViewEx1.Items[0].Selected = true ; - } - IconViewEx1.Focus(); - } - } - else if (e.KeyCode == Keys.Up) - { - rySearch1.Focus(); - } - } - - private void TabList_Type_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Right) - { - if (IconViewEx1.Items.Count > 0) - { - if (IconViewEx1.SelectedItems.Count == 0) - { - IconViewEx1.Items[0].Selected = true; - } - IconViewEx1.Focus(); - } - } - } - - private void rySearch1_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Down) - { - if (TabList_Column.SelectedItems.Count == 0) - { - if (IconViewEx1.Items.Count > 0) - { - if (IconViewEx1.SelectedItems.Count == 0) - { - IconViewEx1.Items[0].Selected = true; - } - IconViewEx1.Focus(); - return; - } - else - { - TabList_Column.Items[0].Selected = true; - } - } - TabList_Column.Focus(); - var color = TabList_Column.SelectedBackColor; - TabList_Column.SelectedBackColor = Color.LightYellow; - using (var bg = new BackgroundWorker()) - { - bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 - bg.RunWorkerCompleted += delegate { - this.Invoke(new Action(() => - { - TabList_Column.SelectedBackColor = color; - })); - }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 - bg.RunWorkerAsync(); - } - } - } - - private void IconViewEx1_MouseClick(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - if (!Soft_Config.OpenByClick) { return; } - RunByListSelected(false); - } - } - - private void 新增内置功能ToolStripMenuItem_Click(object sender, EventArgs e) - { - var ColumnId = 0; - if (TabList_Type.SelectedItems.Count > 0) - { - ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); - } - if (ColumnId == 0) - { - if (TabList_Column.SelectedItems.Count > 0) - { - ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); - } - } - if (ColumnId == 0) - { - MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - FrmInCMD frm = new FrmInCMD(); - if(frm.ShowDialog()==DialogResult.OK) - { - var info = frm.SelectedInfo; - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - mySQL.AddField("Name", info.Name); - mySQL.AddField("SoftType",1);//0表示运行文件,1表示执行内置命令,2表示执行脚本 - mySQL.AddField("Path",frm.SQLConnStr); - if (info.CmdId.Length > 0) - { mySQL.AddField("RunPram","cmdid="+ info.CmdId); } - else - { - mySQL.AddField("RunPram","id="+ info.Id); - } - mySQL.AddField("StartPath","");//起始路径 - mySQL.AddField("IconPath", info.IconPath.Length>0? info.IconPath: info.Path);//图标路径 - mySQL.AddField("SetJson","");//设置 - mySQL.AddField("Des", info.Des);//备注 - mySQL.AddField("Pinyin", ryCommon.PinYin.Convert(info.Name) + "\r\n" + ryCommon.PinYin.ConvertFirstPY(info.Name)); - mySQL.AddField("editTime", DateTime.Now); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(SQLConnStr) == 1) - { - mySQL.AddField("ClickCount", 0);//点击量 - mySQL.AddField("ColumnId", ColumnId); - mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, ColumnId) + 1); - mySQL.AddField("addTime", DateTime.Now); - db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL); - LoadDb(); - } - db.Free(); - } - frm.Dispose(); - } - - private void FrmVSoft_ResizeEnd(object sender, EventArgs e) - { - if (Width > 200 && Height > 200) - { - ryCommon.Ini ini = new Ini(VSoft.Config.Soft_Info.UserDataFolder + "\\Win.dat"); - ini.WriteIni(VSoft.Config.Soft_Info.Soft_Id, "width", Width); - ini.WriteIni(VSoft.Config.Soft_Info.Soft_Id, "height", Height); - } - } - - private void 添加栏目ToolStripMenuItem_Click(object sender, EventArgs e) - { - BtnAddColumn.PerformClick(); - } - - private void MenuTabType_Opening(object sender, CancelEventArgs e) - { - if(TabList_Type.SelectedItems.Count==0) - { - Menu修改分类.Enabled = false; - Menu删除分类.Enabled = false; - } - else - { - if (TabList_Type.SelectedItems[0].Index == 0) - { - Menu修改分类.Enabled = false; - Menu删除分类.Enabled = false; - } - else - { - Menu修改分类.Enabled = true; - Menu删除分类.Enabled = true; - } - } - } - - private void MenuTabColumn_Opening(object sender, CancelEventArgs e) - { - if (TabList_Column.SelectedItems.Count == 0) - { - 修改栏目ToolStripMenuItem.Enabled = false; - 删除栏目ToolStripMenuItem.Enabled = false; - } - else - { - 修改栏目ToolStripMenuItem.Enabled = true; - 删除栏目ToolStripMenuItem.Enabled = true; - } - } - - private void MenuList_Opening(object sender, CancelEventArgs e) - { - bool isSelected = IconViewEx1.SelectedItems.Count>0; - 以管理员方式启动ToolStripMenuItem.Enabled = isSelected; - 修改软件ToolStripMenuItem.Enabled = isSelected; - 从列表删除该软件ToolStripMenuItem.Enabled = isSelected; - 打开软件所在位置ToolStripMenuItem.Enabled = isSelected; - } - - private void IconViewEx1_Resize(object sender, EventArgs e) - { - //LblEmpty.Left = (IconViewEx1.Width - LblEmpty.Width) / 2 + IconViewEx1.Left; - } - - private void FrmVSoft_Resize(object sender, EventArgs e) - { - LblEmpty.Left =((panelEx1.Width - LblEmpty.Width) / 2); - - } - - private void panelEx1_Resize(object sender, EventArgs e) - { - // LblEmpty.Left = panelEx1.Left + ((panelEx1.Width - LblEmpty.Width) / 2); - } - - private void LblSetting_Click(object sender, EventArgs e) - { - 设置ToolStripMenuItem.PerformClick(); - } - } -} +using ryCommon; +using ryCommonDb; +using ryControls; +using SysFuns; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using VSoft.Config; +using VSoft.Prams; + +namespace VSoft +{ + public partial class FrmVSoft : Form + { + string[] prog_args; + string SQLConnStr = Itrycn_Db.SQLConnStr; + MouseHook mouse = new MouseHook(); + public FrmVSoft(string[] args) + { + InitializeComponent(); + prog_args = args; + //配置软件信息 + notifyIcon1.Text = Config.Soft_Info.Soft_Title; + Text = Config.Soft_Info.Soft_Title + " V" + RySoft.VersionStr; + if (!Config.Soft_Info.ShowTray) { notifyIcon1.Visible = false; } + if (!Config.Soft_Info.DonateVisabled) { 捐助ToolStripMenuItem.Text = "关于"; } + if (Config.Soft_Info.Soft_Url.Length == 0) { 打开官网ToolStripMenuItem.PerformClick(); } + + notifyIcon1.Icon = Icon; + } + private void FrmVSoft_FormClosed(object sender, FormClosedEventArgs e) + { + mouse.Stop(); + } + DateTime dt_lastMouse = DateTime.Now; + int clickcount = 1; + private void Mouse_OnMouseActivity(object sender, MouseEventArgs e) + { + if (!Soft_Config.ShowMainMouseKeyOn) { return; } + var button = MouseButtons.Middle; + if(Soft_Config.ShowMainMouseKey==1) + { + button = MouseButtons.XButton1; + } + else if (Soft_Config.ShowMainMouseKey == 2) + { + button = MouseButtons.XButton2; + } + if (e.Button== button) + { + if(Math.Abs((dt_lastMouse-DateTime.Now).TotalMilliseconds)<500) + { + clickcount++; + if (clickcount == 2) + { + ShowOrHideUI(); + } + clickcount = 1; + } + else + { + clickcount = 1; + } + dt_lastMouse = DateTime.Now; + } + // MessageBox.Show(e.Button.ToString()); + // e.Button == MouseButtons.Middle; + } + + private bool IsProcUse = false; + private void LoadDb() + { + LoadDb(false); + } + private void LoadDb(bool isSearch) + { + IconViewEx1.Items.Clear(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + var id = GetCurColumnId(); + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + mySQL.AddField("SearchText", "%" + rySearch1.Text + "%"); + var sql = "select * from Softs where (Name like @SearchText or Path like @SearchText or Des like @SearchText or PinYin like @SearchText)"; + if (isSearch) + { + IsProcUse = true; + TabList_Column.SelectedItems.Clear(); + TabList_Type.Items.Clear(); + TabList_Type.Items.Add("默认分类").Tag = 0; + IsProcUse = false; + } + else + { + if (id > 0) + { + sql += " and ColumnId=" + id; + } + else { sql += " and ColumnId<=0"; } + } + DataSet ds = db.ReadData(sql + " order by sortindex asc,AddTime desc", mySQL); + IconViewEx1.BeginUpdate(); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + SoftInfo info = new SoftInfo(); + info.Id = row["id"].ToInt(); + info.SoftType = row["SoftType"].ToInt(); + info.ColumnId = row["ColumnId"].ToInt(); + info.Name = row["Name"].ToString(); + info.Path = row["Path"].ToString(); + info.RunPram = row["RunPram"].ToString(); + info.SetJson = row["SetJson"].ToString(); + info.StartPath= row["StartPath"].ToString(); + info.IconPath = row["IconPath"].ToString(); + if (info.IconPath.Length == 0) + { + info.Image = API.GetImg(info.TruePath,128); + } + else + { + info.Image = API.GetImg(RyFiles.GetRealPath(row["IconPath"].ToString()),128); + } + IconViewEx1.Items.Add(info.Name).Tag = info ; + } + IconViewEx1.EndUpdate(); + db.Free(); + if(IconViewEx1.Items.Count==0) + { + LblEmpty.Visible = true; + } + else { LblEmpty.Visible = false; } + } + } + private void LoadColumn() + { + TabList_Column.Items.Clear(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + TabList_Column.BeginUpdate(); + DataSet ds = db.ReadData("select * from Columns where parentId=0 order by sortindex asc"); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); + } + if(ds.Tables[0].Rows.Count==0) + { + #region 如果没有栏目,则创建一个栏目 + RyQuickSQL mySQL = new RyQuickSQL("Columns"); + mySQL.AddField("Name", "默认栏目"); + mySQL.AddField("editTime", DateTime.Now); + mySQL.AddField("sortindex", 1); + mySQL.AddField("parentId", 0); + mySQL.AddField("addTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL); + DataSet ds2 = db.ReadData("select * from Columns where parentId=0 order by sortindex asc"); + for (int i = 0; i < ds2.Tables[0].Rows.Count; i++) + { + DataRow row = ds2.Tables[0].Rows[i]; + TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); + } + ds2.Dispose(); + #endregion + } + ds.Dispose(); + TabList_Column.EndUpdate(); + db.Free(); + } + if(TabList_Column.Items.Count>0) + { + TabList_Column.Items[0].Selected = true; + } + } + private void LoadTypeColumn(int id) + { + TabList_Type.Items.Clear(); + TabList_Type.Items.Add("默认分类").Tag = 0; + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Columns where parentId="+ id + " order by sortindex asc"); + TabList_Type.BeginUpdate(); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + TabList_Type.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); + } + ds.Dispose(); + TabList_Type.EndUpdate(); + db.Free(); + } + if (TabList_Type.Items.Count > 0) + { + TabList_Type.Items[0].Selected = true; + } + } + SysFuns.WinHotReg hotkey; + private void FrmVSoft_Load(object sender, EventArgs e) + { + MinimumSize = new Size(400, 200); + LblEmpty.Left =((panelEx1.Width - LblEmpty.Width) / 2); + Config.Soft_Info.UserDataFolder = ryCommon.RyFiles.GetRealPath(Config.Soft_Info.UserDataFolder); + VSoft.Prams.Itrycn_Db.CreateTable(); + VSoft.Config.Soft_Config.LoadSetting(); + LoadColumn(); + //rySearch1.PerformClick(); + //if(RySoft.IsAdministrator()) + //{ + // MessageBox.Show("管理员模式下启动本软件,可能会导致无法拖放图标到本软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + //} + hotkey = new SysFuns.WinHotReg(Handle); + HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey); + hotkey.RegHotKey(100,hot.Modifiers_Int, hot.KeyCode); + hotkey.OnHotkey += Hotkey_OnHotkey; + ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; + //如果开机启动没有启动 + if(!ryCommon.RyRegedit.IsAutoRun(Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" " + Soft_Info.Soft_Pram)) + { + switch (MessageBox.Show("您暂未设置开机启动,下次开机后软件将无法自动运行。\r\n设置过程中可能会遇到安全软件提示,请选择允许。\r\n\r\n是否要设置开机启动?", "开机启动", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)) + { + case DialogResult.Yes: + ryCommon.RyRegedit.SetAutoRun(true, Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" " + Soft_Info.Soft_Pram); + break; + } + } + LiveUpdate.RyUpdate update = new LiveUpdate.RyUpdate(Soft_Info.Update_Url); + update.CheckUpdate(); + mouse.OnMouseActivity += Mouse_OnMouseActivity; + mouse.Start(); + } + + private void Hotkey_OnHotkey(int HotKeyID) + { + switch (HotKeyID) + { + case 100: + ShowOrHideUI(); + break; + } + } + /// + /// 显示或隐藏UI + /// + private void ShowOrHideUI() + { + if (this.Visible && RyForm.GetActiveWindow() == Handle) + { + this.Hide(); + } + else + { + 显示主窗体ToolStripMenuItem.PerformClick(); + this.BringToFront(); + this.Select(); + this.Focus(); + RyForm.BringToTop(Handle); + rySearch1.Focus(); + } + } + protected override void WndProc(ref System.Windows.Forms.Message msg) + { + switch (msg.Msg) + { + case 17189: //处理消息 + { + #region 激活窗体 + switch (msg.WParam.ToInt32()) + { + case 100:// + #region 显示界面 + if ((int)msg.LParam.ToInt32() == 100) + { + this.Show(); + this.WindowState = FormWindowState.Normal; + this.Top = (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2; + this.Left = (Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2; + //RyForm.SetActiveWindow(Handle); + RyForm.BringToTop(Handle); + 显示主窗体ToolStripMenuItem.PerformClick(); + this.BringToFront(); + this.Select(); + this.Focus(); + RyForm.BringToTop(Handle); + rySearch1.Focus(); + } + #endregion + break; + } + #endregion + } + break; + default: + base.WndProc(ref msg);//调用基类函数处理非自定义消息。 + break; + } + } + + private void rySearch1_OnSearch(object sender, EventArgs e) + { + if(rySearch1.Text.Length==0) + { + MessageBox.Show("请输入内容。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + + } + LoadDb(true); + } + #region 对栏目标签进行操作 + /// + /// 将栏目列表中的第几个栏目修改 + /// + /// + /// + private void SetColumnRow(int id, int index) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Columns where id=" + id); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + var item = TabList_Column.Items[index]; + item.Text = row["Name"].ToString(); + } + db.Free(); + } + #endregion + } + private void BtnAddColumn_Click(object sender, EventArgs e) + { + FrmAddColumn frm = new FrmAddColumn(); + if (frm.ShowDialog() == DialogResult.OK) + { + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Columns where parentId=0 order by sortindex desc limit 1"); + TabList_Column.BeginUpdate(); + if (ds.Tables[0].Rows.Count > 0) + { + DataRow row = ds.Tables[0].Rows[0]; + TabList_Column.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); + } + TabList_Column.EndUpdate(); + db.Free(); + } + } + frm.Dispose(); + } + private void 修改栏目ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (TabList_Column.SelectedItems.Count == 0) { return; } + FrmAddColumn frm = new FrmAddColumn(); + frm.IsAdd = 0; + frm.GetInfo(TabList_Column.SelectedItems[0].Tag.ToInt()); + if (frm.ShowDialog() == DialogResult.OK) + { + SetColumnRow(TabList_Column.SelectedItems[0].Tag.ToInt(), TabList_Column.SelectedItems[0].Index); + } + frm.Dispose(); + } + + private void 删除栏目ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (TabList_Column.SelectedItems.Count == 0) { return; } + if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + if (TabList_Column.Items.Count ==1) { + MessageBox.Show("请至少保留一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + var column_id = TabList_Column.SelectedItems[0].Tag.ToInt(); + var ds = db.ReadData("select count(*) from Columns where parentId=" + column_id); + if (mydb.HaveData(ds)) + { + if (mydb.GetValue(ds) > 0) + { + ds.Dispose(); + MessageBox.Show("当前栏目下还有分类,请先移除再删除栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + db.Free(); + return; + } + } + ds.Dispose(); + db.DelById("Columns", column_id.ToString()); + TabList_Column.SelectedItems[0].Remove(); + db.BeginTransaction(); + for (int i = 1; i < TabList_Column.Items.Count; i++) + { + var id = TabList_Column.Items[i].Tag.ToInt(); + RyQuickSQL mySQL = new RyQuickSQL("Columns"); + mySQL.AddField("sortindex", i); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); + } + db.Commit(); + } + db.Free(); + } + #endregion + #region 对分类标签进行操作 + /// + ///将分类列表中的第几个分类进行修改 + /// + /// + /// + private void SetTypeRow(int id, int index) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Columns where id=" + id); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + var item = TabList_Type.Items[index]; + item.Text = row["Name"].ToString(); + } + db.Free(); + } + #endregion + } + private void 新增分类ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (TabList_Column.SelectedItems.Count == 0) + { + MessageBox.Show("请先选择一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + var id = TabList_Column.SelectedItems[0].Tag.ToInt(); + FrmAddType frm = new FrmAddType(); + frm.ParentId = id; + if (frm.ShowDialog() == DialogResult.OK) + { + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Columns where parentId=" + id + " order by sortindex desc limit 1"); + TabList_Type.BeginUpdate(); + if(ds.Tables[0].Rows.Count>0) + { + DataRow row = ds.Tables[0].Rows[0]; + TabList_Type.Items.Add(row["Name"].ToString()).Tag = row["id"].ToInt(); + } + TabList_Type.EndUpdate(); + db.Free(); + } + } + frm.Dispose(); + } + + private void Menu修改分类_Click(object sender, EventArgs e) + { + if (TabList_Column.SelectedItems.Count == 0) + { + MessageBox.Show("请先选择一个栏目。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (TabList_Type.SelectedItems.Count == 0) + { + MessageBox.Show("请先选择一个分类。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + var id = TabList_Type.SelectedItems[0].Tag.ToInt(); + if (id == 0) { + MessageBox.Show("默认分类不支持修改", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + FrmAddType frm = new FrmAddType(); + frm.IsAdd = 0; + frm.GetInfo(id); + if (frm.ShowDialog() == DialogResult.OK) + { + SetTypeRow(id, TabList_Type.SelectedItems[0].Index); + } + frm.Dispose(); + } + + private void Menu删除分类_Click(object sender, EventArgs e) + { + if (TabList_Type.SelectedItems.Count == 0) { return; } + if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + if (TabList_Type.SelectedItems.Count == 0) { return; } + var column_id = TabList_Type.SelectedItems[0].Tag.ToInt(); + if (column_id == 0) { + MessageBox.Show("默认分类不支持删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + var ds = db.ReadData("select count(*) from Softs where ColumnId=" + column_id); + if (mydb.HaveData(ds)) + { + if (mydb.GetValue(ds) > 0) + { + ds.Dispose(); + MessageBox.Show("当前分类下还有软件,请先移除再删除分类。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + db.Free(); + return; + } + } + ds.Dispose(); + db.DelById("Columns", column_id.ToString()); + TabList_Type.SelectedItems[0].Remove(); + db.BeginTransaction(); + for (int i = 1; i < TabList_Type.Items.Count; i++) + { + var id = TabList_Type.Items[i].Tag.ToInt(); + RyQuickSQL mySQL = new RyQuickSQL("Columns"); + mySQL.AddField("sortindex", i); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); + } + db.Commit(); + } + db.Free(); + } + #endregion + #region 对软件列表进行操作 + private void SetSoftRow(int id, int index) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + DataSet ds = db.ReadData("select * from Softs where id=" + id); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + var item = IconViewEx1.Items[index]; + SoftInfo info = (SoftInfo)item.Tag; + info.Id = row["id"].ToInt(); + info.Name = row["Name"].ToString(); + info.Path = row["Path"].ToString(); + info.RunPram = row["RunPram"].ToString(); + info.SetJson = row["SetJson"].ToString(); + info.StartPath = row["StartPath"].ToString(); + info.IconPath = row["IconPath"].ToString(); + info.SoftType = row["SoftType"].ToInt(); + if (info.IconPath.Length == 0) + { + info.Image = API.GetImg(info.TruePath, 128); + } + else + { + info.Image = API.GetImg(RyFiles.GetRealPath(row["IconPath"].ToString()), 128); + } + item.Text = row["Name"].ToString(); + } + db.Free(); + } + #endregion + } + /// + /// 获取当前页面所属的分类或栏目ID + /// + /// + private int GetCurColumnId() + { + var ColumnId = 0; + if (TabList_Type.SelectedItems.Count > 0) + { + ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); + } + if (ColumnId == 0) + { + if (TabList_Column.SelectedItems.Count > 0) + { + ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); + } + } + return ColumnId; + } + private void 新增软件ToolStripMenuItem_Click(object sender, EventArgs e) + { + var ColumnId = GetCurColumnId(); + if (ColumnId == 0) + { + MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + FrmAddSoft frm = new FrmAddSoft(); + frm.ColumnId = ColumnId; + if (frm.ShowDialog() == DialogResult.OK) + { + LoadDb(); + } + frm.Dispose(); + } + private void 修改软件ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; + FrmAddSoft frm = new FrmAddSoft(); + frm.SelectId = info.Id; + frm.IsAdd = 0; + frm.GetInfo(info.Id); + if (frm.ShowDialog() == DialogResult.OK) + { + SetSoftRow(info.Id, IconViewEx1.SelectedItems[0].Index); + } + frm.Dispose(); + } + private void 从列表删除该软件ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + if (MessageBox.Show("确定要删除选定项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + for (int i = IconViewEx1.SelectedItems.Count - 1; i >= 0; i--) + { + var info = (SoftInfo)IconViewEx1.SelectedItems[i].Tag; + if(info.IconPath.Length>0 && info.IconPath.StartsWith("\\UserDb\\SoftLogos", StringComparison.OrdinalIgnoreCase)) + { + RyFiles.DeleteFile(RyFiles.GetRealPath(info.IconPath)); + } + db.DelById("Softs", info.Id.ToString()); + IconViewEx1.SelectedItems[i].Remove(); + if (IconViewEx1.Items.Count == 0) + { + LblEmpty.Visible = true; + } + else { LblEmpty.Visible = false; } + } + ReSortSoftByList(db); + } + db.Free(); + } + private void 以管理员方式启动ToolStripMenuItem_Click(object sender, EventArgs e) + { + RunByListSelected(true); + } + private void 打开软件所在位置ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; + if (System.IO.File.Exists(info.TruePath) || System.IO.Directory.Exists(info.TruePath)) + { + RyFiles.OpenFolderGotoFile(info.TruePath); + } + else + { + MessageBox.Show("没有找到文件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + private void RunByListSelected(bool RunasAdmin) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + var info = (SoftInfo)IconViewEx1.SelectedItems[0].Tag; + var result= VSoft.Prams.Run.Open(info, RunasAdmin); + if (result>36 && VSoft.Config.Soft_Config.HideAfterRun) { this.Hide(); } + } + private void IconViewEx1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + RunByListSelected(false); + } + else if (e.KeyCode == Keys.Up) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + var item = IconViewEx1.SelectedItems[0]; + if(item.Position.Y== IconViewEx1.Items[0].Position.Y) + { + IconViewEx1.SelectedItems.Clear(); + if (TabList_Column.SelectedItems.Count == 0) + { + TabList_Column.Items[0].Selected = true; + } + TabList_Column.Focus(); + var color = TabList_Column.SelectedStartBackColor; + TabList_Column.SelectedStartBackColor = Color.LightYellow; + using (var bg = new BackgroundWorker()) + { + bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 + bg.RunWorkerCompleted += delegate { + this.Invoke(new Action(() => + { + TabList_Column.SelectedStartBackColor = color; + })); + }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 + bg.RunWorkerAsync(); + } + } + } + else if (e.KeyCode == Keys.Left) + { + if (IconViewEx1.SelectedItems.Count == 0) { return; } + var item = IconViewEx1.SelectedItems[0]; + if (item.Index==0 || item.Position.X== IconViewEx1.Items[0].Position.X) + { + IconViewEx1.SelectedItems.Clear(); + if (TabList_Type.SelectedItems.Count == 0) + { + TabList_Type.Items[0].Selected = true; + } + TabList_Type.Focus(); + var color = TabList_Type.SelectedStartBackColor; + TabList_Type.SelectedStartBackColor = Color.LightYellow; + using (var bg = new BackgroundWorker()) + { + bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 + bg.RunWorkerCompleted += delegate { + this.Invoke(new Action(() => + { + TabList_Type.SelectedStartBackColor = color; + })); + }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 + bg.RunWorkerAsync(); + } + } + } + } + private void IconViewEx1_MouseDoubleClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + if (Soft_Config.OpenByClick) { return; } + RunByListSelected(false); + } + } + #endregion + + #region 软件列表拖放 + private void IconViewEx1_ItemDrag(object sender, ItemDragEventArgs e) + { + this.DoDragDrop(e.Item, DragDropEffects.Move); + } + + private void IconViewEx1_DragEnter(object sender, DragEventArgs e) + { + LblDrag.Height = IconViewEx1.TileSize.Height; + LblDrag.Parent = IconViewEx1; + ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); + if (lvi != null) + { + if (lvi.ListView != IconViewEx1) + { + e.Effect = DragDropEffects.None; + return; + } + } + e.Effect = DragDropEffects.Move; + } + private void IconViewEx1_DragDrop(object sender, DragEventArgs e) + { + LblDrag.Visible = false; + var filedrop = e.Data.GetData(DataFormats.FileDrop); + if (filedrop != null) + { + #region 拖放文件到软件列表 + var ColumnId = 0; + if (TabList_Type.SelectedItems.Count > 0) + { + ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); + } + if (ColumnId == 0) + { + if (TabList_Column.SelectedItems.Count > 0) + { + ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); + } + } + if(ColumnId==0) + { + MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + var path = ((string[])filedrop)[0]; + FrmAddSoft frm = new FrmAddSoft(path); + frm.ColumnId = ColumnId; + if (frm.ShowDialog() == DialogResult.OK) + { + LoadDb(); + } + frm.Dispose(); + return; + #endregion + } + Point pt; + pt = ((IconViewEx)(sender)).PointToClient(new Point(e.X, e.Y)); + var to_item = IconViewEx1.GetItemAt(pt.X, pt.Y); + if (to_item == null) { return; } + //获得拖放中的项 + ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); + if (lvi == null) { return; } + if (lvi.ListView!=IconViewEx1) { return; } + if (lvi.Index == to_item.Index) { return; } + IconViewEx1.BeginUpdate(); + IconViewEx1.View = View.List; + IconViewEx1.Items.RemoveAt(lvi.Index); + IconViewEx1.Items.Insert(to_item.Index, lvi); + IconViewEx1.View = View.Tile; + IconViewEx1.EndUpdate(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + ReSortSoftByList(db); + } + db.Free(); + } + private void IconViewEx1_DragOver(object sender, DragEventArgs e) + { + ListViewItem item = null; + if (sender is IconViewEx) + { + var filedrop = e.Data.GetData(DataFormats.FileDrop); + if (filedrop != null) { + if (LblDrag.Visible) { LblDrag.Visible = false; } + return; + } + var lvi = e.Data.GetData(typeof(ListViewItem)); + if(lvi==null) + { + if (LblDrag.Visible) { LblDrag.Visible = false; } + return; + } + else + { + var lvi2 = (ListViewItem)lvi; + if(lvi2.ListView!=IconViewEx1) + { + if (LblDrag.Visible){LblDrag.Visible = false;} + return; + } + } + var list = ((IconViewEx)(sender)); + var pt = list.PointToClient(new Point(e.X, e.Y)); + item = list.GetItemAt(pt.X, pt.Y); + } + else if (sender is TabList) + { + var list = ((TabList)(sender)); + var pt = list.PointToClient(new Point(e.X, e.Y)); + item = list.GetItemAt(pt.X, pt.Y); + } + if (item == null) + { + if (LblDrag.Visible) + { + LblDrag.Visible = false; + } + } + else + { + if (!LblDrag.Visible) + { + LblDrag.Visible = true; + } + LblDrag.Location = item.Position; + } + } + #endregion + #region 栏目拖放 + private void TabList_Column_DragEnter(object sender, DragEventArgs e) + { + //判定是否现在拖动的数据是LISTVIEW项 + ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); + if (lvi != null) + { + LblDrag.Height = TabList_Column.TileSize.Height; + LblDrag.Parent = TabList_Column; + e.Effect = DragDropEffects.Move; + } + } + private void TabList_Column_DragDrop(object sender, DragEventArgs e) + { + LblDrag.Visible = false; + Point pt; + pt = ((TabList)(sender)).PointToClient(new Point(e.X, e.Y)); + var item = TabList_Column.GetItemAt(pt.X, pt.Y); + if (item == null) { return; } + var columnid = item.Tag.ToInt(); + //获得拖放中的项 + var drag_item = e.Data.GetData(typeof(ListViewItem)); + if (drag_item == null) { return; } + ListViewItem lvi = (ListViewItem)drag_item; + if (lvi.ListView == IconViewEx1) + { + #region 从软件列表里拖放 + var info = (SoftInfo)lvi.Tag; + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + mySQL.AddField("ColumnId", columnid); + mySQL.AddField("editTime", DateTime.Now); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, columnid) + 1); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); + if (TabList_Column.SelectedItems.Count > 0) + { + if (TabList_Column.SelectedItems[0].Tag.ToInt() != columnid) + { + lvi.Remove(); + } + else if (TabList_Type.SelectedItems.Count > 0 && TabList_Type.SelectedItems[0].Tag.ToInt() > 0) + { + lvi.Remove(); + } + } + else + { + lvi.Remove(); + } + ReSortSoftByList(db); + } + db.Free(); + #endregion + } + else if (lvi.ListView == TabList_Column) + { + if (lvi.Index == item.Index) { return; } + TabList_Column.BeginUpdate(); + TabList_Column.View = View.List; + TabList_Column.Items.RemoveAt(lvi.Index); + TabList_Column.Items.Insert(item.Index, lvi); + TabList_Column.View = View.Tile; + TabList_Column.EndUpdate(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + db.BeginTransaction(); + for (int i = 0; i < TabList_Column.Items.Count; i++) + { + var id = TabList_Column.Items[i].Tag.ToInt(); + RyQuickSQL mySQL = new RyQuickSQL("Columns"); + mySQL.AddField("sortindex", i + 1); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + id, mySQL); + } + db.Commit(); + } + db.Free(); + } + } + private void TabList_Column_ItemDrag(object sender, ItemDragEventArgs e) + { + this.DoDragDrop(e.Item, DragDropEffects.Move); + } + #endregion + #region 分类拖放 + private void TabList_Type_DragEnter(object sender, DragEventArgs e) + { + //判定是否现在拖动的数据是LISTVIEW项 + ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); + if (lvi != null) + { + LblDrag.Height = TabList_Type.TileSize.Height; + LblDrag.Parent = TabList_Type; + e.Effect = DragDropEffects.Move; + } + } + + private void TabList_Type_DragDrop(object sender, DragEventArgs e) + { + LblDrag.Visible = false; + Point pt; + pt = ((TabList)(sender)).PointToClient(new Point(e.X, e.Y)); + var item = TabList_Type.GetItemAt(pt.X, pt.Y); + if (item == null) { return; } + var columnid = item.Tag.ToInt(); + if (columnid == 0) + { + if (TabList_Column.SelectedItems.Count>0) + { + columnid = TabList_Column.SelectedItems[0].Tag.ToInt(); + } + } + //获得拖放中的项 + var drag_item = e.Data.GetData(typeof(ListViewItem)); + if (drag_item == null) { return; } + ListViewItem lvi = (ListViewItem)drag_item; + if (lvi.ListView == IconViewEx1) + { + #region 来源自软件列表 + var info = (SoftInfo)lvi.Tag; + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + mySQL.AddField("ColumnId", columnid); + mySQL.AddField("editTime", DateTime.Now); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, columnid) + 1); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); + if (TabList_Type.SelectedItems.Count > 0) + { + if (TabList_Type.SelectedItems[0].Tag.ToInt() != columnid) + { + lvi.Remove(); + } + } + else { lvi.Remove(); } + ReSortSoftByList(db); + } + db.Free(); + #endregion + } + else if (lvi.ListView == TabList_Type) + { + if (lvi.Index == item.Index || item.Index==0 || lvi.Index==0) { return; } + TabList_Type.BeginUpdate(); + TabList_Type.View = View.List; + TabList_Type.Items.RemoveAt(lvi.Index); + TabList_Type.Items.Insert(item.Index, lvi); + TabList_Type.View = View.Tile; + TabList_Type.EndUpdate(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + db.BeginTransaction(); + for (int i = 1; i < TabList_Type.Items.Count; i++) + { + var id = TabList_Type.Items[i].Tag.ToInt(); + RyQuickSQL mySQL = new RyQuickSQL("Columns"); + mySQL.AddField("sortindex", i); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" +id, mySQL); + } + db.Commit(); + } + db.Free(); + } + } + private void TabList_Type_ItemDrag(object sender, ItemDragEventArgs e) + { + this.DoDragDrop(e.Item, DragDropEffects.Move); + } + #endregion + private void TabList_Type_SelectedIndexChanged(object sender, EventArgs e) + { + if (IsProcUse) { return; } + LoadDb(); + } + private void TabList_Column_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) + { + if (IsProcUse) { return; } + if (TabList_Column.SelectedItems.Count > 0) + { + LoadTypeColumn(TabList_Column.SelectedItems[0].Tag.ToInt()); + } + else + { + LoadTypeColumn(-1); + } + //LoadDb(); + } + /// + /// 将当前列表中的软件在数据库中排序 + /// + /// + private void ReSortSoftByList(IDbInterface db) + { + db.BeginTransaction(); + for (int i = 0; i < IconViewEx1.Items.Count; i++) + { + var info = (SoftInfo)IconViewEx1.Items[i].Tag; + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + mySQL.AddField("sortindex", i + 1); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + info.Id, mySQL); + } + db.Commit(); + } + + + private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e) + { + this.WindowState = FormWindowState.Normal; + var topmost = this.TopMost; + this.TopMost = true; + this.Show(); + this.TopMost = topmost; + } + + private void 退出软件ToolStripMenuItem_Click(object sender, EventArgs e) + { + Application.Exit(); + } + + private void 打开官网ToolStripMenuItem_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.OpenUrl(Config.Soft_Info.Soft_Url); + } + + private void 捐助ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (Config.Soft_Info.DonateVisabled) + { + FrmAbout frm = new FrmAbout(); + frm.ShowDialog(); + frm.Dispose(); + } + else + { + MessageBox.Show(Config.Soft_Info.AboutText.Replace("#softname#", Config.Soft_Info.Soft_Title).Replace("#ver#", "V" + RySoft.VersionStr), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + + private void 设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + hotkey.Enabled = false; + FrmSetting frm = new FrmSetting(); + if(frm.ShowDialog()==DialogResult.OK) + { + VSoft.Config.Soft_Config.LoadSetting(); + hotkey.UnHotKey(); + HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey); + hotkey.RegHotKey(100,hot.Modifiers_Int, hot.KeyCode); + } + frm.Dispose(); + hotkey.Enabled = true; + } + int hideCount = 0; + private void FrmVSoft_FormClosing(object sender, FormClosingEventArgs e) + { + if (Soft_Info.ShowTray && Soft_Config.HideByCloseBtn && e.CloseReason == CloseReason.UserClosing) + { + e.Cancel = true; + this.Hide(); + hideCount++; + if (hideCount <= 2) + { + notifyIcon1.ShowBalloonTip(3000, Soft_Info.Soft_Title, "软件已经最小化到此处,请右击托盘图标进行关闭。", ToolTipIcon.Info); + } + return; + } + } + + private void TabList_Column_KeyDown(object sender, KeyEventArgs e) + { + if(e.KeyCode==Keys.Down) + { + if(IconViewEx1.Items.Count>0) + { + if(IconViewEx1.SelectedItems.Count==0) + { + IconViewEx1.Items[0].Selected = true ; + } + IconViewEx1.Focus(); + } + } + else if (e.KeyCode == Keys.Up) + { + rySearch1.Focus(); + } + } + + private void TabList_Type_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Right) + { + if (IconViewEx1.Items.Count > 0) + { + if (IconViewEx1.SelectedItems.Count == 0) + { + IconViewEx1.Items[0].Selected = true; + } + IconViewEx1.Focus(); + } + } + } + + private void rySearch1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Down) + { + if (TabList_Column.SelectedItems.Count == 0) + { + if (IconViewEx1.Items.Count > 0) + { + if (IconViewEx1.SelectedItems.Count == 0) + { + IconViewEx1.Items[0].Selected = true; + } + IconViewEx1.Focus(); + return; + } + else + { + TabList_Column.Items[0].Selected = true; + } + } + TabList_Column.Focus(); + var color = TabList_Column.SelectedStartBackColor; + TabList_Column.SelectedStartBackColor = Color.LightYellow; + using (var bg = new BackgroundWorker()) + { + bg.DoWork += delegate { System.Threading.Thread.Sleep(500); };//180秒后,3分钟 + bg.RunWorkerCompleted += delegate { + this.Invoke(new Action(() => + { + TabList_Column.SelectedStartBackColor = color; + })); + }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 + bg.RunWorkerAsync(); + } + } + } + + private void IconViewEx1_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + if (!Soft_Config.OpenByClick) { return; } + RunByListSelected(false); + } + } + + private void 新增内置功能ToolStripMenuItem_Click(object sender, EventArgs e) + { + var ColumnId = 0; + if (TabList_Type.SelectedItems.Count > 0) + { + ColumnId = TabList_Type.SelectedItems[0].Tag.ToInt(); + } + if (ColumnId == 0) + { + if (TabList_Column.SelectedItems.Count > 0) + { + ColumnId = TabList_Column.SelectedItems[0].Tag.ToInt(); + } + } + if (ColumnId == 0) + { + MessageBox.Show("当前模式下不支持添加软件。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + FrmInCMD frm = new FrmInCMD(); + if(frm.ShowDialog()==DialogResult.OK) + { + var info = frm.SelectedInfo; + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + mySQL.AddField("Name", info.Name); + mySQL.AddField("SoftType",1);//0表示运行文件,1表示执行内置命令,2表示执行脚本 + mySQL.AddField("Path",frm.SQLConnStr); + if (info.CmdId.Length > 0) + { mySQL.AddField("RunPram","cmdid="+ info.CmdId); } + else + { + mySQL.AddField("RunPram","id="+ info.Id); + } + mySQL.AddField("StartPath","");//起始路径 + mySQL.AddField("IconPath", info.IconPath.Length>0? info.IconPath: info.Path);//图标路径 + mySQL.AddField("SetJson","");//设置 + mySQL.AddField("Des", info.Des);//备注 + mySQL.AddField("Pinyin", ryCommon.PinYin.Convert(info.Name) + "\r\n" + ryCommon.PinYin.ConvertFirstPY(info.Name)); + mySQL.AddField("editTime", DateTime.Now); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(SQLConnStr) == 1) + { + mySQL.AddField("ClickCount", 0);//点击量 + mySQL.AddField("ColumnId", ColumnId); + mySQL.AddField("sortindex", Itrycn_Db.GetSoftCount(db, ColumnId) + 1); + mySQL.AddField("addTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL); + LoadDb(); + } + db.Free(); + } + frm.Dispose(); + } + + private void FrmVSoft_ResizeEnd(object sender, EventArgs e) + { + if (Width > 200 && Height > 200) + { + ryCommon.Ini ini = new Ini(VSoft.Config.Soft_Info.UserDataFolder + "\\Win.dat"); + ini.WriteIni(VSoft.Config.Soft_Info.Soft_Id, "width", Width); + ini.WriteIni(VSoft.Config.Soft_Info.Soft_Id, "height", Height); + } + } + + private void 添加栏目ToolStripMenuItem_Click(object sender, EventArgs e) + { + BtnAddColumn.PerformClick(); + } + + private void MenuTabType_Opening(object sender, CancelEventArgs e) + { + if(TabList_Type.SelectedItems.Count==0) + { + Menu修改分类.Enabled = false; + Menu删除分类.Enabled = false; + } + else + { + if (TabList_Type.SelectedItems[0].Index == 0) + { + Menu修改分类.Enabled = false; + Menu删除分类.Enabled = false; + } + else + { + Menu修改分类.Enabled = true; + Menu删除分类.Enabled = true; + } + } + } + + private void MenuTabColumn_Opening(object sender, CancelEventArgs e) + { + if (TabList_Column.SelectedItems.Count == 0) + { + 修改栏目ToolStripMenuItem.Enabled = false; + 删除栏目ToolStripMenuItem.Enabled = false; + } + else + { + 修改栏目ToolStripMenuItem.Enabled = true; + 删除栏目ToolStripMenuItem.Enabled = true; + } + } + + private void MenuList_Opening(object sender, CancelEventArgs e) + { + bool isSelected = IconViewEx1.SelectedItems.Count>0; + 以管理员方式启动ToolStripMenuItem.Enabled = isSelected; + 修改软件ToolStripMenuItem.Enabled = isSelected; + 从列表删除该软件ToolStripMenuItem.Enabled = isSelected; + 打开软件所在位置ToolStripMenuItem.Enabled = isSelected; + } + + private void IconViewEx1_Resize(object sender, EventArgs e) + { + //LblEmpty.Left = (IconViewEx1.Width - LblEmpty.Width) / 2 + IconViewEx1.Left; + } + + private void FrmVSoft_Resize(object sender, EventArgs e) + { + LblEmpty.Left =((panelEx1.Width - LblEmpty.Width) / 2); + + } + + private void panelEx1_Resize(object sender, EventArgs e) + { + // LblEmpty.Left = panelEx1.Left + ((panelEx1.Width - LblEmpty.Width) / 2); + } + + private void LblSetting_Click(object sender, EventArgs e) + { + 设置ToolStripMenuItem.PerformClick(); + } + } +} diff --git a/Source/VSoft_Dll/FrmVSoft.resx b/Source/VSoft_Dll/FrmVSoft.resx index cd400f0..79d1654 100644 --- a/Source/VSoft_Dll/FrmVSoft.resx +++ b/Source/VSoft_Dll/FrmVSoft.resx @@ -1,308 +1,308 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 240, 17 - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAYRJREFUOE+NkztPwlAUx8/gakIYWFwYHB1w8FUQCEpI1KiTYpSHQVQisviYjZsJ - k4OJMT6ILhgTFheDiongc4AP4HdgcO/xnPZWaG81/JN/Qu49v1972wJ2iUQiQWqFiqL82yO2/w4Nuann - DA3MrqMrWcDaSRB30uOGiPfcYrwVWuQr1HnIPxXFnsQxQvYDYeMd1Scf1Yt3hwGMz4UNEc9WBK4JsHfx - AJ0r1wibBAoYMizwolpR9D6OYOPCh5f7AU0kcF0AuU8JhsybCVYfhvXeD9kIbGBYEwILrJYHZYEzVZRg - WH21hRtniixwJQoSDGkSWGBu7cgrCUr57THpgTEIqReE5RpCkpqoIsSr2Dezy4KSwDVBko1fxVHpzFa4 - e+FGuzozAtdDC/VMLCyduR2G2DMqk3GG6wJrhRY91GZ+K/QL83nbYXHrTZ4VmDmGZC8bwu9bISC4a6mM - /dO5/2EjhoQ/28apgs7oFfon5juDjdCgg2r9NzrEduchiN+O+WmbAvADQWOC4qBCLEQAAAAASUVORK5C - YII= - - - - - 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 - 7NsAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAPFJREFUSEvt - l7EKwjAQhrM4OCazz6m77g5Cii6+gTgquuhrJG7u6mBd6/0apIQTG0wolPzwQeld86ft5dqIIE3PfVXY - JVES1Qtt7jiHmMuKL6VP44+hD8VcWnypwuxZU6DNzqXFl9TmyJoSsrAHlxZf2bhONo6qjhgvqh4NOERz - wMU/uHGmADEvl4UazUrN7AB3MecGSonUdiNoFhcumBIyvlLjtw8umJiyPWN61F8LJhV4vfSps1s/kBoU - tEBp0wzWKPUG/LWc3JIdYQm7xdxMHelcAcrGdbJxVLVm3NoPPRlPWFOQcgvDbtrex4GbNiGeSkzyFPRt - h10AAAAASUVORK5CYII= - - - - 17, 17 - - - 346, 17 - - - - iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAYAAADxJz2MAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAu - IwAALiMBeKU/dgAABJxJREFUeF7tmM1tGzEQhX3OIYDvObkFt6ACcnELbkFIBVEJcQtqQYc0ICBpwC24 - BeW9zcxiyB2Rsz/6WYMDfIA05JIzs49c7j6cTqfGDFxnI47rbMRxnY04rrMRx3U24rjORhzX2YjjOhtx - XGcjzk3ty5+fe3AAr15wa+BmxqKBk+GdPi/Ie+ZmhmIdTfHyQj57wd4jNzEUaGMK5tEKWDIUiPueVzhy - 8AK9V65uKFBNfRsv0Hvl6oYCldT37gV5z2hSj2ALPiSR7f+WZQ3jPsn451jfUxhB28Ip/P8oeS9mGPPN - zJGzOvURJuUlQxZVIcb7dOojpQIuqkKM9enUR0oFJIuoEOPU1Lf1glsDNWUsokKMwX3WG590c3jBrYGQ - OqQOkwzX8wmfP6Qsq1Uf0SQvpkJc+2nVRzTJi6gQ19XUt/OCWhO9IZnFVYhrSuojT15Qa6I3JpMll7OT - rmHDNfw05Y1F3tjHC2pNJIakqoqRrlVD3/yDaU43lhfUmkgMSdX2rE41EUPfqvpoXlBrYmBIbrYK0aem - vmfp6ga1JgaG5GarEH3Ofa4nB+nWmRfUmnANSU5WIdqKH0y//v71/duPv3twEo7gIGyFV7ARFv8qdHFD - opNViLbi53opkBZvLKNPAjczJDtahfBVP9ejCHMKmCz/JQxjPoEd+ABHcc83JDtahfAVP9ezD4K0BeTv - R6DLlUuXPsJlrktb+4dPATXDWJzXbiXKRrrMNyQdViF/Z205r+yHAJMCdhffwDA3VWcLR6jCF+kyMLTZ - 2PfiLhsSD53n+Dtrs3Tqo2FiG/isAuJ6T7k5bkHgt8p+B90NLhn6cDy9JrYakHz1TAdC6qNhYhv45AIy - ATNOjUER4bNxeO12ayEsHk8Meg2LHtuTUYCSCrnvhdRH46QmCAZlA1XV6P7HILUvldsfaYw/wuBGwWfj - GOx7pq2IdC8bilBTYYkkeExqAx9Lr5TMr4VXeDOsQr0Ccr/T9ssWkIZClFR4jsFnMEw6p4B9IaxfXImx - r+njFbC/HngFpOIZK+HNsOOR7kZJ97qhEFNU6AX+DOzd7/YSoEGqgrrg5L/27fYcthnfEgUMve1k1/Tv - 82FDQcaocKC+KYZAB8XyfLnBnxQeJGoxbaFliH7cq0ddMzAUZIwKF3ntygMHVLAt4FG6Jga/LWCOXQGE - fckL4NiDGy/+/hpxjzcUJqrC6mevqCFge3xgojz36X/3KCH9tM9YvD3RFjA5WYwyFKb2vksmv3IhOL6b - MliiB2R7nOERxxaHbfxvoZLycyKXsR2nhFdAO+e8d3IUqPTOS1z1YWIWxyaqTzmrsBrsb5OJkCSM/yyw - tnFujUefvIMHhLTbMXkzpm1TKFBJhWfVhwnHJu7R7VEgqiaSJIr/No6QmtAv2QMVaR5vKBSL6HH2yYsJ - 7d7lwc1dValLVWECvTLw2y51kr8Pq5oGKpF2nTO8HNGXc3DMPmb3M/WlwIR2CffJS3xXM5lfizA4I9YM - 13AFcBvYuYlek1sYEqeSdAsYXcDEvKQacVxnI47rbMRxnY04rrMRx3U24rjORhzX2YhyevgH9KfBo50b - JekAAAAASUVORK5CYII= - - - - 482, 17 - - - 572, 17 - - - 690, 17 - - - - AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAACMuAAAjLgAAAAAAAAAA - AAAAAAAAAAAAAKizMQCVogAAoKscAJ2pFQCVowUAtrpDAqmwKAWmriMGpq4kB6auJAemriQHpq4kB6au - JAemriQHpq4kB6auJAemriQHpq4kB6auJAemriQHpq4jBqiwKAW0uT4Ck6IBAJ2pFQCgrBwAh5QAAKey - LgAAAAAAAAAAAAAAAACfriQAorApAJupFgCgrB0Tn6oYU56pFomeqRalnqkVsJ6pFbSeqRW0nqkVtJ6p - FbSeqRW0nqkVtJ6pFbSeqRW0nqkVtJ6pFbSeqRW0nqkVtJ6pFbSeqRW0nqkVsZ6pFqaeqRaLn6oYVqCs - HRaaqRUAoa8mAJ+tIwAAAAAAo7IwAKGwKQCVpQsAnqscQp2qGMScqRf7nKkW/5ypFv+cqRb/nKkW/5yp - Fv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5yp - Fv+cqRf8naoYyZ2rHEiKnQAAoK4lAKCxKwCGogAAmaoZAJysHkSbqhvjm6oa/5uqGv+bqhr/m6oa/5uq - Gv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uq - Gv+bqhr/m6oa/5uqGv+bqhr/m6ob6JyrHk2YqRYA1s2DAJyuJACcriYZmqwfy5mrHf+Zqx3/masd/5mr - Hf+Zqx3/masd/5mrHf+Zqx3/masd/5mrHf+Zqx3/masc/5mrHP+Zqxz/masc/5mrHf+Zqx3/masd/5mr - Hf+Zqx3/masd/5mrHf+Zqx3/masd/5mrHf+Zqx3/mqwe0puuJB6brSMAl6sfAJmtJGGYrCD+mKwg/5is - IP+YrCD/mKwg/5isIP+YrCD/mKwg/5isIP+XrB//lqsd/5isIv+dsCz/obM1/6GzNP+dsCv/mKwh/5ar - Hf+XrB//mKwg/5esH/+YrCH/mKwg/5esH/+YrCD/mKwg/5isIP+YrCD/ma0jbJaqHAD///8Al64mm5et - JP+XrST/l60k/5etJP+XrST/l60k/5etJP+WrSP/lawi/6G1Ov+9y3X/2eGu/+jt0P/v8t3/7/Lc/+fs - zf/W36n/uslu/5+zNf+UqyD/p7lG/9bfqf/Z4a7/tcRj/5asIv+XrST/l60k/5etJP+XriamprtJA520 - OgiWryu4la4p/5WuKf+Vrin/la4p/5WuKf+Vrin/la0o/5mxMP+/zXz/7PDY//7+/f////////////// - ///////////////////9/vz/6O3Q/8LQg//l68v////////////R3KP/lK0n/5WuKf+Vrin/la4p/5au - K8KbszYNm7Q8DZWvMMOUry//lK8v/5SvL/+Ury//lK8v/5SuLf+ctT7/1N6r//39+/////////////// - ///7/Pj/9vnv//f57//8/fn//////////////////////////////////////8vYm/+Uri3/lK8v/5Sv - L/+Ury//la8wzJqzOxOctkYPlLA2x5OwNP+TsDT/k7A0/5OwNP+TrzP/mLM+/9bhsv////////////// - ///t8t//ydic/6/Fa/+lvVf/pr1Y/7HGbv/M2qL/8/bq///////////////////////b5Lz/nbdH/5Kv - M/+TsDT/k7A0/5OwNP+TsDXQlrI6FZy4TBCTsT3HkrA6/5KxOv+SsTr/krA6/5KwOv/E1JT//v79//// - ///9/vz/0+Cy/5+6U/+RsDj/kK83/5GwOP+RsDj/j641/6K8WP/r8Nr//////////////////v7+/7/R - jP+Qrzf/krE6/5KxOv+SsTr/krA6/5KxO9CUsj4Wm7lREJKyQseRskD/kbJA/5GyQP+QsT7/o75f//L2 - 6P///////////9Derv+VtEf/kLE+/5GyQP+RskD/kbJA/4+xPv+hvV3/5ezS//////////////////// - ////////6/Hd/526Vf+QsT//kbJA/5GyQP+RskD/kbJA0JOzQxaZulcQkbRIx4+zRv+Ps0b/j7NG/46y - RP/H2aL////////////m7tb/mblW/46yRP+Ps0b/j7NG/4+zRv+OskT/oL5h/+Xt0/////////////// - ///g6s3/7vTk////////////vdKR/46yQ/+Ps0b/j7NG/4+zRv+Qs0bQkbRJFpi6WxCPtE3HjrRL/460 - S/+Ns0r/lLdU/+Xt1f///////v79/7nQkP+Mskj/jrRL/460S/+OtEv/jbNJ/5+/Zv/k7dT///////// - ////////2ebD/5e5Wf/C15/////////////c58f/kLVP/46zS/+OtEv/jrRL/460S9CQtU4WlrtfEI22 - UceMtU//jLVP/4u0Tf+dwGn/9Pju///////y9+z/nL9o/4u0Tf+MtU//jLVP/4u0Tv+bvmb/5O3V//// - /////////////9jmxf+Wu17/irNL/6TEdP/4+vT//////+3z5P+XvF//i7RO/4y1T/+MtU//jLVP0I62 - UhaVvGIQjLdVx4q2Uv+LtlP/ibVQ/6XGef/5+/f//////+fw3P+Rul3/irZS/4u2U/+LtlP/ibVQ/8PZ - pv/////////////////Y58b/lLxi/4m1Uf+KtVH/l71l/+/15///////9Pjv/5zBbf+JtVH/i7ZT/4u2 - U/+LtlPQjbdWFpS9ZRCKt1jHibdW/4m3Vv+HtlT/pch+//r8+P//////5e/Z/4+6Xv+Jtlb/ibdW/4m3 - Vv+HtlT/ttKX//3+/P//////1+fG/5O9Zf+ItlT/ibdW/4i2Vf+UvWb/7fTl///////1+fH/nMNy/4i2 - VP+Jt1b/ibdW/4m3VtCLuFkWkr5pEIm4XMeHt1r/h7da/4a3WP+dxXj/9vrz///////t9Ob/k75q/4e3 - Wf+Ht1r/h7da/4e3Wf+MumD/sdCU/7bUm/+RvWf/hrdY/4e4Wv+Ht1r/hrdY/5rDdP/0+PD///////D2 - 6/+WwG7/h7dY/4e3Wv+Ht1r/iLha0Iq5XRaRv2wQh7lfx4a4Xf+GuF3/hbhd/5C+bP/r8+T///////r8 - +f+my4n/hLdb/4a4Xf+GuF3/hrhd/4a4Xf+Et1v/hLdb/4W4Xf+GuF3/hrhd/4a4Xf+Et1v/sNGW//3+ - /f//////4u7Y/4u8Zf+GuF3/hrhd/4a4Xf+GuF7QiLphFo+/bxCGumPHhLlh/4S5Yf+EuWH/hbpi/9Dk - wv///////////9HlxP+GumP/hLlh/4S5Yf+EuWH/hLlh/4S5Yf+EuWH/hLlh/4S5Yf+EuWH/hLlg/4m8 - aP/b6tH////////////E3rT/g7lg/4S5Yf+EuWH/hLlh/4W5YdCHumQWjsByEIS7ZseDumT/g7pk/4O6 - ZP+BuWL/pc2Q//r8+P//////+fz4/67Smv+BuWL/g7pk/4O6ZP+DumT/g7pk/4O6ZP+DumT/g7pk/4K6 - ZP+CumP/uNem//z9/P//////9fnz/5zIhP+BuWL/g7pk/4O6ZP+DumT/g7pk0IW7ZxaMwXQQg7xox4G7 - Z/+Bu2f/gbtn/4G7Zv+FvWv/0ufJ////////////8vjv/6vSmf+CvGj/f7tl/4G7Zv+Bu2f/gbtn/4G7 - Zv9/umX/g71q/7PWo//2+vT////////////H4bz/grxo/4G7Z/+Bu2f/gbtn/4G7Z/+BvGfQg71qFovD - dxCBvWvHf71q/3+9av9/vWr/f71q/368aP+Tx4H/6PPk////////////+Pv2/8njv/+ay4n/hsBy/4G+ - bP+Bvmz/h8Fz/57Mjf/P5sb/+v35////////////4O/b/43Eev9+vGn/f71q/3+9av9/vWr/f71q/4C9 - atCCvm0WhsJ3Dn++bsV+vm3/fr5t/36+bf9+vm3/fr5t/3y9a/+bzY7/6fTm//////////////////b6 - 9f/j8d//1urQ/9fq0f/l8uH/+Pv3/////////////////+Lx3/+UyYb/fL1r/36+bf9+vm3/fr5t/36+ - bf9+vm3/f75uzoXBdRSFw3kKfb9xvHy/cP98v3D/fL9w/3y/cP98v3D/fL9w/3u+bv+Syoj/1evR//z9 - +/////////////////////////////////////////////r8+f/O58r/jceD/3u+bv98v3D/fL9w/3y/ - cP98v3D/fL9w/3y/cP99v3HGg8J4D5XNjQJ7wXSlesBz/3rAc/96wHP/esBz/3rAc/96wHP/esBz/3nA - cf+Aw3n/ptWi/9Tr0//w+O//+/37//7+/v/+/v7/+v36/+737f/Q6c7/odOc/37Cdv95wHH/esBz/3rA - c/96wHP/esBz/3rAc/96wHP/esBz/3vBdLCIxoAFdcByAHrCd3J4wXb/eMF2/3jBdv94wXb/eMF2/3jB - dv94wXb/eMF2/3jBdf92wHT/e8N5/4vKif+b0pr/pdak/6XWpP+a0Zn/icmH/3rCeP92wHT/eMF1/3jB - dv94wXb/eMF2/3jBdv94wXb/eMF2/3jBdv94wXb/esJ3fnG+bwB5w3oAesR7KXfDeOB2wnj/dsJ4/3bC - eP92wnj/dsJ4/3bCeP92wnj/dsJ4/3bCeP92wnj/dcJ3/3TBdv90wXb/dMF2/3TBdv91wnf/dsJ4/3bC - eP92wnj/dsJ4/3bCeP92wnj/dsJ4/3bCeP92wnj/dsJ4/3fDeOd5w3sxeMN5AIHJhgBbuWYAdsR8aXTE - e/d0xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TE - e/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv5dsR8c8vlvQB/x4MAfseBAHjG - gAB5yIUEdMV/bnPFfuhyxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LF - fv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/c8V+63TFf3Z6yIUHeMaAAH3G - gAAAAAAAdsV/AHfGgQDZ//wAdMaCNHLGgYpyxoG+ccaB1HHGgd1xxoHfccaB33HGgd9xxoHfccaB33HG - gd9xxoHfccaB33HGgd9xxoHfccaB33HGgd9xxoHfccaB33HGgd1xxoHVcsaBwHLGgY10xoI5iNKaAXfG - gQB3xoAAAAAAAAAAAAAAAAAAeciFAHzJhwBzxoEAYLtqAHjKigx2yYcZdMiGIXbIhyR2yYgkdsmIJHbJ - iCR2yYgkdsmIJHbJiCR2yYgkdsmIJHbJiCR2yYgkdsmIJHbJiCR2yIckdMiGIXbJhxp4yooMV7VfAHPG - gAB6yIYAeMeEAAAAAAAAAAAAwAAAA4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAM= - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 240, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAYRJREFUOE+NkztPwlAUx8/gakIYWFwYHB1w8FUQCEpI1KiTYpSHQVQisviYjZsJ + k4OJMT6ILhgTFheDiongc4AP4HdgcO/xnPZWaG81/JN/Qu49v1972wJ2iUQiQWqFiqL82yO2/w4Nuann + DA3MrqMrWcDaSRB30uOGiPfcYrwVWuQr1HnIPxXFnsQxQvYDYeMd1Scf1Yt3hwGMz4UNEc9WBK4JsHfx + AJ0r1wibBAoYMizwolpR9D6OYOPCh5f7AU0kcF0AuU8JhsybCVYfhvXeD9kIbGBYEwILrJYHZYEzVZRg + WH21hRtniixwJQoSDGkSWGBu7cgrCUr57THpgTEIqReE5RpCkpqoIsSr2Dezy4KSwDVBko1fxVHpzFa4 + e+FGuzozAtdDC/VMLCyduR2G2DMqk3GG6wJrhRY91GZ+K/QL83nbYXHrTZ4VmDmGZC8bwu9bISC4a6mM + /dO5/2EjhoQ/28apgs7oFfon5juDjdCgg2r9NzrEduchiN+O+WmbAvADQWOC4qBCLEQAAAAASUVORK5C + YII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAIpJREFUOE/tktEGxDAQRef/v6NLly5dQpfQtSXkixJJHu661R36NC/70NJhiDnH + mImRv0SMESEELJ8F73mG9x6vacKGTS6ErbVdOudUsLiwM4s55zX5fo6jChYXjvUTUkqoteIxDCpYXLgT + BSZhKQX3vlfB4sIP4U4ci50Jb12ngsUPENcdnPsORL5USPZgYQ6cHAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAPFJREFUSEvt + l7EKwjAQhrM4OCazz6m77g5Cii6+gTgquuhrJG7u6mBd6/0apIQTG0wolPzwQeld86ft5dqIIE3PfVXY + JVES1Qtt7jiHmMuKL6VP44+hD8VcWnypwuxZU6DNzqXFl9TmyJoSsrAHlxZf2bhONo6qjhgvqh4NOERz + wMU/uHGmADEvl4UazUrN7AB3MecGSonUdiNoFhcumBIyvlLjtw8umJiyPWN61F8LJhV4vfSps1s/kBoU + tEBp0wzWKPUG/LWc3JIdYQm7xdxMHelcAcrGdbJxVLVm3NoPPRlPWFOQcgvDbtrex4GbNiGeSkzyFPRt + h10AAAAASUVORK5CYII= + + + + 17, 17 + + + 346, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAAA8CAYAAADxJz2MAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAu + IwAALiMBeKU/dgAABJxJREFUeF7tmM1tGzEQhX3OIYDvObkFt6ACcnELbkFIBVEJcQtqQYc0ICBpwC24 + BeW9zcxiyB2Rsz/6WYMDfIA05JIzs49c7j6cTqfGDFxnI47rbMRxnY04rrMRx3U24rjORhzX2YjjOhtx + XGcjzk3ty5+fe3AAr15wa+BmxqKBk+GdPi/Ie+ZmhmIdTfHyQj57wd4jNzEUaGMK5tEKWDIUiPueVzhy + 8AK9V65uKFBNfRsv0Hvl6oYCldT37gV5z2hSj2ALPiSR7f+WZQ3jPsn451jfUxhB28Ip/P8oeS9mGPPN + zJGzOvURJuUlQxZVIcb7dOojpQIuqkKM9enUR0oFJIuoEOPU1Lf1glsDNWUsokKMwX3WG590c3jBrYGQ + OqQOkwzX8wmfP6Qsq1Uf0SQvpkJc+2nVRzTJi6gQ19XUt/OCWhO9IZnFVYhrSuojT15Qa6I3JpMll7OT + rmHDNfw05Y1F3tjHC2pNJIakqoqRrlVD3/yDaU43lhfUmkgMSdX2rE41EUPfqvpoXlBrYmBIbrYK0aem + vmfp6ga1JgaG5GarEH3Ofa4nB+nWmRfUmnANSU5WIdqKH0y//v71/duPv3twEo7gIGyFV7ARFv8qdHFD + opNViLbi53opkBZvLKNPAjczJDtahfBVP9ejCHMKmCz/JQxjPoEd+ABHcc83JDtahfAVP9ezD4K0BeTv + R6DLlUuXPsJlrktb+4dPATXDWJzXbiXKRrrMNyQdViF/Z205r+yHAJMCdhffwDA3VWcLR6jCF+kyMLTZ + 2PfiLhsSD53n+Dtrs3Tqo2FiG/isAuJ6T7k5bkHgt8p+B90NLhn6cDy9JrYakHz1TAdC6qNhYhv45AIy + ATNOjUER4bNxeO12ayEsHk8Meg2LHtuTUYCSCrnvhdRH46QmCAZlA1XV6P7HILUvldsfaYw/wuBGwWfj + GOx7pq2IdC8bilBTYYkkeExqAx9Lr5TMr4VXeDOsQr0Ccr/T9ssWkIZClFR4jsFnMEw6p4B9IaxfXImx + r+njFbC/HngFpOIZK+HNsOOR7kZJ97qhEFNU6AX+DOzd7/YSoEGqgrrg5L/27fYcthnfEgUMve1k1/Tv + 82FDQcaocKC+KYZAB8XyfLnBnxQeJGoxbaFliH7cq0ddMzAUZIwKF3ntygMHVLAt4FG6Jga/LWCOXQGE + fckL4NiDGy/+/hpxjzcUJqrC6mevqCFge3xgojz36X/3KCH9tM9YvD3RFjA5WYwyFKb2vksmv3IhOL6b + MliiB2R7nOERxxaHbfxvoZLycyKXsR2nhFdAO+e8d3IUqPTOS1z1YWIWxyaqTzmrsBrsb5OJkCSM/yyw + tnFujUefvIMHhLTbMXkzpm1TKFBJhWfVhwnHJu7R7VEgqiaSJIr/No6QmtAv2QMVaR5vKBSL6HH2yYsJ + 7d7lwc1dValLVWECvTLw2y51kr8Pq5oGKpF2nTO8HNGXc3DMPmb3M/WlwIR2CffJS3xXM5lfizA4I9YM + 13AFcBvYuYlek1sYEqeSdAsYXcDEvKQacVxnI47rbMRxnY04rrMRx3U24rjORhzX2YhyevgH9KfBo50b + JekAAAAASUVORK5CYII= + + + + 482, 17 + + + 572, 17 + + + 690, 17 + + + + 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 + 7NsAAAAASUVORK5CYII= + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAACMuAAAjLgAAAAAAAAAA + AAAAAAAAAAAAAKizMQCVogAAoKscAJ2pFQCVowUAtrpDAqmwKAWmriMGpq4kB6auJAemriQHpq4kB6au + JAemriQHpq4kB6auJAemriQHpq4kB6auJAemriQHpq4jBqiwKAW0uT4Ck6IBAJ2pFQCgrBwAh5QAAKey + LgAAAAAAAAAAAAAAAACfriQAorApAJupFgCgrB0Tn6oYU56pFomeqRalnqkVsJ6pFbSeqRW0nqkVtJ6p + FbSeqRW0nqkVtJ6pFbSeqRW0nqkVtJ6pFbSeqRW0nqkVtJ6pFbSeqRW0nqkVsZ6pFqaeqRaLn6oYVqCs + HRaaqRUAoa8mAJ+tIwAAAAAAo7IwAKGwKQCVpQsAnqscQp2qGMScqRf7nKkW/5ypFv+cqRb/nKkW/5yp + Fv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5ypFv+cqRb/nKkW/5yp + Fv+cqRf8naoYyZ2rHEiKnQAAoK4lAKCxKwCGogAAmaoZAJysHkSbqhvjm6oa/5uqGv+bqhr/m6oa/5uq + Gv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uqGv+bqhr/m6oa/5uq + Gv+bqhr/m6oa/5uqGv+bqhr/m6ob6JyrHk2YqRYA1s2DAJyuJACcriYZmqwfy5mrHf+Zqx3/masd/5mr + Hf+Zqx3/masd/5mrHf+Zqx3/masd/5mrHf+Zqx3/masc/5mrHP+Zqxz/masc/5mrHf+Zqx3/masd/5mr + Hf+Zqx3/masd/5mrHf+Zqx3/masd/5mrHf+Zqx3/mqwe0puuJB6brSMAl6sfAJmtJGGYrCD+mKwg/5is + IP+YrCD/mKwg/5isIP+YrCD/mKwg/5isIP+XrB//lqsd/5isIv+dsCz/obM1/6GzNP+dsCv/mKwh/5ar + Hf+XrB//mKwg/5esH/+YrCH/mKwg/5esH/+YrCD/mKwg/5isIP+YrCD/ma0jbJaqHAD///8Al64mm5et + JP+XrST/l60k/5etJP+XrST/l60k/5etJP+WrSP/lawi/6G1Ov+9y3X/2eGu/+jt0P/v8t3/7/Lc/+fs + zf/W36n/uslu/5+zNf+UqyD/p7lG/9bfqf/Z4a7/tcRj/5asIv+XrST/l60k/5etJP+XriamprtJA520 + OgiWryu4la4p/5WuKf+Vrin/la4p/5WuKf+Vrin/la0o/5mxMP+/zXz/7PDY//7+/f////////////// + ///////////////////9/vz/6O3Q/8LQg//l68v////////////R3KP/lK0n/5WuKf+Vrin/la4p/5au + K8KbszYNm7Q8DZWvMMOUry//lK8v/5SvL/+Ury//lK8v/5SuLf+ctT7/1N6r//39+/////////////// + ///7/Pj/9vnv//f57//8/fn//////////////////////////////////////8vYm/+Uri3/lK8v/5Sv + L/+Ury//la8wzJqzOxOctkYPlLA2x5OwNP+TsDT/k7A0/5OwNP+TrzP/mLM+/9bhsv////////////// + ///t8t//ydic/6/Fa/+lvVf/pr1Y/7HGbv/M2qL/8/bq///////////////////////b5Lz/nbdH/5Kv + M/+TsDT/k7A0/5OwNP+TsDXQlrI6FZy4TBCTsT3HkrA6/5KxOv+SsTr/krA6/5KwOv/E1JT//v79//// + ///9/vz/0+Cy/5+6U/+RsDj/kK83/5GwOP+RsDj/j641/6K8WP/r8Nr//////////////////v7+/7/R + jP+Qrzf/krE6/5KxOv+SsTr/krA6/5KxO9CUsj4Wm7lREJKyQseRskD/kbJA/5GyQP+QsT7/o75f//L2 + 6P///////////9Derv+VtEf/kLE+/5GyQP+RskD/kbJA/4+xPv+hvV3/5ezS//////////////////// + ////////6/Hd/526Vf+QsT//kbJA/5GyQP+RskD/kbJA0JOzQxaZulcQkbRIx4+zRv+Ps0b/j7NG/46y + RP/H2aL////////////m7tb/mblW/46yRP+Ps0b/j7NG/4+zRv+OskT/oL5h/+Xt0/////////////// + ///g6s3/7vTk////////////vdKR/46yQ/+Ps0b/j7NG/4+zRv+Qs0bQkbRJFpi6WxCPtE3HjrRL/460 + S/+Ns0r/lLdU/+Xt1f///////v79/7nQkP+Mskj/jrRL/460S/+OtEv/jbNJ/5+/Zv/k7dT///////// + ////////2ebD/5e5Wf/C15/////////////c58f/kLVP/46zS/+OtEv/jrRL/460S9CQtU4WlrtfEI22 + UceMtU//jLVP/4u0Tf+dwGn/9Pju///////y9+z/nL9o/4u0Tf+MtU//jLVP/4u0Tv+bvmb/5O3V//// + /////////////9jmxf+Wu17/irNL/6TEdP/4+vT//////+3z5P+XvF//i7RO/4y1T/+MtU//jLVP0I62 + UhaVvGIQjLdVx4q2Uv+LtlP/ibVQ/6XGef/5+/f//////+fw3P+Rul3/irZS/4u2U/+LtlP/ibVQ/8PZ + pv/////////////////Y58b/lLxi/4m1Uf+KtVH/l71l/+/15///////9Pjv/5zBbf+JtVH/i7ZT/4u2 + U/+LtlPQjbdWFpS9ZRCKt1jHibdW/4m3Vv+HtlT/pch+//r8+P//////5e/Z/4+6Xv+Jtlb/ibdW/4m3 + Vv+HtlT/ttKX//3+/P//////1+fG/5O9Zf+ItlT/ibdW/4i2Vf+UvWb/7fTl///////1+fH/nMNy/4i2 + VP+Jt1b/ibdW/4m3VtCLuFkWkr5pEIm4XMeHt1r/h7da/4a3WP+dxXj/9vrz///////t9Ob/k75q/4e3 + Wf+Ht1r/h7da/4e3Wf+MumD/sdCU/7bUm/+RvWf/hrdY/4e4Wv+Ht1r/hrdY/5rDdP/0+PD///////D2 + 6/+WwG7/h7dY/4e3Wv+Ht1r/iLha0Iq5XRaRv2wQh7lfx4a4Xf+GuF3/hbhd/5C+bP/r8+T///////r8 + +f+my4n/hLdb/4a4Xf+GuF3/hrhd/4a4Xf+Et1v/hLdb/4W4Xf+GuF3/hrhd/4a4Xf+Et1v/sNGW//3+ + /f//////4u7Y/4u8Zf+GuF3/hrhd/4a4Xf+GuF7QiLphFo+/bxCGumPHhLlh/4S5Yf+EuWH/hbpi/9Dk + wv///////////9HlxP+GumP/hLlh/4S5Yf+EuWH/hLlh/4S5Yf+EuWH/hLlh/4S5Yf+EuWH/hLlg/4m8 + aP/b6tH////////////E3rT/g7lg/4S5Yf+EuWH/hLlh/4W5YdCHumQWjsByEIS7ZseDumT/g7pk/4O6 + ZP+BuWL/pc2Q//r8+P//////+fz4/67Smv+BuWL/g7pk/4O6ZP+DumT/g7pk/4O6ZP+DumT/g7pk/4K6 + ZP+CumP/uNem//z9/P//////9fnz/5zIhP+BuWL/g7pk/4O6ZP+DumT/g7pk0IW7ZxaMwXQQg7xox4G7 + Z/+Bu2f/gbtn/4G7Zv+FvWv/0ufJ////////////8vjv/6vSmf+CvGj/f7tl/4G7Zv+Bu2f/gbtn/4G7 + Zv9/umX/g71q/7PWo//2+vT////////////H4bz/grxo/4G7Z/+Bu2f/gbtn/4G7Z/+BvGfQg71qFovD + dxCBvWvHf71q/3+9av9/vWr/f71q/368aP+Tx4H/6PPk////////////+Pv2/8njv/+ay4n/hsBy/4G+ + bP+Bvmz/h8Fz/57Mjf/P5sb/+v35////////////4O/b/43Eev9+vGn/f71q/3+9av9/vWr/f71q/4C9 + atCCvm0WhsJ3Dn++bsV+vm3/fr5t/36+bf9+vm3/fr5t/3y9a/+bzY7/6fTm//////////////////b6 + 9f/j8d//1urQ/9fq0f/l8uH/+Pv3/////////////////+Lx3/+UyYb/fL1r/36+bf9+vm3/fr5t/36+ + bf9+vm3/f75uzoXBdRSFw3kKfb9xvHy/cP98v3D/fL9w/3y/cP98v3D/fL9w/3u+bv+Syoj/1evR//z9 + +/////////////////////////////////////////////r8+f/O58r/jceD/3u+bv98v3D/fL9w/3y/ + cP98v3D/fL9w/3y/cP99v3HGg8J4D5XNjQJ7wXSlesBz/3rAc/96wHP/esBz/3rAc/96wHP/esBz/3nA + cf+Aw3n/ptWi/9Tr0//w+O//+/37//7+/v/+/v7/+v36/+737f/Q6c7/odOc/37Cdv95wHH/esBz/3rA + c/96wHP/esBz/3rAc/96wHP/esBz/3vBdLCIxoAFdcByAHrCd3J4wXb/eMF2/3jBdv94wXb/eMF2/3jB + dv94wXb/eMF2/3jBdf92wHT/e8N5/4vKif+b0pr/pdak/6XWpP+a0Zn/icmH/3rCeP92wHT/eMF1/3jB + dv94wXb/eMF2/3jBdv94wXb/eMF2/3jBdv94wXb/esJ3fnG+bwB5w3oAesR7KXfDeOB2wnj/dsJ4/3bC + eP92wnj/dsJ4/3bCeP92wnj/dsJ4/3bCeP92wnj/dcJ3/3TBdv90wXb/dMF2/3TBdv91wnf/dsJ4/3bC + eP92wnj/dsJ4/3bCeP92wnj/dsJ4/3bCeP92wnj/dsJ4/3fDeOd5w3sxeMN5AIHJhgBbuWYAdsR8aXTE + e/d0xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TE + e/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv/dMR7/3TEe/90xHv5dsR8c8vlvQB/x4MAfseBAHjG + gAB5yIUEdMV/bnPFfuhyxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LF + fv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/csV+/3LFfv9yxX7/c8V+63TFf3Z6yIUHeMaAAH3G + gAAAAAAAdsV/AHfGgQDZ//wAdMaCNHLGgYpyxoG+ccaB1HHGgd1xxoHfccaB33HGgd9xxoHfccaB33HG + gd9xxoHfccaB33HGgd9xxoHfccaB33HGgd9xxoHfccaB33HGgd1xxoHVcsaBwHLGgY10xoI5iNKaAXfG + gQB3xoAAAAAAAAAAAAAAAAAAeciFAHzJhwBzxoEAYLtqAHjKigx2yYcZdMiGIXbIhyR2yYgkdsmIJHbJ + iCR2yYgkdsmIJHbJiCR2yYgkdsmIJHbJiCR2yYgkdsmIJHbJiCR2yIckdMiGIXbJhxp4yooMV7VfAHPG + gAB6yIYAeMeEAAAAAAAAAAAAwAAAA4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAM= + + \ No newline at end of file diff --git a/Source/VSoft_Dll/IconViewEx.cs b/Source/VSoft_Dll/IconViewEx.cs index 346188b..c8eb023 100644 --- a/Source/VSoft_Dll/IconViewEx.cs +++ b/Source/VSoft_Dll/IconViewEx.cs @@ -124,9 +124,11 @@ namespace ryControls private void DrawText(DrawListViewItemEventArgs e, Graphics g, Rectangle r, int paddingHeight) { TextFormatFlags flags = GetFormatFlags(HorizontalAlignment.Center); - var r1 = new Rectangle(r.Location,r.Size); - r1.Y=r.Y+ paddingHeight+2;//重绘图标时,文本右移 - r1.Height = r.Height - paddingHeight - 2; + var r1 = new Rectangle(r.Location, r.Size) + { + Y = r.Y + paddingHeight + 2,//重绘图标时,文本右移 + Height = r.Height - paddingHeight - 2 + }; TextRenderer.DrawText( g, e.Item.Text, diff --git a/Source/VSoft_Dll/Prams/GlobalMouseHandler.cs b/Source/VSoft_Dll/Prams/GlobalMouseHandler.cs new file mode 100644 index 0000000..c28d600 --- /dev/null +++ b/Source/VSoft_Dll/Prams/GlobalMouseHandler.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace VSoft.Prams +{ + public delegate void MouseMovedEvent(); + public delegate void MouseMDownEvent(); + public delegate void MouseMUpEvent(); + public class GlobalMouseHandler : IMessageFilter + { + private const int WM_MOUSEMOVE = 0x0200; + private const int WM_MBUTTONDOWN = 0x0207; + private const int WM_MBUTTONUP = 0x0208; + public event MouseMovedEvent TheMouseMoved; + public event MouseMDownEvent TheMouseMDown; + public event MouseMUpEvent TheMouseMUp; + #region IMessageFilter Members + public bool PreFilterMessage(ref Message m) + { + if (m.Msg == WM_MOUSEMOVE) + if (TheMouseMoved != null) + TheMouseMoved(); + if (m.Msg == WM_MBUTTONDOWN) + if (TheMouseMDown != null) + TheMouseMDown(); + if (m.Msg == WM_MBUTTONUP) + if (TheMouseMUp != null) + TheMouseMUp(); + // Always allow message to continue to the next filter control + return false; + } + #endregion + } +} diff --git a/Source/VSoft_Dll/Prams/MouseHook.cs b/Source/VSoft_Dll/Prams/MouseHook.cs new file mode 100644 index 0000000..8c6b7c1 --- /dev/null +++ b/Source/VSoft_Dll/Prams/MouseHook.cs @@ -0,0 +1,207 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; + +namespace VSoft.Prams +{ + /// + /// 鼠标全局钩子 + /// + public class MouseHook + { + private const int WM_MOUSEMOVE = 0x200; + private const int WM_LBUTTONDOWN = 0x201; + private const int WM_RBUTTONDOWN = 0x204; + private const int WM_MBUTTONDOWN = 0x207; + private const int WM_LBUTTONUP = 0x202; + private const int WM_RBUTTONUP = 0x205; + private const int WM_MBUTTONUP = 0x208; + private const int WM_XBUTTON1 = 0x20B; + private const int WM_XBUTTON2 = 0x20C; + private const int WM_LBUTTONDBLCLK = 0x203; + private const int WM_RBUTTONDBLCLK = 0x206; + private const int WM_MBUTTONDBLCLK = 0x209; + + /// + /// 点 + /// + [StructLayout(LayoutKind.Sequential)] + public class POINT + { + public int x; + public int y; + } + + /// + /// 钩子结构体 + /// + [StructLayout(LayoutKind.Sequential)] + public class MouseHookStruct + { + public POINT pt; + public int hWnd; + public int wHitTestCode; + public int dwExtraInfo; + } + + public const int WH_MOUSE_LL = 14; // mouse hook constant + + // 装置钩子的函数 + [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); + + // 卸下钩子的函数 + [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + public static extern bool UnhookWindowsHookEx(int idHook); + + // 下一个钩挂的函数 + [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr GetModuleHandle(string lpModuleName); + + // 全局的鼠标事件 + public event MouseEventHandler OnMouseActivity; + + // 钩子回调函数 + public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); + + // 声明鼠标钩子事件类型 + private HookProc _mouseHookProcedure; + private static int _hMouseHook = 0; // 鼠标钩子句柄 + + /// + /// 构造函数 + /// + public MouseHook() + { + + } + + /// + /// 析构函数 + /// + ~MouseHook() + { + Stop(); + } + + /// + /// 启动全局钩子 + /// + public void Start() + { + // 安装鼠标钩子 + if (_hMouseHook == 0) + { + // 生成一个HookProc的实例. + _mouseHookProcedure = new HookProc(MouseHookProc); + + _hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, _mouseHookProcedure, IntPtr.Zero, 0); + + //假设装置失败停止钩子 + if (_hMouseHook == 0) + { + Stop(); + throw new Exception("SetWindowsHookEx failed."); + } + } + } + + /// + /// 停止全局钩子 + /// + public void Stop() + { + bool retMouse = true; + + if (_hMouseHook != 0) + { + retMouse = UnhookWindowsHookEx(_hMouseHook); + _hMouseHook = 0; + } + + // 假设卸下钩子失败 + //if (!(retMouse)) + // throw new Exception("UnhookWindowsHookEx failed."); + } + + /// + /// 鼠标钩子回调函数 + /// + private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam) + { + // 假设正常执行而且用户要监听鼠标的消息 + if ((nCode >= 0) && (OnMouseActivity != null)) + { + MouseButtons button = MouseButtons.None; + int clickCount = 0; + + switch (wParam) + { + case WM_LBUTTONDOWN: + button = MouseButtons.Left; + clickCount = 1; + break; + case WM_LBUTTONUP: + button = MouseButtons.Left; + clickCount = 1; + break; + case WM_LBUTTONDBLCLK: + button = MouseButtons.Left; + clickCount = 2; + break; + case WM_RBUTTONDOWN: + button = MouseButtons.Right; + clickCount = 1; + break; + case WM_RBUTTONUP: + button = MouseButtons.Right; + clickCount = 1; + break; + case WM_RBUTTONDBLCLK: + button = MouseButtons.Right; + clickCount = 2; + break; + case WM_MBUTTONDOWN: + button = MouseButtons.Middle; + clickCount = 1; + break; + //case WM_MBUTTONUP: + // button = MouseButtons.Middle; + // clickCount = 1; + // break; + case WM_XBUTTON1: + button = MouseButtons.XButton1; + clickCount = 1; + break; + case WM_XBUTTON2: + button = MouseButtons.XButton2; + clickCount = 1; + break; + default: + break; + } + + // 从回调函数中得到鼠标的信息 + MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); + MouseEventArgs e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, 0); + + // 假设想要限制鼠标在屏幕中的移动区域能够在此处设置 + // 后期须要考虑实际的x、y的容差 + if (!Screen.PrimaryScreen.Bounds.Contains(e.X, e.Y)) + { + //return 1; + } + + OnMouseActivity(this, e); + } + + // 启动下一次钩子 + return CallNextHookEx(_hMouseHook, nCode, wParam, lParam); + } + } +} diff --git a/Source/VSoft_Dll/Prams/Run.cs b/Source/VSoft_Dll/Prams/Run.cs index ac5aa47..22fd4a7 100644 --- a/Source/VSoft_Dll/Prams/Run.cs +++ b/Source/VSoft_Dll/Prams/Run.cs @@ -1,139 +1,139 @@ -using ryCommon; -using ryCommonDb; -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Windows.Forms; - -namespace VSoft.Prams -{ - public static class Run - { - [DllImportAttribute("shell32.dll")] - private static extern int SHEmptyRecycleBin(IntPtr handle, string root, int falgs); - const int SHERB_NOCONFIRMATION = 0x000001; - const int SHERB_NOPROGRESSUI = 0x000002; - const int SHERB_NOSOUND = 0x000004; - /// - /// 打开软件 - /// - /// - /// - /// - public static int Open(SoftInfo info, bool RunasAdmin) - { - var path = info.TruePath; - var parm = info.RunPram; - var StartPath = info.StartPath; - var SetJson = info.SetJson; - if (info.SoftType == 1) - { - #region 重新载入数据 - DataProvider mydb = new DataProvider(); - IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); - if (db.ConnDb(info.Path) == 1) - { - RyQuickSQL mySQL = new RyQuickSQL("Softs"); - string where = ""; - if(parm.StartsWith("cmdid=",StringComparison.OrdinalIgnoreCase)) - { - where = "CmdId=@CmdId"; - mySQL.AddField("CmdId", parm.Substring(6)); - } - else if (parm.StartsWith("id=", StringComparison.OrdinalIgnoreCase)) - { - where = "id=@id"; - mySQL.AddField("id", parm.Substring(3).ToInt()); - } - if (where.Length > 0) - { - DataSet ds = db.ReadData("select * from Softs where " + where, mySQL); - if (mydb.HaveData(ds)) - { - DataRow row = ds.Tables[0].Rows[0]; - path = RyFiles.GetRealPath(row["Path"].ToString()); - parm = row["RunPram"].ToString(); - SetJson = row["SetJson"].ToString(); - StartPath = row["StartPath"].ToString(); - } - } - db.Free(); - } - #endregion - } - if (StartPath.Length == 0) - { +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; + +namespace VSoft.Prams +{ + public static class Run + { + [DllImportAttribute("shell32.dll")] + private static extern int SHEmptyRecycleBin(IntPtr handle, string root, int falgs); + const int SHERB_NOCONFIRMATION = 0x000001; + const int SHERB_NOPROGRESSUI = 0x000002; + const int SHERB_NOSOUND = 0x000004; + /// + /// 打开软件 + /// + /// + /// + /// + public static int Open(SoftInfo info, bool RunasAdmin) + { + var path = info.TruePath; + var parm = info.RunPram; + var StartPath = info.StartPath; + var SetJson = info.SetJson; + if (info.SoftType == 1) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(info.Path) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Softs"); + string where = ""; + if(parm.StartsWith("cmdid=",StringComparison.OrdinalIgnoreCase)) + { + where = "CmdId=@CmdId"; + mySQL.AddField("CmdId", parm.Substring(6)); + } + else if (parm.StartsWith("id=", StringComparison.OrdinalIgnoreCase)) + { + where = "id=@id"; + mySQL.AddField("id", parm.Substring(3).ToInt()); + } + if (where.Length > 0) + { + DataSet ds = db.ReadData("select * from Softs where " + where, mySQL); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + path = RyFiles.GetRealPath(row["Path"].ToString()); + parm = row["RunPram"].ToString(); + SetJson = row["SetJson"].ToString(); + StartPath = row["StartPath"].ToString(); + } + } + db.Free(); + } + #endregion + } + if (StartPath.Length == 0) + { if (System.IO.File.Exists(path) || System.IO.Directory.Exists(path)) { StartPath = System.IO.Path.GetDirectoryName(path.TrimEnd('\\')); - } + } else { StartPath = null; - } - } - if (path.StartsWith("@", StringComparison.OrdinalIgnoreCase)) //如果路径是@开头,则表示这个是一个命令 - { - switch(path.Substring(1).ToLower()) - { - case "emptyrecyclebin"://清空回收站 - - switch (MessageBox.Show("是否确认要清空回收站?\r\n\r\n该操作不可逆!!!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)) - { - case DialogResult.Yes: - SHEmptyRecycleBin(IntPtr.Zero, "", SHERB_NOCONFIRMATION + SHERB_NOPROGRESSUI + SHERB_NOSOUND); - return 1; - } - break; - } - return 0; - } - if (RunasAdmin) - { - return RunProcessAsAdmin(path, parm, StartPath); - } - else - { - Json json = new Json(SetJson); - if (json.GetJsonValue("RunAsAdmin", false)) - { - return RunProcessAsAdmin(path, parm, StartPath); - } - else - { - return RyFiles.RunFile(path, parm, StartPath); - } - } - } - /// - /// 以管理员方式打开 - /// - /// - /// - /// - /// - public static int RunProcessAsAdmin(string exeName, string parameters, string CurrentDirectory) - { - try - { - System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); - startInfo.UseShellExecute = true; - startInfo.WorkingDirectory = CurrentDirectory; - startInfo.FileName = exeName; - startInfo.Verb = "runas"; - //MLHIDE - startInfo.Arguments = parameters; - startInfo.ErrorDialog = true; - var process = System.Diagnostics.Process.Start(startInfo); - return 37; - } - catch - { - return -1; - } - } - } -} + } + } + if (path.StartsWith("@", StringComparison.OrdinalIgnoreCase)) //如果路径是@开头,则表示这个是一个命令 + { + switch(path.Substring(1).ToLower()) + { + case "emptyrecyclebin"://清空回收站 + + switch (MessageBox.Show("是否确认要清空回收站?\r\n\r\n该操作不可逆!!!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)) + { + case DialogResult.Yes: + SHEmptyRecycleBin(IntPtr.Zero, "", SHERB_NOCONFIRMATION + SHERB_NOPROGRESSUI + SHERB_NOSOUND); + return 1; + } + break; + } + return 0; + } + if (RunasAdmin) + { + return RunProcessAsAdmin(path, parm, StartPath); + } + else + { + Json json = new Json(SetJson); + if (json.GetJsonValue("RunAsAdmin", false)) + { + return RunProcessAsAdmin(path, parm, StartPath); + } + else + { + return RyFiles.RunFile(path, parm, StartPath); + } + } + } + /// + /// 以管理员方式打开 + /// + /// + /// + /// + /// + public static int RunProcessAsAdmin(string exeName, string parameters, string CurrentDirectory) + { + try + { + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); + startInfo.UseShellExecute = true; + startInfo.WorkingDirectory = CurrentDirectory; + startInfo.FileName = exeName; + startInfo.Verb = "runas"; + //MLHIDE + startInfo.Arguments = parameters; + startInfo.ErrorDialog = true; + var process = System.Diagnostics.Process.Start(startInfo); + return 37; + } + catch + { + return -1; + } + } + } +} diff --git a/Source/VSoft_Dll/Prams/SoftInfo.cs b/Source/VSoft_Dll/Prams/SoftInfo.cs index dd7f49b..50a2a34 100644 --- a/Source/VSoft_Dll/Prams/SoftInfo.cs +++ b/Source/VSoft_Dll/Prams/SoftInfo.cs @@ -4,13 +4,13 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; - +using ryControls.Interface; namespace VSoft.Prams { /// /// 软件信息 /// - public class SoftInfo + public class SoftInfo: IItemInfo { /// /// id diff --git a/Source/VSoft_Dll/Properties/AssemblyInfo.cs b/Source/VSoft_Dll/Properties/AssemblyInfo.cs index 4b1330c..595f001 100644 --- a/Source/VSoft_Dll/Properties/AssemblyInfo.cs +++ b/Source/VSoft_Dll/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2012.0801")] -[assembly: AssemblyFileVersion("1.0.2012.0801")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.2012.2701")] +[assembly: AssemblyFileVersion("1.0.2012.2701")] \ No newline at end of file diff --git a/Source/VSoft_Dll/TabList.cs b/Source/VSoft_Dll/TabList.cs index 06169ca..1f26748 100644 --- a/Source/VSoft_Dll/TabList.cs +++ b/Source/VSoft_Dll/TabList.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using System.Drawing; +using System.Drawing.Drawing2D; using System.Windows.Forms; namespace ryControls @@ -92,19 +93,73 @@ namespace ryControls this.DrawText(e, g, r); } } - private Color _SelectedBackColor = Color.LightSkyBlue; - [Description("选择项的背景颜色")] - public Color SelectedBackColor - { - get - { - return _SelectedBackColor; - } - set - { - _SelectedBackColor = value; - this.Refresh(); - } + private Color _SelectedStartBackColor = Color.LightSkyBlue; + /// + /// 选择项的背景开始颜色 + /// + [Description("选择项的背景开始颜色")] + public Color SelectedStartBackColor + { + get + { + return _SelectedStartBackColor; + } + set + { + _SelectedStartBackColor = value; + this.Refresh(); + } + } + private Color _SelectedEndBackColor = Color.FromArgb(255, 236, 181); + /// + /// 选择项的背景结束颜色 + /// + [Description("选择项的背景结束颜色")] + public Color SelectedEndBackColor + { + get + { + return _SelectedEndBackColor; + } + set + { + _SelectedEndBackColor = value; + this.Refresh(); + } + } + private Color _SelectedBorderColor = Color.FromArgb(229, 195, 101); + /// + /// 选择项的边框颜色 + /// + [Description("选择项的边框颜色")] + public Color SelectedBorderColor + { + get + { + return _SelectedBorderColor; + } + set + { + _SelectedBorderColor = value; + this.Refresh(); + } + } + private Color _SelectedForeColor = Color.Black; + /// + /// 选择项的字体颜色 + /// + [Description("选择项的字体颜色")] + public Color SelectedForeColor + { + get + { + return _SelectedForeColor; + } + set + { + _SelectedForeColor = value; + this.Refresh(); + } } /// /// 重绘选中时背景 @@ -112,11 +167,25 @@ namespace ryControls private void DrawSelectedBackground(DrawListViewItemEventArgs e, Graphics g, Rectangle r) { if (e.Item.Selected) - { - using (SolidBrush brush = new SolidBrush(_SelectedBackColor)) - { - g.FillRectangle(brush, r); - } + { + //渐变画刷 + LinearGradientBrush brush = new LinearGradientBrush(e.Bounds, _SelectedStartBackColor, + _SelectedEndBackColor, LinearGradientMode.Vertical); + //填充区域 + //Rectangle borderRect = new Rectangle(r, e.Bounds.Y, e.Bounds.Width - 5, e.Bounds.Height - 2); + e.Graphics.FillRectangle(brush, r); + brush.Dispose(); + ////画边框 + Pen pen = new Pen(_SelectedBorderColor); + Rectangle borderRect = r; + borderRect.Width--; + borderRect.Height--; + e.Graphics.DrawRectangle(pen, borderRect); + pen.Dispose(); + //using (SolidBrush brush = new SolidBrush(_SelectedBackColor)) + //{ + // g.FillRectangle(brush, r); + //} } } @@ -156,7 +225,7 @@ namespace ryControls e.Item.Text, e.Item.Font, r, - e.Item.ForeColor, + e.Item.Selected?SelectedForeColor: e.Item.ForeColor, flags); } diff --git a/Source/VSoft_Dll/VSoft.csproj b/Source/VSoft_Dll/VSoft.csproj index 44e3651..b59eaa6 100644 --- a/Source/VSoft_Dll/VSoft.csproj +++ b/Source/VSoft_Dll/VSoft.csproj @@ -1,177 +1,173 @@ - - - - - Debug - AnyCPU - {13C45E68-2DA3-4C9E-9BCA-E63D0FA9A760} - Library - Properties - VSoft - VSoft - v4.0 - 512 - true - - - true - full - false - ..\..\Bin\Debug\VSoft\ - DEBUG;TRACE - prompt - 4 - x86 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\..\Bin\Debug\VSoft\MyDb.dll - - - ..\..\Bin\Debug\VSoft\MyDb_SQLite.dll - - - False - ..\..\..\..\..\C#\私人代码\QO流程管理\Bin\Debug\RySpider\Newtonsoft.Json.dll - - - ..\..\Bin\Debug\VSoft\ryControls.dll - - - ..\..\..\..\..\公共代码\C#\公用控件组\Bin\Debug\CommonControls\.NET4\ryUpdate.dll - - - - - - - - - - - - - - - Form - - - frmSetting.cs - - - - Form - - - FrmAbout.cs - - - Form - - - FrmAddType.cs - - - Form - - - FrmAddColumn.cs - - - Form - - - FrmAddSoft.cs - - - Form - - - FrmInCMD.cs - - - Form - - - FrmVSoft.cs - - - - - - - Component - - - Component - - - - - - - - - - - - True - True - Resources.resx - - - - - frmSetting.cs - - - FrmAbout.cs - - - FrmAddType.cs - - - FrmAddColumn.cs - - - FrmAddSoft.cs - - - FrmInCMD.cs - - - FrmVSoft.cs - - - TabList.cs - - - IconViewEx.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - - {F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} - 1 - 0 - 0 - tlbimp - False - True - - - + + + + + Debug + AnyCPU + {13C45E68-2DA3-4C9E-9BCA-E63D0FA9A760} + Library + Properties + VSoft + VSoft + v4.0 + 512 + true + + + true + full + false + ..\..\Bin\Debug\VSoft\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\Bin\Debug\VSoft\MyDb.dll + + + ..\..\Bin\Debug\VSoft\MyDb_SQLite.dll + + + False + ..\..\Bin\Debug\VSoft\Newtonsoft.Json.dll + + + ..\..\Bin\Debug\VSoft\ryControls.dll + + + ..\..\Bin\Debug\VSoft\ryUpdate.dll + + + + + + + + + + + + + + + Form + + + frmSetting.cs + + + + Form + + + FrmAbout.cs + + + Form + + + FrmAddType.cs + + + Form + + + FrmAddColumn.cs + + + Form + + + FrmAddSoft.cs + + + Form + + + FrmInCMD.cs + + + Form + + + FrmVSoft.cs + + + + + + + + + Component + + + + + + + + + + + + True + True + Resources.resx + + + + + frmSetting.cs + + + FrmAbout.cs + + + FrmAddType.cs + + + FrmAddColumn.cs + + + FrmAddSoft.cs + + + FrmInCMD.cs + + + FrmVSoft.cs + + + TabList.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + {F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} + 1 + 0 + 0 + tlbimp + False + True + + + \ No newline at end of file