diff --git a/Bin/Debug/VSoft/MyDb.dll b/Bin/Debug/VSoft/MyDb.dll
index 76c08a5..4e7c2c4 100644
Binary files a/Bin/Debug/VSoft/MyDb.dll and b/Bin/Debug/VSoft/MyDb.dll differ
diff --git a/Bin/Debug/VSoft/MyDb.xml b/Bin/Debug/VSoft/MyDb.xml
index ca851d0..1071f7a 100644
--- a/Bin/Debug/VSoft/MyDb.xml
+++ b/Bin/Debug/VSoft/MyDb.xml
@@ -1177,12 +1177,19 @@
- 将指定类型转换成长整型
+ 将指定类型转换成长整型,如果时间时间类型,则转换为Unix时间戳
+
+
+ 转换为Unix时间戳
+
+
+
+
将指定类型转换成长整型
@@ -1783,6 +1790,22 @@
返回错误信息
返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常
+
+
+ 大文件多次复制文件 true:复制成功 false:复制失败
+
+ 原始文件路径
+ 复制目标文件路径
+
+
+
+
+ 复制文件夹到目标文件夹
+
+ 源文件夹
+ 目标文件夹
+ 返回移动操作是否成功的标识,成功返回0,负数表示复制失败的文件数量。1表示源文件夹不存在
+
重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法
@@ -1924,6 +1947,14 @@
+
+
+ 读取文件内容,可以自动识别文件编码
+
+
+
+
+
读取文件所有行,可以自动识别文件编码
@@ -1931,6 +1962,14 @@
+
+
+ 读取文件所有行,可以自动识别文件编码
+
+
+
+
+
写入所有文本行到文件,如果文件夹不存在,会自动创建
@@ -2127,6 +2166,40 @@
+
+
+ 数据库操作扩展
+
+
+
+
+ 判断DataSet是否包含数据
+
+
+
+
+
+
+ 获取首行数据,如果没有数据,则返回null
+
+
+
+
+
+
+ 获取第一行第一列的值
+
+
+
+
+
+
+ 获取第一张表的指定行数据
+
+
+ 指定第几行
+
+
对鼠标或键盘的自动化操作
@@ -2537,6 +2610,13 @@
+
+
+ 时间戳转为C#格式时间
+
+
+
+
将c# DateTime时间格式转换为js时间戳格式
@@ -2551,6 +2631,13 @@
+
+
+ JS时间戳转为C#格式时间
+
+
+
+
根据年月日转换成日期
@@ -2695,6 +2782,22 @@
+
+
+ 将窗体植入到容器控件中
+
+
+ 作为窗体容器的控件
+
+
+
+
+ 重新调整窗体大小以适配容器大小
+
+
+ 作为窗体容器的控件
+
+
设置注册表操作,部分功能需要管理员权限
@@ -3131,6 +3234,3094 @@
+
+
+ A utility class to compute CRC32.
+
+
+
+
+ Compute a checksum for a given array of bytes.
+
+ The array of bytes to compute the checksum for.
+ The computed checksum.
+
+
+
+ Compute a checksum for a given string.
+
+ The string to compute the checksum for.
+ The computed checksum.
+
+
+
+ Represents an HTML attribute.
+
+
+
+
+ Gets the line number of this attribute in the document.
+
+
+
+
+ Gets the column number of this attribute in the document.
+
+
+
+
+ Gets the stream position of the value of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets the length of the value.
+
+
+
+
+
+
+
+
+
+ Gets the qualified name of the attribute.
+
+
+
+
+ Name of attribute with original case
+
+
+
+
+ Gets the HTML document to which this attribute belongs.
+
+
+
+
+ Gets the HTML node to which this attribute belongs.
+
+
+
+
+ Specifies what type of quote the data should be wrapped in
+
+
+
+
+ Specifies what type of quote the data should be wrapped in (internal to keep backward compatibility)
+
+
+
+
+ Gets the stream position of this attribute in the document, relative to the start of the document.
+
+
+
+
+ Gets or sets the value of the attribute.
+
+
+
+
+ Gets the DeEntitized value of the attribute.
+
+
+
+
+ Gets a valid XPath string that points to this Attribute
+
+
+
+
+ Compares the current instance with another attribute. Comparison is based on attributes' name.
+
+ An attribute to compare with this instance.
+ A 32-bit signed integer that indicates the relative order of the names comparison.
+
+
+
+ Creates a duplicate of this attribute.
+
+ The cloned attribute.
+
+
+
+ Removes this attribute from it's parents collection
+
+
+
+
+ An Enum representing different types of Quotes used for surrounding attribute values
+
+
+
+
+ A single quote mark '
+
+
+
+
+ A double quote mark "
+
+
+
+
+ No quote mark
+
+
+
+
+ The initial value (current value)
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Gets readonly status of colelction
+
+
+
+
+ Gets the attribute at the specified index.
+
+
+
+
+ Gets a given attribute from the list using its name.
+
+
+
+
+ Adds a new attribute to the collection with the given values
+
+
+
+
+
+
+ Adds supplied item to collection
+
+
+
+
+ Adds a range supplied items to collection.
+ An IEnumerable<HtmlAttribute> of items to append to this.
+
+
+ Adds a range supplied items to collection using a dictionary.
+ A Dictionary<string,string> of items to append to this.
+
+
+
+ Explicit clear
+
+
+
+
+ Retreives existence of supplied item
+
+
+
+
+
+
+ Copies collection to array
+
+
+
+
+
+
+ Get Explicit enumerator
+
+
+
+
+
+ Explicit non-generic enumerator
+
+
+
+
+
+ Retrieves the index for the supplied item, -1 if not found
+
+
+
+
+
+
+ Inserts given item into collection at supplied index
+
+
+
+
+
+
+ Explicit collection remove
+
+
+
+
+
+
+ Removes the attribute at the specified index.
+
+ The index of the attribute to remove.
+
+
+
+ Inserts the specified attribute as the last attribute in the collection.
+
+ The attribute to insert. May not be null.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The appended attribute.
+
+
+
+ Creates and inserts a new attribute as the last attribute in the collection.
+
+ The name of the attribute to insert.
+ The value of the attribute to insert.
+ The appended attribute.
+
+
+
+ Checks for existance of attribute with given name
+
+
+
+
+
+
+ Inserts the specified attribute as the first node in the collection.
+
+ The attribute to insert. May not be null.
+ The prepended attribute.
+
+
+
+ Removes a given attribute from the list.
+
+ The attribute to remove. May not be null.
+
+
+
+ Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed.
+
+ The attribute's name. May not be null.
+
+
+
+ Remove all attributes in the list.
+
+
+
+
+ Returns all attributes with specified name. Handles case insentivity
+
+ Name of the attribute
+
+
+
+
+ Removes all attributes from the collection
+
+
+
+
+ Clears the attribute collection
+
+
+
+
+ Represents an HTML comment.
+
+
+
+
+ Gets or Sets the comment text of the node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Represents a complete HTML document.
+
+
+
+ True to disable, false to enable the behavior tag p.
+
+
+ Default builder to use in the HtmlDocument constructor
+
+
+ Action to execute before the Parse is executed
+
+
+
+ Defines the max level we would go deep into the html document
+
+
+
+ The HtmlDocument Text. Careful if you modify it.
+
+
+ True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility.
+
+
+
+ Adds Debugging attributes to node. Default is false.
+
+
+
+
+ Defines if closing for non closed nodes must be done at the end or directly in the document.
+ Setting this to true can actually change how browsers render the page. Default is false.
+
+
+
+
+ Defines if non closed nodes will be checked at the end of parsing. Default is true.
+
+
+
+
+ Defines if a checksum must be computed for the document while parsing. Default is false.
+
+
+
+
+ Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression.
+ Setting this to true will return empty collection and false will return null. Default is false.
+
+
+
+ True to disable, false to enable the server side code.
+
+
+
+ Defines the default stream encoding to use. Default is System.Text.Encoding.Default.
+
+
+
+
+ Force to take the original comment instead of creating it
+
+
+
+
+ Defines if source text must be extracted while parsing errors.
+ If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true.
+ Default is false.
+
+
+
+
+ Defines the maximum length of source text or parse errors. Default is 100.
+
+
+
+
+ Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false.
+
+
+
+
+ Defines if output must conform to XML, instead of HTML. Default is false.
+
+
+
+
+ If used together with and enabled, Xml namespaces in element names are preserved. Default is false.
+
+
+
+
+ Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false.
+
+
+
+ Defines the global attribute value quote. When specified, it will always win.
+
+
+
+ Defines if name must be output with it's original case. Useful for asp.net tags and attributes. Default is false.
+
+
+
+
+ Defines if name must be output in uppercase. Default is false.
+
+
+
+
+ Defines if declared encoding must be read from the document.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node.
+ Default is true.
+
+
+
+
+ Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null.
+
+
+
+
+ Defines if the 'id' attribute must be specifically used. Default is true.
+
+
+
+
+ Defines if empty nodes must be written as closed during output. Default is false.
+
+
+
+
+ The max number of nested child nodes.
+ Added to prevent stackoverflow problem when a page has tens of thousands of opening html tags with no closing tags
+
+
+
+
+ Creates an instance of an HTML document.
+
+
+
+ Gets the parsed text.
+ The parsed text.
+
+
+
+ Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is
+ thrown.
+
+
+
+
+ Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise.
+
+
+
+
+ Gets the document's declared encoding.
+ Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node (pre-HTML5) or the meta charset="XXXXX" html node (HTML5).
+
+
+
+
+ Gets the root node of the document.
+
+
+
+
+ Gets the document's output encoding.
+
+
+
+
+ Gets a list of parse errors found in the document.
+
+
+
+
+ Gets the remaining text.
+ Will always be null if OptionStopperNodeName is null.
+
+
+
+
+ Gets the offset of Remainder in the original Html text.
+ If OptionStopperNodeName is null, this will return the length of the original Html text.
+
+
+
+
+ Gets the document's stream encoding.
+
+
+
+
+ Gets a valid XML name.
+
+ Any text.
+ A string that is a valid XML name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Applies HTML encoding to a specified string.
+
+ The input string to encode. May not be null.
+ The encoded string.
+
+
+
+ Determines if the specified character is considered as a whitespace character.
+
+ The character to check.
+ true if if the specified character is considered as a whitespace character.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The new HTML attribute.
+
+
+
+ Creates an HTML attribute with the specified name.
+
+ The name of the attribute. May not be null.
+ The value of the attribute.
+ The new HTML attribute.
+
+
+
+ Creates an HTML comment node.
+
+ The new HTML comment node.
+
+
+
+ Creates an HTML comment node with the specified comment text.
+
+ The comment text. May not be null.
+ The new HTML comment node.
+
+
+
+ Creates an HTML element node with the specified name.
+
+ The qualified name of the element. May not be null.
+ The new HTML node.
+
+
+
+ Creates an HTML text node.
+
+ The new HTML text node.
+
+
+
+ Creates an HTML text node with the specified text.
+
+ The text of the node. May not be null.
+ The new HTML text node.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML stream.
+
+ The input stream. May not be null.
+ The html is checked.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text provided on a TextReader.
+
+ The TextReader used to feed the HTML. May not be null.
+ The detected encoding.
+
+
+
+ Detects the encoding of an HTML text.
+
+ The input html text. May not be null.
+ The detected encoding.
+
+
+
+ Gets the HTML node with the specified 'id' attribute value.
+
+ The attribute id to match. May not be null.
+ The HTML node with the matching id or null if not found.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Loads the HTML document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document. May not be null.
+
+
+
+ Loads the HTML document from the specified string.
+
+ String containing the HTML document to load. May not be null.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the HTML document to the specified stream.
+
+ The stream to which you want to save. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Saves the HTML document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the HTML document to the specified TextWriter.
+
+ The TextWriter to which you want to save. May not be null.
+
+
+
+ Saves the HTML document to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read.
+
+
+
+ Detects the encoding of an HTML document from a file first, and then loads the file.
+
+ The complete file path to be read. May not be null.
+ true to detect encoding, false otherwise.
+
+
+
+ Detects the encoding of an HTML file.
+
+ Path for the file containing the HTML document to detect. May not be null.
+ The detected encoding.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads an HTML document from a file.
+
+ The complete file path to be read. May not be null.
+ The character encoding to use. May not be null.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document. May not be null.
+ The character encoding to use. May not be null.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML document.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the root of the document.
+
+
+
+ Flags that describe the behavior of an Element node.
+
+
+
+
+ The node is a CDATA node.
+
+
+
+
+ The node is empty. META or IMG are example of such nodes.
+
+
+
+
+ The node will automatically be closed during parsing.
+
+
+
+
+ The node can overlap.
+
+
+
+
+ A utility class to replace special characters by entities and vice-versa.
+ Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html
+ Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
+ See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
+
+
+
+
+
+
+
+
+
+ A collection of entities indexed by name.
+
+
+
+
+ A collection of entities indexed by value.
+
+
+
+
+ Replace known entities by characters.
+
+ The source text.
+ The result text.
+
+
+
+ Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes.
+
+ The node to entitize.
+ An entitized cloned node.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ The result text.
+
+
+
+ Replace characters above 127 by entities.
+
+ The source text.
+ If set to false, the function will not use known entities name. Default is true.
+ If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized.
+ The result text
+
+
+
+ Represents an HTML node.
+
+
+
+
+ Gets the name of a comment node. It is actually defined as '#comment'.
+
+
+
+
+ Gets the name of the document node. It is actually defined as '#document'.
+
+
+
+
+ Gets the name of a text node. It is actually defined as '#text'.
+
+
+
+
+ Gets a collection of flags that define specific behaviors for specific element nodes.
+ The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value.
+
+
+
+
+ Initialize HtmlNode. Builds a list of all tags that have special allowances
+
+
+
+
+ Initializes HtmlNode, providing type, owner and where it exists in a collection
+
+
+
+
+
+
+
+ Gets the collection of HTML attributes for this node. May not be null.
+
+
+
+
+ Gets all the children of the node.
+
+
+
+
+ Gets a value indicating if this node has been closed or not.
+
+
+
+
+ Gets the collection of HTML attributes for the closing tag. May not be null.
+
+
+
+
+ Gets the closing tag of the node, null if the node is self-closing.
+
+
+
+
+ Gets the first child of the node.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes.
+
+
+
+
+ Gets a value indicating whether this node has any child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has any attributes on the closing tag.
+
+
+
+
+ Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object.
+
+
+
+
+ Gets the text between the start and end tags of the object.
+
+
+
+ Gets direct inner text.
+ The direct inner text.
+
+
+
+ Gets the last child of the node.
+
+
+
+
+ Gets the line number of this node in the document.
+
+
+
+
+ Gets the column number of this node in the document.
+
+
+
+
+ Gets the stream position of the area between the opening and closing tag of the node, relative to the start of the document.
+
+
+
+
+ Gets the stream position of the area of the beginning of the tag, relative to the start of the document.
+
+
+
+
+ Gets the length of the area between the opening and closing tag of the node.
+
+
+
+
+ Gets the length of the entire node, opening and closing tag included.
+
+
+
+
+ Gets or sets this node's name.
+
+
+
+
+ Gets the HTML node immediately following this element.
+
+
+
+
+ Gets the type of this node.
+
+
+
+
+ The original unaltered name of the tag
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets the to which this node belongs.
+
+
+
+
+ Gets the parent of this node (for nodes that can have parents).
+
+
+
+
+ Gets the node immediately preceding this node.
+
+
+
+
+ Gets the stream position of this node in the document, relative to the start of the document.
+
+
+
+
+ Gets a valid XPath string that points to this node
+
+
+
+
+ The depth of the node relative to the opening root html element. This value is used to determine if a document has to many nested html nodes which can cause stack overflows
+
+
+
+
+ Determines if an element node can be kept overlapped.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an element node that can be kept overlapped, false otherwise.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The newly created node instance.
+
+
+
+ Creates an HTML node from a string representing literal HTML.
+
+ The HTML text.
+ The HTML Document builder.
+ The newly created node instance.
+
+
+
+ Determines if an element node is a CDATA element node.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a CDATA element node, false otherwise.
+
+
+
+ Determines if an element node is closed.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of a closed element node, false otherwise.
+
+
+
+ Determines if an element node is defined as empty.
+
+ The name of the element node to check. May not be null.
+ true if the name is the name of an empty element node, false otherwise.
+
+
+
+ Determines if a text corresponds to the closing tag of an node that can be kept overlapped.
+
+ The text to check. May not be null.
+ true or false.
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Get Ancestors with matching name
+
+
+
+
+
+
+ Returns a collection of all ancestor nodes of this element.
+
+
+
+
+
+ Gets all anscestor nodes and the current node
+
+
+
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+ Sets child nodes identifier.
+ The chil node.
+
+
+
+ Adds the specified node to the end of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Gets all Attributes with name
+
+
+
+
+
+
+ Creates a duplicate of the node
+
+
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and changes its name at the same time.
+
+ The new name of the cloned node. May not be null.
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node.
+
+ true to recursively clone the subtree under the specified node; false to clone only the node itself.
+ The cloned node.
+
+
+
+ Creates a duplicate of the node and the subtree under it.
+
+ The node to duplicate. May not be null.
+
+
+
+ Creates a duplicate of the node.
+
+ The node to duplicate. May not be null.
+ true to recursively clone the subtree under the specified node, false to clone only the node itself.
+
+
+
+ Gets all Descendant nodes for this node and each of child nodes
+
+ The depth level of the node to parse in the html tree
+ the current element as an HtmlNode
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Gets all Descendant nodes in enumerated list
+
+
+
+
+
+ Get all descendant nodes with matching name
+
+
+
+
+
+
+ Returns a collection of all descendant nodes of this element, in document order
+
+
+
+
+
+ Gets all descendant nodes including this node
+
+
+
+
+
+
+ Gets first generation child node matching name
+
+
+
+
+
+
+ Gets matching first generation child nodes matching name
+
+
+
+
+
+ Gets data attribute.
+ The key.
+ The data attribute.
+
+
+ Gets the data attributes in this collection.
+
+ An enumerator that allows foreach to be used to process the data attributes in this
+ collection.
+
+
+
+ Gets the attributes in this collection.
+
+ An enumerator that allows foreach to be used to process the attributes in this collection.
+
+
+
+ Gets the attributes in this collection.
+ A variable-length parameters list containing attribute names.
+
+ An enumerator that allows foreach to be used to process the attributes in this collection.
+
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Helper method to get the value of an attribute of this node. If the attribute is not found,
+ the default value will be returned.
+
+ The name of the attribute to get. May not be null.
+ The default value to return if not found.
+ The value of the attribute if found, the default value if not found.
+
+
+
+ Inserts the specified node immediately after the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newNode is placed after the refNode.
+ The node being inserted.
+
+
+
+ Inserts the specified node immediately before the specified reference node.
+
+ The node to insert. May not be null.
+ The node that is the reference node. The newChild is placed before this node.
+ The node being inserted.
+
+
+
+ Adds the specified node to the beginning of the list of children of this node.
+
+ The node to add. May not be null.
+ The node added.
+
+
+
+ Adds the specified node list to the beginning of the list of children of this node.
+
+ The node list to add. May not be null.
+
+
+
+ Removes node from parent collection
+
+
+
+
+ Removes all the children and/or attributes of the current node.
+
+
+
+
+ Removes all the children of the current node.
+
+
+
+ Removes all id for node described by node.
+ The node.
+
+
+ Move a node already associated and append it to this node instead.
+ The child node to move.
+
+
+ Move a children collection already associated and append it to this node instead.
+ The children collection already associated to move to another node.
+
+
+ Removes the children collection for this node.
+ The old children collection to remove.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ The node removed.
+
+
+
+ Removes the specified child node.
+
+ The node being removed. May not be null.
+ true to keep grand children of the node, false otherwise.
+ The node removed.
+
+
+
+ Replaces the child node oldChild with newChild node.
+
+ The new node to put in the child list.
+ The node being replaced in the list.
+ The node replaced.
+
+
+
+ Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically.
+
+ The name of the attribute to set. May not be null.
+ The value for the attribute.
+ The corresponding attribute instance.
+
+
+
+ Saves all the children of the node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+ Identifies the level we are in starting at root with 0
+
+
+
+ Saves all the children of the node to a string.
+
+ The saved string.
+
+
+
+ Saves the current node to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+ identifies the level we are in starting at root with 0
+
+
+
+ Saves the current node to the specified XmlWriter.
+
+ The XmlWriter to which you want to save.
+
+
+
+ Saves the current node to a string.
+
+ The saved string.
+
+
+
+ Sets the parent Html node and properly determines the current node's depth using the parent node's depth.
+
+
+
+
+ Adds one or more classes to this node.
+
+ The node list to add. May not be null.
+
+
+
+ Adds one or more classes to this node.
+
+ The node list to add. May not be null.
+ true to throw Error if class name exists, false otherwise.
+
+
+
+ Removes the class attribute from the node.
+
+
+
+
+ Removes the class attribute from the node.
+
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+
+ Removes the specified class from the node.
+
+ The class being removed. May not be null.
+
+
+
+ Removes the specified class from the node.
+
+ The class being removed. May not be null.
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+
+ Replaces the class name oldClass with newClass name.
+
+ The new class name.
+ The class being replaced.
+
+
+
+ Replaces the class name oldClass with newClass name.
+
+ The new class name.
+ The class being replaced.
+ true to throw Error if class name doesn't exist, false otherwise.
+
+
+ Gets the CSS Class from the node.
+
+ The CSS Class from the node
+
+
+
+ Check if the node class has the parameter class.
+ The class.
+ True if node class has the parameter class, false if not.
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ Returns an object of type T including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument.
+ Returns an object of type T including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+ Fill an object and go through it's properties and fill them too.
+
+ Type of object to want to fill. It should have atleast one property that defined XPath.
+ If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument.
+ Returns an object of type targetType including Encapsulated data.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+ Why it's thrown.
+
+
+
+ Creates a new XPathNavigator object for navigating this HTML node.
+
+ An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document.
+
+
+
+ Creates an XPathNavigator using the root of this document.
+
+
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Selects the first XmlNode that matches the XPath expression.
+
+ The XPath expression. May not be null.
+ The first that matches the XPath query or a null reference if no matching node was found.
+
+
+
+ Selects a list of nodes matching the expression.
+
+ The XPath expression.
+ An containing a collection of nodes matching the query, or null if no node matched the XPath expression.
+
+
+
+ Includes tools that GetEncapsulatedData method uses them.
+
+
+
+
+ Determine if a type define an attribute or not , supporting both .NetStandard and .NetFramework2.0
+
+ Type you want to test it.
+ Attribute that type must have or not.
+ If true , The type parameter define attributeType parameter.
+
+
+
+ Retrive properties of type that defined .
+
+ Type that you want to find it's XPath-Defined properties.
+ IEnumerable of property infos of a type , that defined specific attribute.
+
+
+
+ Determine if a has implemented BUT is considered as NONE-IEnumerable !
+
+ The property info you want to test.
+ True if property info is IEnumerable.
+
+
+
+ Returns T type(first generic type) of or .
+
+ IEnumerable-Implemented property
+ List of generic types.
+
+
+
+ Find and Return a mehtod that defined in a class by it's name.
+
+ Type of class include requested method.
+ Name of requested method as string.
+ Method info of requested method.
+
+
+
+ Create of given type.
+
+ Type that you want to make a List of it.
+ Returns IList of given type.
+
+
+
+ Returns the part of value of you want as .
+
+ A htmlNode instance.
+ Attribute that includes ReturnType
+ String that choosen from HtmlNode as result.
+
+
+
+ Returns parts of values of you want as .
+
+ that you want to retrive each value.
+ A instnce incules .
+ Type of IList generic you want.
+
+
+
+
+ Simulate Func method to use in Lambada Expression.
+
+
+
+
+
+
+
+
+ This method works like Where method in LINQ.
+
+
+
+
+
+
+
+
+ Check if the type can instantiated.
+
+
+
+
+
+
+ Returns count of elements stored in IEnumerable of T
+
+
+
+
+
+
+
+ Specify which part of is requested.
+
+
+
+
+ The text between the start and end tags of the object.
+
+
+
+
+ The HTML between the start and end tags of the object
+
+
+
+
+ The object and its content in HTML
+
+
+
+
+ Just mark and flag classes to show they have properties that defined .
+
+
+
+
+ Includes XPath and . XPath for finding html tags and for specify which part of you want to return.
+
+
+
+
+ XPath Expression that is used to find related html node.
+
+
+
+
+ Html Attribute name
+
+
+
+
+ The methode of output
+
+
+
+
+ Specify Xpath to find related Html Node.
+
+
+
+
+
+ Specify Xpath to find related Html Node.
+
+
+ Specify you want the output include html text too.
+
+
+
+ Specify Xpath and Attribute to find related Html Node and its attribute value.
+
+
+
+
+
+
+ Tagging a property with this Attribute make Encapsulator to ignore that property if it causes an error.
+
+
+
+
+ Exception that often occures when there is no way to bind a XPath to a Html Tag.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exception that often occures when there is no way to bind a XPath to a HtmlTag Attribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exception that often occures when there is no property that assigned with XPath Property in Class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a combined list and collection of HTML nodes.
+
+
+
+
+ Initialize the HtmlNodeCollection with the base parent node
+
+ The base node of the collection
+
+
+ Gets the parent node associated to the collection.
+
+
+
+ Gets a given node from the list.
+
+
+
+
+ Get node with tag name
+
+
+
+
+
+
+ Gets the number of elements actually contained in the list.
+
+
+
+
+ Is collection read only
+
+
+
+
+ Gets the node at the specified index.
+
+
+
+
+ Add node to the collection
+
+
+
+
+
+ Add node to the collection
+
+
+
+
+
+
+ Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode
+
+
+
+
+ Gets existence of node in collection
+
+
+
+
+
+
+ Copy collection to array
+
+
+
+
+
+
+ Get Enumerator
+
+
+
+
+
+ Get Explicit Enumerator
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Insert node at index
+
+
+
+
+
+
+ Remove node
+
+
+
+
+
+
+ Remove at index
+
+
+
+
+
+ Get first instance of node in supplied collection
+
+
+
+
+
+
+
+ Add node to the end of the collection
+
+
+
+
+
+ Get first instance of node with name
+
+
+
+
+
+
+ Get index of node
+
+
+
+
+
+
+ Add node to the beginning of the collection
+
+
+
+
+
+ Remove node at index
+
+
+
+
+
+
+ Replace node at index
+
+
+
+
+
+
+ Get all node descended from this collection
+
+
+
+
+
+ Get all node descended from this collection with matching name
+
+
+
+
+
+ Gets all first generation elements in collection
+
+
+
+
+
+ Gets all first generation elements matching name
+
+
+
+
+
+
+ All first generation nodes in collection
+
+
+
+
+
+ Represents an HTML navigator on an HTML document seen as a data store.
+
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the stream.
+ The minimum buffer size.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Initializes a new instance of the HtmlNavigator and loads an HTML document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Gets the base URI for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the current HTML document.
+
+
+
+
+ Gets the current HTML node.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node has child nodes.
+
+
+
+
+ Gets a value indicating whether the current node is an empty element.
+
+
+
+
+ Gets the name of the current HTML node without the namespace prefix.
+
+
+
+
+ Gets the qualified name of the current node.
+
+
+
+
+ Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the associated with this implementation.
+
+
+
+
+ Gets the type of the current node.
+
+
+
+
+ Gets the prefix associated with the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Gets the text value of the current node.
+
+
+
+
+ Gets the xml:lang scope for the current node.
+ Always returns string.Empty in the case of HtmlNavigator implementation.
+
+
+
+
+ Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator.
+
+ A new HtmlNavigator object positioned at the same node as the original HtmlNavigator.
+
+
+
+ Gets the value of the HTML attribute with the specified LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node.
+
+
+
+ Returns the value of the namespace node corresponding to the specified local name.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns string.Empty for the HtmlNavigator implementation.
+
+
+
+ Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator that you want to compare against.
+ true if the two navigators have the same position, otherwise, false.
+
+
+
+ Moves to the same position as the specified HtmlNavigator.
+
+ The HtmlNavigator positioned on the node that you want to move to.
+ true if successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the HTML attribute with matching LocalName and NamespaceURI.
+
+ The local name of the HTML attribute.
+ The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation.
+ true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change.
+
+
+
+ Moves to the first sibling of the current node.
+
+ true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the first HTML attribute.
+
+ true if the navigator is successful moving to the first HTML attribute, otherwise, false.
+
+
+
+ Moves to the first child of the current node.
+
+ true if there is a first child node, otherwise false.
+
+
+
+ Moves the XPathNavigator to the first namespace node of the current element.
+ Always returns false for the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the node that has an attribute of type ID whose value matches the specified string.
+
+ A string representing the ID value of the node to which you want to move. This argument does not need to be atomized.
+ true if the move was successful, otherwise false. If false, the position of the navigator is unchanged.
+
+
+
+ Moves the XPathNavigator to the namespace node with the specified local name.
+ Always returns false for the HtmlNavigator implementation.
+
+ The local name of the namespace node.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the next sibling of the current node.
+
+ true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged.
+
+
+
+ Moves to the next HTML attribute.
+
+
+
+
+
+ Moves the XPathNavigator to the next namespace node.
+ Always returns falsefor the HtmlNavigator implementation.
+
+ An XPathNamespaceScope value describing the namespace scope.
+ Always returns false for the HtmlNavigator implementation.
+
+
+
+ Moves to the parent of the current node.
+
+ true if there is a parent node, otherwise false.
+
+
+
+ Moves to the previous sibling of the current node.
+
+ true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node.
+
+
+
+ Moves to the root node to which the current node belongs.
+
+
+
+
+ Represents the type of a node.
+
+
+
+
+ The root of a document.
+
+
+
+
+ An HTML element.
+
+
+
+
+ An HTML comment.
+
+
+
+
+ A text node is always the child of an element or a document node.
+
+
+
+
+ Represents a parsing error found during document parsing.
+
+
+
+
+ Gets the type of error.
+
+
+
+
+ Gets the line number of this error in the document.
+
+
+
+
+ Gets the column number of this error in the document.
+
+
+
+
+ Gets a description for the error.
+
+
+
+
+ Gets the the full text of the line containing the error.
+
+
+
+
+ Gets the absolute stream position of this error in the document, relative to the start of the document.
+
+
+
+
+ Represents the type of parsing error.
+
+
+
+
+ A tag was not closed.
+
+
+
+
+ A tag was not opened.
+
+
+
+
+ There is a charset mismatch between stream and declared (META) encoding.
+
+
+
+
+ An end tag was not required.
+
+
+
+
+ An end tag is invalid at this position.
+
+
+
+
+ Represents an HTML text node.
+
+
+
+
+ Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml.
+
+
+
+
+ Gets or Sets the object and its content in HTML.
+
+
+
+
+ Gets or Sets the text of the node.
+
+
+
+
+ A utility class to get HTML document from HTTP.
+
+
+
+
+ Represents the method that will handle the PostResponse event.
+
+
+
+
+ Represents the method that will handle the PreHandleDocument event.
+
+
+
+
+ Represents the method that will handle the PreRequest event.
+
+
+
+
+ Occurs after an HTTP request has been executed.
+
+
+
+
+ Occurs before an HTML document is handled.
+
+
+
+
+ Occurs before an HTTP request is executed.
+
+
+
+
+ Gets or Sets a value indicating if document encoding must be automatically detected.
+
+
+
+
+ Gets or sets the Encoding used to override the response stream from any web request
+
+
+
+
+ Gets or Sets a value indicating whether to get document only from the cache.
+ If this is set to true and document is not found in the cache, nothing will be loaded.
+
+
+
+
+ Gets or Sets a value indicating whether to get document from the cache if exists, otherwise from the web
+ A value indicating whether to get document from the cache if exists, otherwise from the web
+
+
+
+
+ Gets or Sets the cache path. If null, no caching mechanism will be used.
+
+
+
+
+ Gets a value indicating if the last document was retrieved from the cache.
+
+
+
+
+ Gets the last request duration in milliseconds.
+
+
+
+
+ Gets the URI of the Internet resource that actually responded to the request.
+
+
+
+
+ Gets the last request status.
+
+
+
+
+ Gets or Sets the size of the buffer used for memory operations.
+
+
+
+
+ Gets or Sets a value indicating if cookies will be stored.
+
+
+
+ Gets or sets a value indicating whether redirect should be captured instead of the current location.
+ True if capture redirect, false if not.
+
+
+
+ Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest
+
+
+
+
+ Gets or Sets a value indicating whether the caching mechanisms should be used or not.
+
+
+
+
+ Gets the MIME content type for a given path extension.
+
+ The input path extension.
+ The default content type to return if any error occurs.
+ The path extension's MIME content type.
+
+
+
+ Gets the path extension for a given MIME content type.
+
+ The input MIME content type.
+ The default path extension to return if any error occurs.
+ The MIME content type's path extension.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The requested type.
+ An newly created instance.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+ Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The location of the file where you want to save the document.
+
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+
+
+
+
+ Gets the cache file path for a specified url.
+
+ The url fo which to retrieve the cache path. May not be null.
+ The cache file path.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Gets an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ Host to use for Proxy
+ Port the Proxy is on
+ User Id for Authentication
+ Password for Authentication
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource.
+
+ The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp").
+ The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND.
+ Proxy to use with this request
+ Credentials to use when authenticating
+ A new HTML document.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The XmlTextWriter to which you want to save to.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ An newly created instance.
+
+
+
+ Creates an instance of the given type from the specified Internet resource.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An containing the namespace-qualified arguments used as input to the transform.
+ The requested type.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+ An newly created instance.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp".
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+
+
+
+ Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation.
+
+ The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null.
+ The URL that specifies the XSLT stylesheet to load.
+ An XsltArgumentList containing the namespace-qualified arguments used as input to the transform.
+ The XmlTextWriter to which you want to save.
+ A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes.
+
+
+
+ Represents an exception thrown by the HtmlWeb utility class.
+
+
+
+
+ Creates an instance of the HtmlWebException.
+
+ The exception's message.
+
+
+
+ Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents.
+
+
+
+
+ Gets or sets the token representing code end.
+
+
+
+
+ Gets or sets the token representing code start.
+
+
+
+
+ Gets or sets the token representing code directive.
+
+
+
+
+ Gets or sets the token representing response write directive.
+
+
+
+
+ Creates a mixed code document instance.
+
+
+
+
+ Gets the code represented by the mixed code document seen as a template.
+
+
+
+
+ Gets the list of code fragments in the document.
+
+
+
+
+ Gets the list of all fragments in the document.
+
+
+
+
+ Gets the encoding of the stream used to read the document.
+
+
+
+
+ Gets the list of text fragments in the document.
+
+
+
+
+ Create a code fragment instances.
+
+ The newly created code fragment instance.
+
+
+
+ Create a text fragment instances.
+
+ The newly created text fragment instance.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a stream.
+
+ The input stream.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+
+
+
+ Loads a mixed code document from a file.
+
+ The complete file path to be read.
+ The character encoding to use.
+ Indicates whether to look for byte order marks at the beginning of the file.
+ The minimum buffer size.
+
+
+
+ Loads the mixed code document from the specified TextReader.
+
+ The TextReader used to feed the HTML data into the document.
+
+
+
+ Loads a mixed document from a text
+
+ The text to load.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+
+
+
+ Saves the mixed document to the specified stream.
+
+ The stream to which you want to save.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+
+
+
+ Saves the mixed document to the specified file.
+
+ The location of the file where you want to save the document.
+ The character encoding to use.
+
+
+
+ Saves the mixed document to the specified StreamWriter.
+
+ The StreamWriter to which you want to save.
+
+
+
+ Saves the mixed document to the specified TextWriter.
+
+ The TextWriter to which you want to save.
+
+
+
+ Represents a fragment of code in a mixed code document.
+
+
+
+
+ Gets the fragment code text.
+
+
+
+
+ Represents a base class for fragments in a mixed code document.
+
+
+
+
+ Gets the fragement text.
+
+
+
+
+ Gets the type of fragment.
+
+
+
+
+ Gets the line number of the fragment.
+
+
+
+
+ Gets the line position (column) of the fragment.
+
+
+
+
+ Gets the fragment position in the document's stream.
+
+
+
+
+ Represents a list of mixed code fragments.
+
+
+
+
+ Gets the Document
+
+
+
+
+ Gets the number of fragments contained in the list.
+
+
+
+
+ Gets a fragment from the list using its index.
+
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Appends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Gets an enumerator that can iterate through the fragment list.
+
+
+
+
+ Prepends a fragment to the list of fragments.
+
+ The fragment to append. May not be null.
+
+
+
+ Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised.
+
+ The fragment to remove. May not be null.
+
+
+
+ Remove all fragments from the list.
+
+
+
+
+ Remove a fragment from the list of fragments, using its index in the list.
+
+ The index of the fragment to remove.
+
+
+
+ Represents a fragment enumerator.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Gets the current element in the collection.
+
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+ true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.
+
+
+
+ Sets the enumerator to its initial position, which is before the first element in the collection.
+
+
+
+
+ Represents the type of fragment in a mixed code document.
+
+
+
+
+ The fragment contains code.
+
+
+
+
+ The fragment contains text.
+
+
+
+
+ Represents a fragment of text in a mixed code document.
+
+
+
+
+ Gets the fragment text.
+
+
消息客户端类
@@ -3762,6 +6953,346 @@
释放资源
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 连接数据库
+
+ 数据库连接字符串
+
+
+
+
+ 连接数据库
+
+ 数据源
+ 数据库名称
+ 用户id
+ 用户密码
+
+
+
+
+
+
+
+
+ 连接数据库
+
+
+
+
+
+ 关闭数据库
+
+
+
+
+
+ 运行SQL命令
+
+ SQL语句
+ SQL命令参数
+ 运行失败,则返回-1,否则返回影响的行数
+
+
+
+ 运行SQL命令
+
+ SQL语句
+ 运行失败,则返回-1,否则返回影响的行数
+
+
+
+ 运行SQL命令,并返回结果
+
+ SQL语句
+ SQL命令参数
+ 运行失败,则返回null,否则返回以数组显示的字符串
+
+
+
+ 运行SQL命令,并返回结果
+
+ SQL语句
+ SQL命令参数
+ 数组第一个默认的值
+ 运行失败,则返回null,否则返回以数组显示的字符串
+
+
+
+ 运行SQL命令,并返回结果
+
+ SQL语句
+ 运行失败,则返回null,否则返回以数组显示的字符串
+
+
+
+ 运行SQL命令,并返回结果
+
+ SQL语句
+ 数组第一个默认的值
+ 运行失败,则返回DefFristValue,否则返回以数组显示的字符串
+
+
+
+ 清空指定表的所有数据
+
+ 表名
+ 运行失败,则返回-1,否则返回影响的行数
+
+
+
+ 判断指定值是否存在
+
+ 表名
+ 指定值所属字段
+ 指定值
+ 当前id,如果是新增记录,请填写-1
+
+
+
+
+ 判断SQL语句是否有结果返回
+
+ SQL语句
+ SQL命令参数
+ 运行失败,则返回-1;存在结果,返回1;不存在结果,返回0
+
+
+
+ 判断SQL语句是否有结果返回
+
+ SQL语句
+ 运行失败,则返回-1;存在结果,返回1;不存在结果,返回0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
SQL字段类型
@@ -3833,6 +7364,11 @@
清理使用资源
+
+
+ 清理使用资源
+
+
操作参数列表
@@ -4102,6 +7638,601 @@
+
+
+ Http连接操作帮助类
+
+
+
+
+
+
+
+
+
+
+
+ 根据相传入的数据,得到相应页面数据
+
+ 参数类对象
+ 返回HttpResult类型
+
+
+
+ 获取数据的并解析的方法
+
+
+
+
+
+
+ 设置编码
+
+ HttpItem
+ HttpResult
+ byte[]
+
+
+
+ 提取网页Byte
+
+
+
+
+
+ 为请求准备参数
+
+ 参数列表
+
+
+
+ 设置证书
+
+
+
+
+
+ 设置多个证书
+
+
+
+
+
+ 设置Cookie
+
+ Http参数
+
+
+
+ 设置Post数据
+
+ Http参数
+
+
+
+ 设置代理
+
+ 参数对象
+
+
+
+ 回调验证证书问题
+
+ 流对象
+ 证书
+ X509Chain
+ SslPolicyErrors
+ bool
+
+
+
+ 通过设置这个属性,可以在发出连接的时候绑定客户端发出连接所使用的IP地址。
+
+
+
+
+
+
+
+
+ Http请求参考类
+
+
+
+
+ 请求URL必须填写
+
+
+
+
+ 请求方式默认为GET方式,当为POST方式时必须设置Postdata的值
+
+
+
+
+ 默认请求超时时间
+
+
+
+
+ 默认写入Post数据超时间
+
+
+
+
+ 设置Host的标头信息
+
+
+
+
+ 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接默认为true。
+
+
+
+
+ 请求标头值 默认为text/html, application/xhtml+xml, */*
+
+
+
+
+ 请求返回类型默认 text/html
+
+
+
+
+ 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
+
+
+
+
+ 返回数据编码默认为NUll,可以自动识别,一般为utf-8,gbk,gb2312
+
+
+
+
+ Post的数据类型
+
+
+
+
+ Post请求时要发送的字符串Post数据
+
+
+
+
+ Post请求时要发送的Byte类型的Post数据
+
+
+
+
+ Cookie对象集合
+
+
+
+
+ 请求时的Cookie
+
+
+
+
+ 来源地址,上次访问地址
+
+
+
+
+ 证书绝对路径
+
+
+
+
+ 设置代理对象,不想使用IE默认配置就设置为Null,而且不要设置ProxyIp
+
+
+
+
+ 是否设置为全文小写,默认为不转化
+
+
+
+
+ 支持跳转页面,查询结果将是跳转后的页面,默认是不跳转
+
+
+
+
+ 最大连接数
+
+
+
+
+ 代理Proxy 服务器用户名
+
+
+
+
+ 代理 服务器密码
+
+
+
+
+ 代理 服务IP,如果要使用IE代理就设置为ieproxy
+
+
+
+
+ 设置返回类型String和Byte
+
+
+
+
+ header对象
+
+
+
+
+ 获取或设置用于请求的 HTTP 版本。返回结果:用于请求的 HTTP 版本。默认为 System.Net.HttpVersion.Version11。
+
+
+
+
+ 获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。如果 POST 请求需要 100-Continue 响应,则为 true;否则为 false。默认值为 true。
+
+
+
+
+ 设置509证书集合
+
+
+
+
+ 设置或获取Post参数编码,默认的为Default编码
+
+
+
+
+ Cookie返回类型,默认的是只返回字符串类型
+
+
+
+
+ 获取或设置请求的身份验证信息。
+
+
+
+
+ 设置请求将跟随的重定向的最大数目
+
+
+
+
+ 获取和设置IfModifiedSince,默认为当前日期和时间
+
+
+
+
+ 设置本地的出口ip和端口
+ ]
+
+ item.IPEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"),80);
+
+
+
+
+ Http返回参数类
+
+
+
+
+ Http请求返回的Cookie
+
+
+
+
+ Cookie对象集合
+
+
+
+
+ 返回的String类型数据 只有ResultType.String时才返回数据,其它情况为空
+
+
+
+
+ 返回的Byte数组 只有ResultType.Byte时才返回数据,其它情况为空
+
+
+
+
+ header对象
+
+
+
+
+ 返回状态说明
+
+
+
+
+ 返回状态码,默认为OK
+
+
+
+
+ 最后访问的URl
+
+
+
+
+ 获取重定向的URl
+
+
+
+
+ 返回类型
+
+
+
+
+ 表示只返回字符串 只有Html有数据
+
+
+
+
+ 表示返回字符串和字节流 ResultByte和Html都有数据返回
+
+
+
+
+ Post的数据格式默认为string
+
+
+
+
+ 字符串类型,这时编码Encoding可不设置
+
+
+
+
+ Byte类型,需要设置PostdataByte参数的值编码Encoding可设置为空
+
+
+
+
+ 传文件,Postdata必须设置为文件的绝对路径,必须设置Encoding的值
+
+
+
+
+ Cookie返回类型
+
+
+
+
+ 只返回字符串类型的Cookie
+
+
+
+
+ CookieCollection格式的Cookie集合同时也返回String类型的cookie
+
+
+
+
+
+
+
+
+
+ 以post方式获取网页源码
+
+
+
+
+
+
+
+
+ 以post方式提交json内容
+
+
+
+
+
+
+
+
+ 以post方式提交json内容
+
+
+
+
+
+
+
+ 以post方式获取网页源码
+
+
+
+
+
+
+
+
+
+ 以post方式获取网页源码
+
+
+
+
+
+
+
+ 获取网址对应的文件大小
+
+
+
+
+
+
+
+
+
+
+
+ 获取网页源码
+
+
+
+
+
+
+
+ 获取网页源码
+
+
+
+
+
+
+
+
+ 获取网页源码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 将相对网址转换成绝对网址
+
+ 相对网址
+ 当前页面地址
+ 转换后的绝对网址
+
+
+
+
+
+
+
+
+
+
+
+
+
+ url解密
+
+
+
+
+
+
+
+ url解密,按UTF8方式解密
+
+
+
+
+
+
+ Url加密
+
+
+
+
+
+
+
+ Url加密,按UTF8方式加密
+
+
+
+
+
+
+ 解密
+
+
+
+
+
+
+ 加密
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ url加密,Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Html解码,将html里未转义成功的重新转义。
+
+
+
+
AES加密解密类
@@ -4178,6 +8309,25 @@
MD5和SHA1操作类
+
+
+ 计算文件MD5。
+ 通过MD5CryptoServiceProvider类中的ComputeHash方法直接传入一个FileStream类实现计算MD5
+ 操作简单,代码少,调用即可
+
+ 文件地址
+ MD5Hash
+
+
+
+ 计算文件MD5。
+ 通过HashAlgorithm的TransformBlock方法对流进行叠加运算获得MD5
+ 实现稍微复杂,但可使用与传输文件或接收文件时同步计算MD5值
+ 可自定义缓冲区大小,计算速度较快
+
+ 文件地址
+ MD5Hash
+
获取MD5
@@ -5040,6 +9190,11 @@
+
+
+ 获取热键数量
+
+
删除热键
@@ -5052,6 +9207,11 @@
删除所有热键
+
+
+ 删除所有热键
+
+
热键事件
diff --git a/Bin/Debug/VSoft/MyDb_SQLite.dll b/Bin/Debug/VSoft/MyDb_SQLite.dll
index 0469281..574af17 100644
Binary files a/Bin/Debug/VSoft/MyDb_SQLite.dll and b/Bin/Debug/VSoft/MyDb_SQLite.dll differ
diff --git a/Bin/Debug/VSoft/SysDb/SysConfig.dat b/Bin/Debug/VSoft/SysDb/SysConfig.dat
index 849a528..dae1764 100644
Binary files a/Bin/Debug/VSoft/SysDb/SysConfig.dat and b/Bin/Debug/VSoft/SysDb/SysConfig.dat differ
diff --git a/Bin/Debug/VSoft/UserDb/SoftLogos/20210907135620.exe b/Bin/Debug/VSoft/UserDb/SoftLogos/20210907135620.exe
new file mode 100644
index 0000000..1cadce5
Binary files /dev/null and b/Bin/Debug/VSoft/UserDb/SoftLogos/20210907135620.exe differ
diff --git a/Bin/Debug/VSoft/UserDb/Softs.dat b/Bin/Debug/VSoft/UserDb/Softs.dat
index 83302a5..be644c6 100644
Binary files a/Bin/Debug/VSoft/UserDb/Softs.dat and b/Bin/Debug/VSoft/UserDb/Softs.dat differ
diff --git a/Bin/Debug/VSoft/UserDb/Win.dat b/Bin/Debug/VSoft/UserDb/Win.dat
index d545a00..2095a3d 100644
--- a/Bin/Debug/VSoft/UserDb/Win.dat
+++ b/Bin/Debug/VSoft/UserDb/Win.dat
@@ -1,5 +1,5 @@
[VSoft]
-hwnd=1775930
+hwnd=1446336
width=745
height=543
[VSoft_Test]
diff --git a/Bin/Debug/VSoft/VSoft.dll b/Bin/Debug/VSoft/VSoft.dll
index 8cb65b0..995e93c 100644
Binary files a/Bin/Debug/VSoft/VSoft.dll and b/Bin/Debug/VSoft/VSoft.dll differ
diff --git a/Bin/Debug/VSoft/VSoftBox.exe b/Bin/Debug/VSoft/VSoftBox.exe
index 87ebde1..1e9baed 100644
Binary files a/Bin/Debug/VSoft/VSoftBox.exe and b/Bin/Debug/VSoft/VSoftBox.exe differ
diff --git a/Bin/Debug/VSoft/cUpdate.dat b/Bin/Debug/VSoft/cUpdate.dat
index 45d2ada..5664efc 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 c476fc0..2e17234 100644
Binary files a/Bin/Debug/VSoft/ryControls.dll and b/Bin/Debug/VSoft/ryControls.dll differ
diff --git a/Bin/Debug/VSoft/ryControls.xml b/Bin/Debug/VSoft/ryControls.xml
index cea5fe2..dfc0ba6 100644
--- a/Bin/Debug/VSoft/ryControls.xml
+++ b/Bin/Debug/VSoft/ryControls.xml
@@ -439,6 +439,12 @@
RichTextBox
+
+
+
+
+
+
@@ -4513,6 +4519,16 @@
+
+
+ 设置圆角半径
+
+
+
+
+ Tab文字左边距离
+
+
@@ -4546,6 +4562,12 @@
+
+
+ 获取所有选项卡合起来的宽度
+
+
+
@@ -26898,12 +26920,126 @@
The index of the matched row, or -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
初始化的时候给个alpha值,这样在灰图片的时候可以半透明
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
使图片单色化
@@ -26911,6 +27047,11 @@
+
+
+
+
+
自定义
@@ -26938,6 +27079,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
从文件中获取Image对象
@@ -26947,6 +27108,7 @@
是否将文件读入内存操作,如果为false,将直接返回Image.FromFile,在此情况下,
必须手动释放Image对象,否则文件将一直处于占用状态,如果为true,则在内存中拷贝副本
+
@@ -26983,8 +27145,7 @@
在需要的情况下,此方法创建一个新对象,进行绘制
-
-
+
@@ -27040,11 +27201,27 @@
获取一个圆角矩形
-
-
+
角度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
返回一个表示箭头的Path
@@ -27065,7 +27242,7 @@
文件不存在
-
+
@@ -27079,6 +27256,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
验证失败中显示错误信息时用的标题
@@ -27102,6 +27294,11 @@
在基础验证都通过后,才会调用自定义验证方法(如果有)
+
+
+
+
+
是否支持 Windows Vista 以上的玻璃效果
@@ -27117,6 +27314,320 @@
获取应用程序主窗体
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 这个缓存是全局的
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
所对应的绑定数据类型
@@ -27130,6 +27641,44 @@
通常取先添加的那个
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
如果输入的字符串包含 "${...}" 这样的格式,则认为是指代资源文件中的一个字符串资源
@@ -27137,6 +27686,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
获取授予该组件的许可证密钥
@@ -27164,6 +27755,11 @@
强类型资源类,用于查找本地化字符串等。
+
+
+
+
+
返回此类使用的缓存 ResourceManager 实例。
@@ -27220,6 +27816,11 @@
Returns a System.String that represents the current System.Object.
+
+
+
+
+
返回此类使用的缓存 ResourceManager 实例。
@@ -27271,6 +27872,11 @@
Returns true if the current language is the default language.
+
+
+
+
+
Call GetLanguages() to retrieve a list of possible languages that can be used to set this property.
@@ -27282,6 +27888,13 @@
Gets a list of available languages defined in this assembly.
+
+
+
+
+
+
+
如果输入的字符串包含 "${...}" 这样的格式,则认为是指代资源文件中的一个字符串资源
@@ -27643,11 +28256,89 @@
the contents of this method with the code editor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
白色到灰色的垂直渐变
+
+
+
+
+
+
+
+ This method handles the RenderToolStripBorder event.
+
+
+
+
+
+
+
+
+
A ToolstripManager rendering class with advanced control features
@@ -27658,6 +28349,21 @@
Creates a new EasyRender class for modifications
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Gets the manager to edit and change the appearance of the Toolstrip
@@ -27725,6 +28431,7 @@
Gets a color array based on the state of a normal button
The button to check the state of
+
@@ -27732,6 +28439,7 @@
Gets a color array based on the state of a split-button
The button to check the state of
+
@@ -27739,6 +28447,7 @@
Gets a color array based on the state of a menu-item
The button to check the state of
+
@@ -27746,6 +28455,7 @@
Gets a color array based on the state of a drop-down button
The button to check the state of
+
@@ -27829,6 +28539,7 @@
The Graphics object to draw onto
The path to draw along
+
The color of the gradient at the top
The color of the gradient at the bottom
The angle which the gradient is drawn (null defaults to 90f)
@@ -27888,6 +28599,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Applies any and all changes made to the Renderer
@@ -27972,6 +28749,11 @@
Sets the blending for both border and background to their defaults
+
+
+
+
+
Creates a new IToolstripControls class for customization
@@ -28028,6 +28810,11 @@
The IToolstripControls to import the settings from
+
+
+
+
+
Creates a new IButton class for customization
@@ -28122,6 +28909,11 @@
Sets the blending for both border and background to their defaults
+
+
+
+
+
Creates a new IButton class for customization
@@ -28206,6 +28998,11 @@
Sets the blending for both border and background to their defaults
+
+
+
+
+
Creates a new ISplitButton class for customization
@@ -28304,6 +29101,11 @@
Sets the blending for both border and background to their defaults
+
+
+
+
+
Creates a new IPanel class for customization
@@ -28344,6 +29146,11 @@
Gets or sets a mode to render the background in
+
+
+
+
+
Creates a new IStatusBar class for customization
@@ -28522,6 +29329,21 @@
Defines when to show an arrow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines when to use a blend property
@@ -28577,16 +29399,71 @@
Defines a specific type of button to search by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines a method for background or object inheritence
+
+
+
+
+
+
+
+
+
+
Defines a method of rendering
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
主菜单
@@ -28607,6 +29484,16 @@
白色至银白色渐变
+
+
+
+
+
+
+
+
+
+
当前工作区窗体所关联并激活的工具栏
@@ -28637,6 +29524,11 @@
鼠标滑过
+
+
+ 控件的高度根据内容自动调整,忽略外部设置
+
+
边框宽度
@@ -28652,22 +29544,47 @@
最大显示的项数
+
+
+
+
+
是否显示说明字段,此属性不影响弹出面板是否显示
弹出面板是否显示由DescriptionMember是否设置决定
+
+
+
+
+
+
+
+
+
+
下拉列表的布局模式
+
+
+
+
+
是否允许空
+
+
+
+
+
测量当前控件应该的高度
@@ -28702,16 +29619,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
当前热点项生改变
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
通过外能事件获取用于绘制项的文本
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
标题
@@ -28722,6 +29759,23 @@
验证失败时是否需要高亮显示(改变背景色)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
排序箭头开始颜色
@@ -28732,6 +29786,46 @@
排序箭头开始颜色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
控件的背景画布颜色
@@ -28744,11 +29838,70 @@
控件背景色
+
+
+
+
+
+
+
+
+
+
边框颜色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Represents the visual state of an image list view item.
@@ -28774,6 +29927,11 @@
鼠标滑过
+
+
+
+
+
The item is not visible.
@@ -28809,11 +29967,86 @@
双击项事件参数
+
+
+
+
+
+
+
+
+
+
+
项被删除事件参数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
为项绘制带有描述信息的渲染器
@@ -28825,6 +30058,17 @@
在第一次绘制时,测量文本的高度
+
+
+
+
+
+
+
+
+ 默认布局引擎,以类似微软ListView的方式按行排列项
+
+
框选的最短开始长度
@@ -28855,7 +30099,7 @@
内框offset,内框offset是绝对相对于滚动条的
-
+
整个可显示项的边界的offset,包括上下padding部分
@@ -28871,6 +30115,11 @@
当前所能显示的最大行数
+
+
+
+
+
Gets whether the shift key is down.
@@ -28881,6 +30130,26 @@
Gets whether the control key is down.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
没有任何项
@@ -28920,6 +30189,35 @@
项周围的边距
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
更新整个布局引擎的状态
@@ -28939,12 +30237,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
获取当前所有可见项
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Calculates the maximum number of rows and columns
@@ -28989,6 +30343,40 @@
默认渲染器,不绘制项的实际内容,但是绘制DEBUG信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
用于子类重写时删除相应的缓存
@@ -29007,7 +30395,6 @@
绘制最终的前景
-
@@ -29022,6 +30409,7 @@
+
@@ -29029,8 +30417,6 @@
-
-
@@ -29076,6 +30462,26 @@
在第一次绘制时,测量文本的高度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
项的背景色
@@ -29106,16 +30512,31 @@
当控件具有焦点时选定项的背景色
+
+
+
+
+
控件失去焦点时选定项的背景色
+
+
+
+
+
热点项的背景色
+
+
+
+
+
图像内边框颜色
@@ -29126,6 +30547,11 @@
图像外边框颜色
+
+
+
+
+
Creates a control with a border.
@@ -29136,6 +30562,11 @@
Specifies that the control has a border with a sunken edge.
+
+
+
+
+
是否需要在调用 ResumeLayout 时重绘
@@ -29176,6 +30607,16 @@
当前鼠标经过的项
+
+
+
+
+
+
+
+
+
+
配色方案
@@ -29186,11 +30627,21 @@
当前布局中项的高度
+
+
+
+
+
是否没有任何项
+
+
+
+
+
获取当前具有输入焦点的项
@@ -29201,6 +30652,11 @@
默认的用于呈现为项中文本的Property
+
+
+
+
+
更改了选择的项
@@ -29223,6 +30679,12 @@
+
+
+
+
+
+
设置扩展属性供特定LayoutEngine使用
@@ -29232,16 +30694,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
恢复正常的布局逻辑。
+
+
+
+
+
+
临时挂起控件的布局逻辑。
+
+
+
+
+
获取当前选中项所绑定的对象
@@ -29268,11 +30755,107 @@
取消所有项的选择
+
+
+
+
+
+
+
+
+
+
+
获取创建控件句柄时所需要的创建参数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
更改了选择的项
@@ -29557,16 +31140,159 @@
是否点击了项
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
该项当前的选中状态
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
所绑定的对象
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
将指定的事件移动到(紧邻)另一个事件之前
@@ -29581,6 +31307,394 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Modify a WinForms TreeView control to use the new Explorer style theme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WM_COPYDATA消息所要求的数据结构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
通过窗口的标题来查找窗口的句柄
@@ -29599,6 +31713,83 @@
+
+
+ 还原
+
+
+
+
+ 移动
+
+
+
+
+ 大小
+
+
+
+
+ 最小化
+
+
+
+
+ 最大化
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
发送消息,只能传递一个自定义的消息ID和消息字符串,想传一个结构,但没成功
@@ -29614,6 +31805,11 @@
System.Windows.Forms.Message m
接收到的消息字符串
+
+
+
+
+
最大圆角半径
@@ -29629,7 +31825,7 @@
绘制一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 画笔
矩形左上角X坐标
矩形左上角Y坐标
矩形右下角X坐标
@@ -29641,7 +31837,7 @@
绘制一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 画笔
要绘制的矩形对象
圆角的半径长度
@@ -29650,7 +31846,7 @@
绘制一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 画笔
要绘制的矩形对象
@@ -29658,7 +31854,7 @@
填充一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 笔刷
矩形左上角X坐标
矩形左上角Y坐标
矩形右下角X坐标
@@ -29670,7 +31866,7 @@
填充一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 笔刷
要填充的矩形
填充区域针对矩形的缩进距离
圆角的半径长度
@@ -29680,7 +31876,7 @@
填充一个圆角矩形.
当前屏幕的图形对象
- 矩形线条的颜色
+ 笔刷
要填充的矩形
diff --git a/Bin/Debug/VSoft/ryUpdate.dll b/Bin/Debug/VSoft/ryUpdate.dll
index 48d8f7d..0360862 100644
Binary files a/Bin/Debug/VSoft/ryUpdate.dll and b/Bin/Debug/VSoft/ryUpdate.dll differ
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ad9c507..4cf34be 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
-### 2021-07-05更新
+### 2021-09-07更新
+------
+#### VSoft V1.0.2109.0701
+- *.[新增]新增支持设置软件全局快捷键。
+
+### 2021-07-05更新
------
#### VSoft V1.0.2107.0501
- *.[新增]新增适配原生64位系统。
diff --git a/Source/.vs/VSoft/v16/.suo b/Source/.vs/VSoft/v16/.suo
index 2573ec9..712dfff 100644
Binary files a/Source/.vs/VSoft/v16/.suo and b/Source/.vs/VSoft/v16/.suo differ
diff --git a/Source/.vs/VSoft/v17/.suo b/Source/.vs/VSoft/v17/.suo
new file mode 100644
index 0000000..c6ff6a1
Binary files /dev/null and b/Source/.vs/VSoft/v17/.suo differ
diff --git a/Source/DyLine/DyLine.csproj b/Source/DyLine/DyLine.csproj
index 838a84f..58f5c2f 100644
--- a/Source/DyLine/DyLine.csproj
+++ b/Source/DyLine/DyLine.csproj
@@ -8,19 +8,21 @@
WinExe
DyLine
DyLine
- v4.0
+ v4.5.2
512
true
+
- x86
+ AnyCPU
true
full
false
..\..\Bin\Debug\VSoft\
- DEBUG;TRACE
+ DEBUG;TRACE;DY
prompt
4
+ false
AnyCPU
@@ -30,6 +32,7 @@
TRACE
prompt
4
+ false
@@ -45,18 +48,9 @@
-
- Form
-
-
- Form1.cs
-
-
- Form1.cs
-
ResXFileCodeGenerator
Resources.Designer.cs
@@ -65,7 +59,9 @@
True
Resources.resx
+ True
+
SettingsSingleFileGenerator
Settings.Designer.cs
diff --git a/Source/DyLine/Form1.Designer.cs b/Source/DyLine/Form1.Designer.cs
deleted file mode 100644
index cf9444f..0000000
--- a/Source/DyLine/Form1.Designer.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-namespace DyLine
-{
- partial class Form1
- {
- ///
- /// 必需的设计器变量。
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// 清理所有正在使用的资源。
- ///
- /// 如果应释放托管资源,为 true;否则为 false。
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows 窗体设计器生成的代码
-
- ///
- /// 设计器支持所需的方法 - 不要修改
- /// 使用代码编辑器修改此方法的内容。
- ///
- private void InitializeComponent()
- {
- this.SuspendLayout();
- //
- // Form1
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(251, 125);
- this.Name = "Form1";
- this.Text = "Form1";
- this.ResumeLayout(false);
-
- }
-
- #endregion
- }
-}
-
diff --git a/Source/DyLine/Form1.cs b/Source/DyLine/Form1.cs
deleted file mode 100644
index 842829d..0000000
--- a/Source/DyLine/Form1.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-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 DyLine
-{
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/Source/DyLine/Form1.resx b/Source/DyLine/Form1.resx
deleted file mode 100644
index 1af7de1..0000000
--- a/Source/DyLine/Form1.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
\ No newline at end of file
diff --git a/Source/DyLine/Properties/AssemblyInfo.cs b/Source/DyLine/Properties/AssemblyInfo.cs
index 4860344..4458562 100644
--- a/Source/DyLine/Properties/AssemblyInfo.cs
+++ b/Source/DyLine/Properties/AssemblyInfo.cs
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DyLine")]
-[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("2.0.0.0")]
+[assembly: AssemblyFileVersion("2.0.0.0")]
diff --git a/Source/DyLine/Properties/Resources.Designer.cs b/Source/DyLine/Properties/Resources.Designer.cs
index 047c1bd..38ae235 100644
--- a/Source/DyLine/Properties/Resources.Designer.cs
+++ b/Source/DyLine/Properties/Resources.Designer.cs
@@ -1,70 +1,63 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本: 4.0.30319.42000
-//
-// 对此文件的更改可能导致不正确的行为,如果
-// 重新生成代码,则所做更改将丢失。
-//
-//------------------------------------------------------------------------------
-
-
-namespace DyLine.Properties
-{
- ///
- /// 强类型资源类,用于查找本地化字符串等。
- ///
- // 此类是由 StronglyTypedResourceBuilder
- // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
- // (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
- }
-
- ///
- /// 返回此类使用的缓存 ResourceManager 实例。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DyLine.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// 重写当前线程的 CurrentUICulture 属性,对
- /// 使用此强类型资源类的所有资源查找执行重写。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
- return resourceCulture;
- }
- set
- {
- resourceCulture = value;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace DyLine.Properties {
+ using System;
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 返回此类使用的缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DyLine.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 重写当前线程的 CurrentUICulture 属性,对
+ /// 使用此强类型资源类的所有资源查找执行重写。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Source/DyLine/Properties/Settings.Designer.cs b/Source/DyLine/Properties/Settings.Designer.cs
index 7bfc212..492ba1f 100644
--- a/Source/DyLine/Properties/Settings.Designer.cs
+++ b/Source/DyLine/Properties/Settings.Designer.cs
@@ -1,29 +1,26 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-
-namespace DyLine.Properties
-{
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
- return defaultInstance;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace DyLine.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.2.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Source/DyLine/app.config b/Source/DyLine/app.config
new file mode 100644
index 0000000..9c72f14
--- /dev/null
+++ b/Source/DyLine/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Source/VSoftBox/Init.cs b/Source/VSoftBox/Init.cs
new file mode 100644
index 0000000..44de973
--- /dev/null
+++ b/Source/VSoftBox/Init.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using VSoft.Config;
+
+namespace VSoftBox
+{
+ class Init
+ {
+ static System.Threading.Mutex run;
+ public static void Show(string[] args)
+ {
+ Soft_Info.UserDataFolder = ryCommon.RyFiles.GetRealPath(Soft_Info.UserDataFolder);
+ run = new System.Threading.Mutex(true, Soft_Info.Soft_Id, out bool runone);
+ if (!runone) //已经运行了
+ {
+ ryCommon.Ini ini = new ryCommon.Ini(Soft_Info.UserDataFolder + "\\Win.dat");
+ ryControls.Win32.SendMessage((IntPtr)ini.ReadIni(Soft_Info.Soft_Id, "hwnd", 0), 17189, 100, 100);
+ }
+ else
+ {
+ Application.Run(new VSoft.FrmVSoft(args));
+ //Application.Run(new WindowsFormsApp2.Form1());
+ }
+ }
+ }
+}
diff --git a/Source/VSoftBox/Program.cs b/Source/VSoftBox/Program.cs
index f86c0c3..bd4cb0e 100644
--- a/Source/VSoftBox/Program.cs
+++ b/Source/VSoftBox/Program.cs
@@ -18,7 +18,6 @@ namespace VSoftBox
static string ProcessPath;
#endif
- static System.Threading.Mutex run;
///
/// 应用程序的主入口点。
///
@@ -31,22 +30,12 @@ namespace VSoftBox
{
ProcessPath = Application.StartupPath.Substring(0, Application.StartupPath.Length - sub_dir.Length);
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
+ Soft_Info.UserDataFolder = ProcessPath+"\\UserDb\\VSoft";
}
#endif
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
- Soft_Info.UserDataFolder = ryCommon.RyFiles.GetRealPath(Soft_Info.UserDataFolder);
- run = new System.Threading.Mutex(true, Soft_Info.Soft_Id, out bool runone);
- if (!runone) //已经运行了
- {
- ryCommon.Ini ini = new ryCommon.Ini(Soft_Info.UserDataFolder + "\\Win.dat");
- ryControls.Win32.SendMessage((IntPtr)ini.ReadIni(Soft_Info.Soft_Id, "hwnd", 0), 17189, 100, 100);
- }
- else
- {
- Application.Run(new VSoft.FrmVSoft(args));
- //Application.Run(new WindowsFormsApp2.Form1());
- }
+ Init.Show(args);
}
#if DY
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
diff --git a/Source/VSoftBox/Properties/AssemblyInfo.cs b/Source/VSoftBox/Properties/AssemblyInfo.cs
index 10974ad..f803835 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.2107.0501")]
-[assembly: AssemblyFileVersion("1.0.2107.0501")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.0.2109.0701")]
+[assembly: AssemblyFileVersion("1.0.2109.0701")]
\ No newline at end of file
diff --git a/Source/VSoftBox/VSoftBox.csproj b/Source/VSoftBox/VSoftBox.csproj
index da528c3..4c0f4b9 100644
--- a/Source/VSoftBox/VSoftBox.csproj
+++ b/Source/VSoftBox/VSoftBox.csproj
@@ -18,7 +18,7 @@
full
false
..\..\Bin\Debug\VSoft\
- TRACE;DEBUG
+ TRACE;DEBUG;DY
prompt
4
@@ -55,6 +55,7 @@
+
diff --git a/Source/VSoft_Dll/Config/Soft_Config.cs b/Source/VSoft_Dll/Config/Soft_Config.cs
index 48a5058..d5fbbb9 100644
--- a/Source/VSoft_Dll/Config/Soft_Config.cs
+++ b/Source/VSoft_Dll/Config/Soft_Config.cs
@@ -39,6 +39,13 @@ namespace VSoft.Config
/// 启动软件后隐藏自身
///
public static bool HideAfterRun = true;
+ ///
+ /// 当前软件加载的热键列表
+ ///
+ public static List HotKeyList = new List();
+ ///
+ /// 获取设置
+ ///
public static void LoadSetting()
{
ryCommon.Storage Stor = new Storage();
@@ -51,5 +58,69 @@ namespace VSoft.Config
ShowMainMouseKey = Stor.GetAttrValue("ShowMainMouseKey", 0);
//low_count = Stor.GetAttrValue("LowCount", 10);
}
+ ///
+ /// 设置热键到列表中
+ ///
+ ///
+ ///
+ ///
+ /// 返回热键在列表中的位置
+ public static int SetHotKeyList(string id,string name,string hotkey)
+ {
+ var index= HotKeyList.FindIndex(a => a.ID == id);
+ if(index!=-1)
+ {
+ HotKeyList[index].Name = name;
+ HotKeyList[index].HotKey = hotkey;
+ return index;
+ }
+ else
+ {
+ HotKeyList.Add(new HotKeyItem() { ID=id, Name=name, HotKey=hotkey });
+ return HotKeyList.Count - 1;
+ }
+ }
+ ///
+ /// 从列表中删除热键
+ ///
+ ///
+ /// 返回热键在原来列表中的位置
+ public static int RemoveHotKeyList(string id)
+ {
+ var index = HotKeyList.FindIndex(a => a.ID == id);
+ if (index != -1)
+ {
+ HotKeyList.RemoveAt(index);
+
+ }
+ return index;
+ }
+ ///
+ /// 在列表中查找热键是否已存在
+ ///
+ ///
+ /// 返回热键在原来列表中的位置
+ public static int IsHotKeyExistInList(string hotkey)
+ {
+ var index = HotKeyList.FindIndex(a => a.HotKey == hotkey);
+ return index;
+ }
+
+ }
+ public class HotKeyItem
+ {
+ ///
+ /// ID
+ ///
+ public string ID { get; set; } = "";
+ ///
+ /// 热键名称
+ ///
+ public string Name { get; set; } = "";
+ ///
+ /// 热键
+ ///
+ public string HotKey { get; set; } = "";
+
}
}
diff --git a/Source/VSoft_Dll/Config/frmSetting.cs b/Source/VSoft_Dll/Config/frmSetting.cs
index c6c9a0e..50a156e 100644
--- a/Source/VSoft_Dll/Config/frmSetting.cs
+++ b/Source/VSoft_Dll/Config/frmSetting.cs
@@ -1,4 +1,5 @@
using ryCommon;
+using ryCommonDb;
using ryControls;
using System;
using System.Collections.Generic;
@@ -8,6 +9,7 @@ using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
+using VSoft.Prams;
namespace VSoft.Config
{
@@ -29,6 +31,26 @@ namespace VSoft.Config
private void BtnOK_Click(object sender, EventArgs e)
{
+ if (hotkeyTextBox1.HaveHotKey)
+ {
+ IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
+ if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1)
+ {
+ var ds = db.ReadData("select * from Softs where Hotkey='" + hotkeyTextBox1.HotKey + "' limit 1");
+ if (ds.HaveData())
+ {
+ Msg.ShowMsg("当前热键已经存在,请更换热键。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ ds.Dispose(); return;
+ }
+ ds.Dispose();
+ }
+ db.Free();
+ Config.Soft_Config.SetHotKeyList("showmain", "显示主界面", hotkeyTextBox1.HotKey);
+ }
+ else
+ {
+ Config.Soft_Config.RemoveHotKeyList("showmain");
+ }
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);
diff --git a/Source/VSoft_Dll/FrmAddSoft.Designer.cs b/Source/VSoft_Dll/FrmAddSoft.Designer.cs
index a13c27e..b433dfe 100644
--- a/Source/VSoft_Dll/FrmAddSoft.Designer.cs
+++ b/Source/VSoft_Dll/FrmAddSoft.Designer.cs
@@ -28,394 +28,417 @@
///
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAddSoft));
- this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.选择图标ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.使用应用图标ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
- this.of_File = new System.Windows.Forms.OpenFileDialog();
- this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
- this.TxtCmdId = new ryControls.TextBoxEx2();
- this.label6 = new System.Windows.Forms.Label();
- this.LblCustomImg = new System.Windows.Forms.Label();
- this.TxtDes = new ryControls.TextBoxEx2();
- this.label4 = new System.Windows.Forms.Label();
- this.chromeTabControl1 = new ryControls.ChromeTabControl();
- this.tabPage1 = new System.Windows.Forms.TabPage();
- this.ChkRunAsAdmin = new System.Windows.Forms.CheckBox();
- this.BtnBrowser = new ryControls.ButtonEx();
- this.TxtStartPath = new ryControls.TextBoxEx2();
- this.label5 = new System.Windows.Forms.Label();
- this.TxtPath = new ryControls.TextBoxEx2();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.TxtRunPram = new ryControls.TextBoxEx2();
- this.BtnCancel = new ryControls.ButtonEx();
- this.BtnOK = new ryControls.ButtonEx();
- this.PicImg = new System.Windows.Forms.PictureBox();
- this.label1 = new System.Windows.Forms.Label();
- this.TxtName = new ryControls.TextBoxEx2();
- this.contextMenuStrip1.SuspendLayout();
- this.chromeTabControl1.SuspendLayout();
- this.tabPage1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.PicImg)).BeginInit();
- this.SuspendLayout();
- //
- // contextMenuStrip1
- //
- this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.选择图标ToolStripMenuItem,
- this.使用应用图标ToolStripMenuItem});
- this.contextMenuStrip1.Name = "contextMenuStrip1";
- this.contextMenuStrip1.Size = new System.Drawing.Size(173, 48);
- //
- // 选择图标ToolStripMenuItem
- //
- this.选择图标ToolStripMenuItem.Name = "选择图标ToolStripMenuItem";
- this.选择图标ToolStripMenuItem.Size = new System.Drawing.Size(172, 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(172, 22);
- this.使用应用图标ToolStripMenuItem.Text = "使用当前应用图标";
- this.使用应用图标ToolStripMenuItem.Click += new System.EventHandler(this.使用应用图标ToolStripMenuItem_Click);
- //
- // openFileDialog1
- //
- this.openFileDialog1.Filter = "图片文件|*.jpg;*.gif;*.bmp;*.png;*.jpeg;*.ico|应用程序|*.exe";
- //
- // of_File
- //
- this.of_File.Filter = "所有文件|*.*";
- //
- // TxtCmdId
- //
- this.TxtCmdId.BackColor = System.Drawing.Color.White;
- this.TxtCmdId.EmptyText = "默认为空";
- this.TxtCmdId.Location = new System.Drawing.Point(310, 35);
- this.TxtCmdId.MaxLength = 999999999;
- this.TxtCmdId.Multiline = false;
- this.TxtCmdId.Name = "TxtCmdId";
- this.TxtCmdId.OnlyNumeric = false;
- this.TxtCmdId.PasswordChar = '\0';
- this.TxtCmdId.ReadOnly = false;
- this.TxtCmdId.SelectedText = "";
- this.TxtCmdId.SelectionLength = 0;
- this.TxtCmdId.SelectionStart = 0;
- this.TxtCmdId.Size = new System.Drawing.Size(133, 22);
- this.TxtCmdId.TabIndex = 14;
- this.TxtCmdId.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtCmdId.ToolTip = "当输入了唯一命令ID后,用户可以根据该ID来运行当前软件\r\n或执行当前命令。\r\n\r\n*.命令ID只支持英文和数字字符";
- this.TxtCmdId.WordWrap = true;
- //
- // label6
- //
- this.label6.AutoSize = true;
- this.label6.Location = new System.Drawing.Point(239, 39);
- this.label6.Name = "label6";
- this.label6.Size = new System.Drawing.Size(65, 12);
- this.label6.TabIndex = 13;
- this.label6.Text = "唯一命令ID";
- //
- // LblCustomImg
- //
- this.LblCustomImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.LblCustomImg.BackColor = System.Drawing.Color.Transparent;
- this.LblCustomImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.LblCustomImg.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.LblCustomImg.ForeColor = System.Drawing.Color.DodgerBlue;
- this.LblCustomImg.Location = new System.Drawing.Point(448, 125);
- this.LblCustomImg.Name = "LblCustomImg";
- this.LblCustomImg.Size = new System.Drawing.Size(86, 18);
- this.LblCustomImg.TabIndex = 12;
- this.LblCustomImg.Text = "自动获取";
- this.LblCustomImg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // TxtDes
- //
- this.TxtDes.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.TxtDes.BackColor = System.Drawing.Color.White;
- this.TxtDes.EmptyText = "";
- this.TxtDes.Location = new System.Drawing.Point(57, 65);
- this.TxtDes.MaxLength = 999999999;
- this.TxtDes.Multiline = true;
- this.TxtDes.Name = "TxtDes";
- this.TxtDes.OnlyNumeric = false;
- this.TxtDes.PasswordChar = '\0';
- this.TxtDes.ReadOnly = false;
- this.TxtDes.SelectedText = "";
- this.TxtDes.SelectionLength = 0;
- this.TxtDes.SelectionStart = 0;
- this.TxtDes.Size = new System.Drawing.Size(385, 80);
- this.TxtDes.TabIndex = 11;
- this.TxtDes.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtDes.ToolTip = "";
- this.TxtDes.WordWrap = true;
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(12, 65);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(29, 12);
- this.label4.TabIndex = 10;
- this.label4.Text = "备注";
- //
- // 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.tabPage1);
- this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default;
- this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25);
- this.chromeTabControl1.Location = new System.Drawing.Point(12, 155);
- this.chromeTabControl1.Name = "chromeTabControl1";
- this.chromeTabControl1.SelectedIndex = 0;
- this.chromeTabControl1.ShowAddButton = false;
- this.chromeTabControl1.ShowCloseButton = false;
- this.chromeTabControl1.Size = new System.Drawing.Size(522, 306);
- this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
- this.chromeTabControl1.TabContextMenuStrip = null;
- this.chromeTabControl1.TabIndex = 9;
- this.chromeTabControl1.TabMaxWidth = 100;
- //
- // tabPage1
- //
- this.tabPage1.Controls.Add(this.ChkRunAsAdmin);
- this.tabPage1.Controls.Add(this.BtnBrowser);
- this.tabPage1.Controls.Add(this.TxtStartPath);
- this.tabPage1.Controls.Add(this.label5);
- this.tabPage1.Controls.Add(this.TxtPath);
- this.tabPage1.Controls.Add(this.label2);
- this.tabPage1.Controls.Add(this.label3);
- this.tabPage1.Controls.Add(this.TxtRunPram);
- this.tabPage1.Location = new System.Drawing.Point(1, 29);
- this.tabPage1.Name = "tabPage1";
- this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
- this.tabPage1.Size = new System.Drawing.Size(520, 276);
- this.tabPage1.TabIndex = 0;
- this.tabPage1.Text = "运行";
- this.tabPage1.UseVisualStyleBackColor = true;
- //
- // ChkRunAsAdmin
- //
- this.ChkRunAsAdmin.AutoSize = true;
- this.ChkRunAsAdmin.Location = new System.Drawing.Point(8, 131);
- this.ChkRunAsAdmin.Name = "ChkRunAsAdmin";
- this.ChkRunAsAdmin.Size = new System.Drawing.Size(144, 16);
- this.ChkRunAsAdmin.TabIndex = 9;
- this.ChkRunAsAdmin.Text = "强制以管理员方式启动";
- this.ChkRunAsAdmin.UseVisualStyleBackColor = true;
- //
- // BtnBrowser
- //
- this.BtnBrowser.BaseColor = System.Drawing.Color.DarkGreen;
- this.BtnBrowser.ColorGradient = true;
- this.BtnBrowser.Location = new System.Drawing.Point(463, 20);
- this.BtnBrowser.Name = "BtnBrowser";
- this.BtnBrowser.Size = new System.Drawing.Size(33, 27);
- this.BtnBrowser.TabIndex = 8;
- this.BtnBrowser.Text = "...";
- this.BtnBrowser.UseVisualStyleBackColor = true;
- this.BtnBrowser.Click += new System.EventHandler(this.BtnBrowser_Click);
- //
- // TxtStartPath
- //
- this.TxtStartPath.BackColor = System.Drawing.Color.White;
- this.TxtStartPath.EmptyText = "留空则表示使用默认设置";
- this.TxtStartPath.Location = new System.Drawing.Point(8, 103);
- this.TxtStartPath.MaxLength = 999999999;
- this.TxtStartPath.Multiline = false;
- this.TxtStartPath.Name = "TxtStartPath";
- this.TxtStartPath.OnlyNumeric = false;
- this.TxtStartPath.PasswordChar = '\0';
- this.TxtStartPath.ReadOnly = false;
- this.TxtStartPath.SelectedText = "";
- this.TxtStartPath.SelectionLength = 0;
- this.TxtStartPath.SelectionStart = 0;
- this.TxtStartPath.Size = new System.Drawing.Size(449, 22);
- this.TxtStartPath.TabIndex = 7;
- this.TxtStartPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtStartPath.ToolTip = "";
- this.TxtStartPath.WordWrap = true;
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(6, 88);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(53, 12);
- this.label5.TabIndex = 6;
- this.label5.Text = "当前路径";
- //
- // TxtPath
- //
- this.TxtPath.BackColor = System.Drawing.Color.White;
- this.TxtPath.EmptyText = "";
- this.TxtPath.Location = new System.Drawing.Point(6, 23);
- this.TxtPath.MaxLength = 999999999;
- this.TxtPath.Multiline = false;
- this.TxtPath.Name = "TxtPath";
- this.TxtPath.OnlyNumeric = false;
- this.TxtPath.PasswordChar = '\0';
- this.TxtPath.ReadOnly = false;
- this.TxtPath.SelectedText = "";
- this.TxtPath.SelectionLength = 0;
- this.TxtPath.SelectionStart = 0;
- this.TxtPath.Size = new System.Drawing.Size(451, 22);
- this.TxtPath.TabIndex = 3;
- this.TxtPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtPath.ToolTip = "";
- this.TxtPath.WordWrap = true;
- this.TxtPath.TextChanged2 += new System.EventHandler(this.TxtPath_TextChanged2);
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(6, 8);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(29, 12);
- this.label2.TabIndex = 2;
- this.label2.Text = "路径";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(6, 48);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(29, 12);
- this.label3.TabIndex = 4;
- this.label3.Text = "参数";
- //
- // TxtRunPram
- //
- this.TxtRunPram.BackColor = System.Drawing.Color.White;
- this.TxtRunPram.EmptyText = "";
- this.TxtRunPram.Location = new System.Drawing.Point(6, 63);
- this.TxtRunPram.MaxLength = 999999999;
- this.TxtRunPram.Multiline = false;
- this.TxtRunPram.Name = "TxtRunPram";
- this.TxtRunPram.OnlyNumeric = false;
- this.TxtRunPram.PasswordChar = '\0';
- this.TxtRunPram.ReadOnly = false;
- this.TxtRunPram.SelectedText = "";
- this.TxtRunPram.SelectionLength = 0;
- this.TxtRunPram.SelectionStart = 0;
- this.TxtRunPram.Size = new System.Drawing.Size(451, 22);
- this.TxtRunPram.TabIndex = 5;
- this.TxtRunPram.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtRunPram.ToolTip = "";
- this.TxtRunPram.WordWrap = 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.DarkGreen;
- this.BtnCancel.ColorGradient = true;
- this.BtnCancel.Location = new System.Drawing.Point(458, 467);
- this.BtnCancel.Name = "BtnCancel";
- this.BtnCancel.Size = new System.Drawing.Size(75, 27);
- this.BtnCancel.TabIndex = 8;
- 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.DarkGreen;
- this.BtnOK.ColorGradient = true;
- this.BtnOK.Location = new System.Drawing.Point(377, 467);
- this.BtnOK.Name = "BtnOK";
- this.BtnOK.Size = new System.Drawing.Size(75, 27);
- this.BtnOK.TabIndex = 7;
- this.BtnOK.Text = "确定";
- this.BtnOK.UseVisualStyleBackColor = true;
- this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click);
- //
- // PicImg
- //
- this.PicImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.PicImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.PicImg.ContextMenuStrip = this.contextMenuStrip1;
- this.PicImg.Cursor = System.Windows.Forms.Cursors.Hand;
- this.PicImg.Location = new System.Drawing.Point(448, 36);
- this.PicImg.Name = "PicImg";
- this.PicImg.Size = new System.Drawing.Size(86, 86);
- this.PicImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.PicImg.TabIndex = 6;
- this.PicImg.TabStop = false;
- this.PicImg.Click += new System.EventHandler(this.PicImg_Click);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(10, 39);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(41, 12);
- this.label1.TabIndex = 1;
- this.label1.Text = "软件名";
- //
- // TxtName
- //
- this.TxtName.BackColor = System.Drawing.Color.White;
- this.TxtName.EmptyText = "";
- this.TxtName.Location = new System.Drawing.Point(57, 35);
- this.TxtName.MaxLength = 999999999;
- this.TxtName.Multiline = false;
- this.TxtName.Name = "TxtName";
- this.TxtName.OnlyNumeric = false;
- this.TxtName.PasswordChar = '\0';
- this.TxtName.ReadOnly = false;
- this.TxtName.SelectedText = "";
- this.TxtName.SelectionLength = 0;
- this.TxtName.SelectionStart = 0;
- this.TxtName.Size = new System.Drawing.Size(175, 22);
- this.TxtName.TabIndex = 0;
- this.TxtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
- this.TxtName.ToolTip = "";
- this.TxtName.WordWrap = true;
- //
- // FrmAddSoft
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(543, 506);
- this.Controls.Add(this.TxtCmdId);
- this.Controls.Add(this.label6);
- this.Controls.Add(this.LblCustomImg);
- this.Controls.Add(this.TxtDes);
- this.Controls.Add(this.label4);
- this.Controls.Add(this.chromeTabControl1);
- this.Controls.Add(this.BtnCancel);
- this.Controls.Add(this.BtnOK);
- this.Controls.Add(this.PicImg);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.TxtName);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "FrmAddSoft";
- this.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
- this.ShadowWidth = 1;
- this.ShowShadow = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "添加软件";
- this.Load += new System.EventHandler(this.FrmAddSoft_Load);
- this.contextMenuStrip1.ResumeLayout(false);
- this.chromeTabControl1.ResumeLayout(false);
- this.tabPage1.ResumeLayout(false);
- this.tabPage1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.PicImg)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAddSoft));
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.选择图标ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.使用应用图标ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ this.of_File = new System.Windows.Forms.OpenFileDialog();
+ this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
+ this.TxtCmdId = new ryControls.TextBoxEx2();
+ this.label6 = new System.Windows.Forms.Label();
+ this.LblCustomImg = new System.Windows.Forms.Label();
+ this.TxtDes = new ryControls.TextBoxEx2();
+ this.label4 = new System.Windows.Forms.Label();
+ this.chromeTabControl1 = new ryControls.ChromeTabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.label7 = new System.Windows.Forms.Label();
+ this.hotkeyTextBox1 = new ryControls.HotkeyTextBox();
+ this.ChkRunAsAdmin = new System.Windows.Forms.CheckBox();
+ this.BtnBrowser = new ryControls.ButtonEx();
+ this.TxtStartPath = new ryControls.TextBoxEx2();
+ this.label5 = new System.Windows.Forms.Label();
+ this.TxtPath = new ryControls.TextBoxEx2();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.TxtRunPram = new ryControls.TextBoxEx2();
+ this.BtnCancel = new ryControls.ButtonEx();
+ this.BtnOK = new ryControls.ButtonEx();
+ this.PicImg = new System.Windows.Forms.PictureBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.TxtName = new ryControls.TextBoxEx2();
+ this.contextMenuStrip1.SuspendLayout();
+ this.chromeTabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.PicImg)).BeginInit();
+ this.SuspendLayout();
+ //
+ // contextMenuStrip1
+ //
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.选择图标ToolStripMenuItem,
+ this.使用应用图标ToolStripMenuItem});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(173, 48);
+ //
+ // 选择图标ToolStripMenuItem
+ //
+ this.选择图标ToolStripMenuItem.Name = "选择图标ToolStripMenuItem";
+ this.选择图标ToolStripMenuItem.Size = new System.Drawing.Size(172, 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(172, 22);
+ this.使用应用图标ToolStripMenuItem.Text = "使用当前应用图标";
+ this.使用应用图标ToolStripMenuItem.Click += new System.EventHandler(this.使用应用图标ToolStripMenuItem_Click);
+ //
+ // openFileDialog1
+ //
+ this.openFileDialog1.Filter = "图片文件|*.jpg;*.gif;*.bmp;*.png;*.jpeg;*.ico|应用程序|*.exe";
+ //
+ // of_File
+ //
+ this.of_File.Filter = "所有文件|*.*";
+ //
+ // TxtCmdId
+ //
+ this.TxtCmdId.BackColor = System.Drawing.Color.White;
+ this.TxtCmdId.EmptyText = "默认为空";
+ this.TxtCmdId.Location = new System.Drawing.Point(310, 35);
+ this.TxtCmdId.MaxLength = 999999999;
+ this.TxtCmdId.Multiline = false;
+ this.TxtCmdId.Name = "TxtCmdId";
+ this.TxtCmdId.OnlyNumeric = false;
+ this.TxtCmdId.PasswordChar = '\0';
+ this.TxtCmdId.ReadOnly = false;
+ this.TxtCmdId.SelectedText = "";
+ this.TxtCmdId.SelectionLength = 0;
+ this.TxtCmdId.SelectionStart = 0;
+ this.TxtCmdId.Size = new System.Drawing.Size(133, 22);
+ this.TxtCmdId.TabIndex = 14;
+ this.TxtCmdId.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtCmdId.ToolTip = "当输入了唯一命令ID后,用户可以根据该ID来运行当前软件\r\n或执行当前命令。\r\n\r\n*.命令ID只支持英文和数字字符";
+ this.TxtCmdId.WordWrap = true;
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(239, 39);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(65, 12);
+ this.label6.TabIndex = 13;
+ this.label6.Text = "唯一命令ID";
+ //
+ // LblCustomImg
+ //
+ this.LblCustomImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.LblCustomImg.BackColor = System.Drawing.Color.Transparent;
+ this.LblCustomImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.LblCustomImg.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.LblCustomImg.ForeColor = System.Drawing.Color.DodgerBlue;
+ this.LblCustomImg.Location = new System.Drawing.Point(576, 125);
+ this.LblCustomImg.Name = "LblCustomImg";
+ this.LblCustomImg.Size = new System.Drawing.Size(86, 18);
+ this.LblCustomImg.TabIndex = 12;
+ this.LblCustomImg.Text = "自动获取";
+ this.LblCustomImg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // TxtDes
+ //
+ this.TxtDes.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.TxtDes.BackColor = System.Drawing.Color.White;
+ this.TxtDes.EmptyText = "";
+ this.TxtDes.Location = new System.Drawing.Point(57, 65);
+ this.TxtDes.MaxLength = 999999999;
+ this.TxtDes.Multiline = true;
+ this.TxtDes.Name = "TxtDes";
+ this.TxtDes.OnlyNumeric = false;
+ this.TxtDes.PasswordChar = '\0';
+ this.TxtDes.ReadOnly = false;
+ this.TxtDes.SelectedText = "";
+ this.TxtDes.SelectionLength = 0;
+ this.TxtDes.SelectionStart = 0;
+ this.TxtDes.Size = new System.Drawing.Size(513, 80);
+ this.TxtDes.TabIndex = 11;
+ this.TxtDes.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtDes.ToolTip = "";
+ this.TxtDes.WordWrap = true;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(12, 65);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(29, 12);
+ this.label4.TabIndex = 10;
+ this.label4.Text = "备注";
+ //
+ // 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.tabPage1);
+ this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default;
+ this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25);
+ this.chromeTabControl1.Location = new System.Drawing.Point(12, 155);
+ this.chromeTabControl1.Name = "chromeTabControl1";
+ this.chromeTabControl1.SelectedIndex = 0;
+ this.chromeTabControl1.ShowAddButton = false;
+ this.chromeTabControl1.ShowCloseButton = false;
+ this.chromeTabControl1.Size = new System.Drawing.Size(650, 415);
+ this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
+ this.chromeTabControl1.TabContextMenuStrip = null;
+ this.chromeTabControl1.TabIndex = 9;
+ this.chromeTabControl1.TabMaxWidth = 100;
+ //
+ // tabPage1
+ //
+ this.tabPage1.Controls.Add(this.label7);
+ this.tabPage1.Controls.Add(this.hotkeyTextBox1);
+ this.tabPage1.Controls.Add(this.ChkRunAsAdmin);
+ this.tabPage1.Controls.Add(this.BtnBrowser);
+ this.tabPage1.Controls.Add(this.TxtStartPath);
+ this.tabPage1.Controls.Add(this.label5);
+ this.tabPage1.Controls.Add(this.TxtPath);
+ this.tabPage1.Controls.Add(this.label2);
+ this.tabPage1.Controls.Add(this.label3);
+ this.tabPage1.Controls.Add(this.TxtRunPram);
+ this.tabPage1.Location = new System.Drawing.Point(1, 29);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPage1.Size = new System.Drawing.Size(648, 385);
+ this.tabPage1.TabIndex = 0;
+ this.tabPage1.Text = "运行";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(6, 153);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(53, 12);
+ this.label7.TabIndex = 11;
+ this.label7.Text = "运行热键";
+ //
+ // hotkeyTextBox1
+ //
+ this.hotkeyTextBox1.BackColor = System.Drawing.Color.White;
+ this.hotkeyTextBox1.HotKey = "0+0";
+ this.hotkeyTextBox1.Location = new System.Drawing.Point(8, 168);
+ 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 = 10;
+ //
+ // ChkRunAsAdmin
+ //
+ this.ChkRunAsAdmin.AutoSize = true;
+ this.ChkRunAsAdmin.Location = new System.Drawing.Point(8, 131);
+ this.ChkRunAsAdmin.Name = "ChkRunAsAdmin";
+ this.ChkRunAsAdmin.Size = new System.Drawing.Size(144, 16);
+ this.ChkRunAsAdmin.TabIndex = 9;
+ this.ChkRunAsAdmin.Text = "强制以管理员方式启动";
+ this.ChkRunAsAdmin.UseVisualStyleBackColor = true;
+ //
+ // BtnBrowser
+ //
+ this.BtnBrowser.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(20)))));
+ this.BtnBrowser.ColorGradient = true;
+ this.BtnBrowser.Location = new System.Drawing.Point(463, 20);
+ this.BtnBrowser.Name = "BtnBrowser";
+ this.BtnBrowser.Size = new System.Drawing.Size(33, 27);
+ this.BtnBrowser.TabIndex = 8;
+ this.BtnBrowser.Text = "...";
+ this.BtnBrowser.UseVisualStyleBackColor = true;
+ this.BtnBrowser.Click += new System.EventHandler(this.BtnBrowser_Click);
+ //
+ // TxtStartPath
+ //
+ this.TxtStartPath.BackColor = System.Drawing.Color.White;
+ this.TxtStartPath.EmptyText = "留空则表示使用默认设置";
+ this.TxtStartPath.Location = new System.Drawing.Point(8, 103);
+ this.TxtStartPath.MaxLength = 999999999;
+ this.TxtStartPath.Multiline = false;
+ this.TxtStartPath.Name = "TxtStartPath";
+ this.TxtStartPath.OnlyNumeric = false;
+ this.TxtStartPath.PasswordChar = '\0';
+ this.TxtStartPath.ReadOnly = false;
+ this.TxtStartPath.SelectedText = "";
+ this.TxtStartPath.SelectionLength = 0;
+ this.TxtStartPath.SelectionStart = 0;
+ this.TxtStartPath.Size = new System.Drawing.Size(449, 22);
+ this.TxtStartPath.TabIndex = 7;
+ this.TxtStartPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtStartPath.ToolTip = "";
+ this.TxtStartPath.WordWrap = true;
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(6, 88);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(53, 12);
+ this.label5.TabIndex = 6;
+ this.label5.Text = "当前路径";
+ //
+ // TxtPath
+ //
+ this.TxtPath.BackColor = System.Drawing.Color.White;
+ this.TxtPath.EmptyText = "";
+ this.TxtPath.Location = new System.Drawing.Point(6, 23);
+ this.TxtPath.MaxLength = 999999999;
+ this.TxtPath.Multiline = false;
+ this.TxtPath.Name = "TxtPath";
+ this.TxtPath.OnlyNumeric = false;
+ this.TxtPath.PasswordChar = '\0';
+ this.TxtPath.ReadOnly = false;
+ this.TxtPath.SelectedText = "";
+ this.TxtPath.SelectionLength = 0;
+ this.TxtPath.SelectionStart = 0;
+ this.TxtPath.Size = new System.Drawing.Size(451, 22);
+ this.TxtPath.TabIndex = 3;
+ this.TxtPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtPath.ToolTip = "";
+ this.TxtPath.WordWrap = true;
+ this.TxtPath.TextChanged2 += new System.EventHandler(this.TxtPath_TextChanged2);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(6, 8);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(29, 12);
+ this.label2.TabIndex = 2;
+ this.label2.Text = "路径";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(6, 48);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(29, 12);
+ this.label3.TabIndex = 4;
+ this.label3.Text = "参数";
+ //
+ // TxtRunPram
+ //
+ this.TxtRunPram.BackColor = System.Drawing.Color.White;
+ this.TxtRunPram.EmptyText = "";
+ this.TxtRunPram.Location = new System.Drawing.Point(6, 63);
+ this.TxtRunPram.MaxLength = 999999999;
+ this.TxtRunPram.Multiline = false;
+ this.TxtRunPram.Name = "TxtRunPram";
+ this.TxtRunPram.OnlyNumeric = false;
+ this.TxtRunPram.PasswordChar = '\0';
+ this.TxtRunPram.ReadOnly = false;
+ this.TxtRunPram.SelectedText = "";
+ this.TxtRunPram.SelectionLength = 0;
+ this.TxtRunPram.SelectionStart = 0;
+ this.TxtRunPram.Size = new System.Drawing.Size(451, 22);
+ this.TxtRunPram.TabIndex = 5;
+ this.TxtRunPram.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtRunPram.ToolTip = "";
+ this.TxtRunPram.WordWrap = 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)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(20)))));
+ this.BtnCancel.ColorGradient = true;
+ this.BtnCancel.Location = new System.Drawing.Point(586, 576);
+ this.BtnCancel.Name = "BtnCancel";
+ this.BtnCancel.Size = new System.Drawing.Size(75, 27);
+ this.BtnCancel.TabIndex = 8;
+ 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)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(20)))));
+ this.BtnOK.ColorGradient = true;
+ this.BtnOK.Location = new System.Drawing.Point(505, 576);
+ this.BtnOK.Name = "BtnOK";
+ this.BtnOK.Size = new System.Drawing.Size(75, 27);
+ this.BtnOK.TabIndex = 7;
+ this.BtnOK.Text = "确定";
+ this.BtnOK.UseVisualStyleBackColor = true;
+ this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click);
+ //
+ // PicImg
+ //
+ this.PicImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.PicImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.PicImg.ContextMenuStrip = this.contextMenuStrip1;
+ this.PicImg.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.PicImg.Location = new System.Drawing.Point(576, 36);
+ this.PicImg.Name = "PicImg";
+ this.PicImg.Size = new System.Drawing.Size(86, 86);
+ this.PicImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.PicImg.TabIndex = 6;
+ this.PicImg.TabStop = false;
+ this.PicImg.Click += new System.EventHandler(this.PicImg_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(10, 39);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 12);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "软件名";
+ //
+ // TxtName
+ //
+ this.TxtName.BackColor = System.Drawing.Color.White;
+ this.TxtName.EmptyText = "";
+ this.TxtName.Location = new System.Drawing.Point(57, 35);
+ this.TxtName.MaxLength = 999999999;
+ this.TxtName.Multiline = false;
+ this.TxtName.Name = "TxtName";
+ this.TxtName.OnlyNumeric = false;
+ this.TxtName.PasswordChar = '\0';
+ this.TxtName.ReadOnly = false;
+ this.TxtName.SelectedText = "";
+ this.TxtName.SelectionLength = 0;
+ this.TxtName.SelectionStart = 0;
+ this.TxtName.Size = new System.Drawing.Size(175, 22);
+ this.TxtName.TabIndex = 0;
+ this.TxtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+ this.TxtName.ToolTip = "";
+ this.TxtName.WordWrap = true;
+ //
+ // FrmAddSoft
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(671, 615);
+ this.Controls.Add(this.TxtCmdId);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.LblCustomImg);
+ this.Controls.Add(this.TxtDes);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.chromeTabControl1);
+ this.Controls.Add(this.BtnCancel);
+ this.Controls.Add(this.BtnOK);
+ this.Controls.Add(this.PicImg);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.TxtName);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "FrmAddSoft";
+ this.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "添加软件";
+ this.Load += new System.EventHandler(this.FrmAddSoft_Load);
+ this.contextMenuStrip1.ResumeLayout(false);
+ this.chromeTabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.tabPage1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.PicImg)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
}
#endregion
@@ -445,6 +468,8 @@
private System.Windows.Forms.CheckBox ChkRunAsAdmin;
private System.Windows.Forms.Label label6;
private ryControls.TextBoxEx2 TxtCmdId;
- private System.Windows.Forms.ToolTip toolTip1;
+ private System.Windows.Forms.ToolTip toolTip1;
+ private System.Windows.Forms.Label label7;
+ public ryControls.HotkeyTextBox hotkeyTextBox1;
}
}
\ No newline at end of file
diff --git a/Source/VSoft_Dll/FrmAddSoft.cs b/Source/VSoft_Dll/FrmAddSoft.cs
index 092274e..14d15d1 100644
--- a/Source/VSoft_Dll/FrmAddSoft.cs
+++ b/Source/VSoft_Dll/FrmAddSoft.cs
@@ -65,6 +65,7 @@ namespace VSoft
TxtPath.Text = reader["Path"].ToString();
TxtRunPram.Text = reader["RunPram"].ToString();
TxtStartPath.Text = reader["StartPath"].ToString();
+ hotkeyTextBox1.HotKey = reader["Hotkey"].ToString();
Json json = new Json(reader["SetJson"].ToString());
ChkRunAsAdmin.Checked = json.GetJsonValue("RunAsAdmin", false);
var _IconPath = reader["IconPath"].ToString();
@@ -84,7 +85,10 @@ namespace VSoft
}
db.Free();
}
-
+ ///
+ /// 当前操作的id
+ ///
+ public int Op_Id { get; set; } = -1;
private void BtnOK_Click(object sender, EventArgs e)
{
if (TxtName.Text.Length == 0)
@@ -126,6 +130,24 @@ namespace VSoft
}
ds.Dispose();
}
+ if (hotkeyTextBox1.HaveHotKey)
+ {
+ var ds = db.ReadData("select * from " + tableName + " where Hotkey='" + hotkeyTextBox1.HotKey + "' and id<>" + SelectId + " limit 1");
+ if (mydb.HaveData(ds))
+ {
+ Msg.ShowMsg("当前热键已经存在,请更换热键。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ ds.Dispose(); return;
+ }
+ else
+ {
+ if(Config.Soft_Config.IsHotKeyExistInList(hotkeyTextBox1.HotKey)>=0)
+ {
+ Msg.ShowMsg("当前热键已经存在,请更换热键。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ ds.Dispose(); return;
+ }
+ }
+ ds.Dispose();
+ }
RyQuickSQL mySQL = new RyQuickSQL(tableName);
mySQL.AddField("Name", TxtName.Text);
mySQL.AddField("CmdId", TxtCmdId.Text);
@@ -136,7 +158,8 @@ namespace VSoft
Json json = new Json("");
json.Add("RunAsAdmin", ChkRunAsAdmin.Checked);
mySQL.AddField("SetJson", json.Text);//设置
- mySQL.AddField("Des", TxtDes.Text);//备注
+ mySQL.AddField("Des", TxtDes.Text);//备注
+ mySQL.AddField("Hotkey", hotkeyTextBox1.HaveHotKey?hotkeyTextBox1.HotKey:"");//快捷键
mySQL.AddField("Pinyin", ryCommon.PinYin.Convert(TxtName.Text) + "\r\n" + ryCommon.PinYin.ConvertFirstPY(TxtName.Text));
mySQL.AddField("editTime", DateTime.Now);
if (IsAdd >= 1)
@@ -146,11 +169,17 @@ namespace VSoft
mySQL.AddField("ColumnId",ColumnId);
mySQL.AddField("sortindex",Itrycn_Db.GetSoftCount(db, ColumnId) + 1);
mySQL.AddField("addTime", DateTime.Now);
- db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
+ var ds= db.ReadData(mySQL.GetInsertSQL()+";select last_insert_rowid();", mySQL);
+ if (ds.HaveData())
+ {
+ Op_Id = ds.GetFirstRowCellValue();
+ }
+ ds.Dispose();
}
else
{
db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + SelectId, mySQL);
+ Op_Id = SelectId;
}
}
db.Free();
diff --git a/Source/VSoft_Dll/FrmAddSoft.resx b/Source/VSoft_Dll/FrmAddSoft.resx
index e0aae39..144765b 100644
--- a/Source/VSoft_Dll/FrmAddSoft.resx
+++ b/Source/VSoft_Dll/FrmAddSoft.resx
@@ -1,209 +1,209 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 254, 17
-
-
- 17, 17
-
-
- 165, 17
-
-
- 419, 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
+
+
+ 254, 17
+
+
+ 17, 17
+
+
+ 165, 17
+
+
+ 419, 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=
+
+
\ No newline at end of file
diff --git a/Source/VSoft_Dll/FrmVSoft.cs b/Source/VSoft_Dll/FrmVSoft.cs
index ff57f93..50f12ae 100644
--- a/Source/VSoft_Dll/FrmVSoft.cs
+++ b/Source/VSoft_Dll/FrmVSoft.cs
@@ -29,6 +29,9 @@ namespace VSoft
//配置软件信息
notifyIcon1.Text = Config.Soft_Info.Soft_Title;
Text = Config.Soft_Info.Soft_Title + " V" + RySoft.VersionStr;
+#if TEST
+ Text +=" V内部测试版";
+#endif
if (!Config.Soft_Info.ShowTray) { notifyIcon1.Visible = false; }
#if DY
捐助ToolStripMenuItem.Text = "关于";
@@ -160,6 +163,7 @@ namespace VSoft
}
else { LblEmpty.Visible = false; }
}
+ db.Free();
}
private void LoadColumn()
{
@@ -239,6 +243,31 @@ namespace VSoft
TabList_Type.Items[0].Selected = true;
}
}
+ ///
+ /// 注册热键
+ ///
+ private void RegisterHotkey()
+ {
+ hotkey.UnHotKey();
+ IDbInterface db2 = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
+ if (db2.ConnDb(SQLConnStr) == 1)
+ {
+ HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey);
+ hotkey.RegHotKey(100, hot.Modifiers_Int, hot.KeyCode);
+ var ds = db2.ReadData("select * from Softs where Hotkey<>''");
+ if (ds.HaveData())
+ {
+ for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
+ {
+ var item = ds.GetRow(i);
+ hot.LoadHotKeyStr(item["HotKey"].ToString());
+ hotkey.RegHotKey(100 + item["id"].ToInt(), hot.Modifiers_Int, hot.KeyCode);
+ }
+ }
+ ds.Dispose();
+ }
+ db2.Free();
+ }
SysFuns.WinHotReg hotkey;
private void FrmVSoft_Load(object sender, EventArgs e)
{
@@ -299,9 +328,8 @@ namespace VSoft
// Msg.ShowMsg("管理员模式下启动本软件,可能会导致无法拖放图标到本软件。", "提示", 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;
+ RegisterHotkey();
ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser;
//如果开机启动没有启动
if(!ryCommon.RyRegedit.IsAutoRun(Soft_Info.Soft_Id, "\"" + Application.ExecutablePath.Replace("/", "\\") + "\" " + Soft_Info.Soft_Pram))
@@ -314,8 +342,11 @@ namespace VSoft
}
}
ShowInCenter(null);
+#if DY
+#else
LiveUpdate.RyUpdate update = new LiveUpdate.RyUpdate(Soft_Info.Update_Url);
update.CheckUpdate();
+#endif
mouse.OnMouseActivity += Mouse_OnMouseActivity;
mouse.Start();
}
@@ -327,6 +358,32 @@ namespace VSoft
case 100:
ShowOrHideUI();
break;
+ default:
+ var id = HotKeyID - 100;
+ IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
+ if (db.ConnDb(SQLConnStr) == 1)
+ {
+ var sql = "select * from Softs where id="+id;
+ DataSet ds = db.ReadData("select * from Softs where id=" + id);
+ if(ds.HaveData())
+ {
+ DataRow row = ds.GetFirstRowData();
+ 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();
+ VSoft.Prams.Run.Open(info, false);
+ }
+ db.Free();
+ }
+ db.Free();
+ break;
}
}
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
@@ -719,6 +776,12 @@ namespace VSoft
frm.ShowInCenter(this);
if (frm.ShowDialog() == DialogResult.OK)
{
+ if(frm.hotkeyTextBox1.HaveHotKey)
+ {
+ hotkey.UnHotKey(frm.Op_Id+00);
+ HotkeyValue hot = new HotkeyValue(frm.hotkeyTextBox1.HotKey);
+ hotkey.RegHotKey(frm.Op_Id+100, hot.Modifiers_Int, hot.KeyCode);
+ }
LoadDb();
}
frm.Dispose();
@@ -735,6 +798,16 @@ namespace VSoft
frm.ShowInCenter(this);
if (frm.ShowDialog() == DialogResult.OK)
{
+ if (frm.hotkeyTextBox1.HaveHotKey)
+ {
+ hotkey.UnHotKey(frm.Op_Id + 100);
+ HotkeyValue hot = new HotkeyValue(frm.hotkeyTextBox1.HotKey);
+ hotkey.RegHotKey(frm.Op_Id +100, hot.Modifiers_Int, hot.KeyCode);
+ }
+ else
+ {
+ hotkey.UnHotKey(frm.Op_Id +100);
+ }
SetSoftRow(info.Id, IconViewEx1.SelectedItems[0].Index);
}
frm.Dispose();
@@ -756,6 +829,7 @@ namespace VSoft
{
RyFiles.DeleteFile(RyFiles.GetRealPath(info.IconPath));
}
+ hotkey.UnHotKey(info.Id+100);
db.DelById("Softs", info.Id.ToString());
IconViewEx1.SelectedItems[i].Remove();
if (IconViewEx1.Items.Count == 0)
@@ -1308,7 +1382,7 @@ namespace VSoft
if (frm.ShowDialog() == DialogResult.OK)
{
VSoft.Config.Soft_Config.LoadSetting();
- hotkey.UnHotKey();
+ hotkey.UnHotKey(100);
HotkeyValue hot = new HotkeyValue(Soft_Config.ShowMainHotKey);
hotkey.RegHotKey(100, hot.Modifiers_Int, hot.KeyCode);
}
diff --git a/Source/VSoft_Dll/Prams/Itrycn_Db.cs b/Source/VSoft_Dll/Prams/Itrycn_Db.cs
index 691f8d3..950d418 100644
--- a/Source/VSoft_Dll/Prams/Itrycn_Db.cs
+++ b/Source/VSoft_Dll/Prams/Itrycn_Db.cs
@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
+using VSoft.Config;
using static ryCommonDb.DataProvider;
namespace VSoft.Prams
@@ -12,8 +13,8 @@ namespace VSoft.Prams
public class Itrycn_Db
{
public static string SQLConnStr_SysDb = "\\SysDb\\SysConfig.dat";
- public static string SQLConnStr = "\\UserDb\\Softs.dat|";
- public static string SQLConnStr_Logs = "\\UserDb\\logs.dat|";
+ public static string SQLConnStr = Soft_Info.UserDataFolder+ "\\Softs.dat|";
+ public static string SQLConnStr_Logs = Soft_Info.UserDataFolder + "\\logs.dat|";
public static DataProvider.DataProviderType dataType = DataProvider.DataProviderType.SQLiteDataProvider;
public static IDbInterface CreateDataProvider(DataProviderType dataProviderType)
{
@@ -164,6 +165,7 @@ namespace VSoft.Prams
mySQL.AddField("ClickCount",0);//点击量
mySQL.AddField("SetJson", "");//设置
mySQL.AddField("Des", "");//备注
+ mySQL.AddField("Hotkey", "");//快捷键
mySQL.AddField("PinYin", "");//拼音
mySQL.AddField("ColumnId", 0);//栏目ID
mySQL.AddField("sortindex", 0);
diff --git a/Source/VSoft_Dll/Properties/AssemblyInfo.cs b/Source/VSoft_Dll/Properties/AssemblyInfo.cs
index ac49313..09b0b99 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.2107.0501")]
-[assembly: AssemblyFileVersion("1.0.2107.0501")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.0.2109.0701")]
+[assembly: AssemblyFileVersion("1.0.2109.0701")]
\ No newline at end of file
diff --git a/Source/VSoft_Dll/VSoft.csproj b/Source/VSoft_Dll/VSoft.csproj
index 4076fb5..b1e82c7 100644
--- a/Source/VSoft_Dll/VSoft.csproj
+++ b/Source/VSoft_Dll/VSoft.csproj
@@ -18,7 +18,7 @@
full
false
..\..\Bin\Debug\VSoft\
- TRACE;DEBUG
+ TRACE;DEBUG;DY
prompt
4
AnyCPU