0?l:["plain"],e=u):(l=X(l,u.type),u.alias&&(l=X(l,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(l),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Y),p=d.length;s.push({types:l,content:d[0]});for(let t=1;t{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=_(_({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=x(_({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),s=(e=>(0,u.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=C(n,["className","style","line"]);const s=x(_({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(s.style=e.plain),"object"==typeof a&&(s.style=_(_({},s.style||{}),a)),s},[e]))(i),c=(e=>{const t=(0,u.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,u.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=C(n,["token","className","style"]);const s=x(_({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(s.style=_(_({},s.style||{}),o)),s},[t])})(i),l=(({prism:e,code:t,grammar:n,language:r})=>(0,u.useMemo)(()=>{if(null==n)return Z([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),Z(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:l,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:s,getTokenProps:c})},ne=e=>(0,u.createElement)(te,x(_({},e),{prism:e.prism||E,theme:e.theme||U,code:e.code,language:e.language}))},73535(e,t,n){"use strict";n.d(t,{v:()=>i});var r=n(6342);const a="anchorTargetStickyNavbar_Vzrq",o="anchorTargetHideOnScrollNavbar_vjPI";function i(e){var t=(0,r.p)().navbar.hideOnScroll;if(void 0!==e)return t?o:a}},74848(e,t,n){"use strict";e.exports=n(29698)},75062(e,t,n){"use strict";n.d(t,{$:()=>i});var r=n(96540),a=n(56347),o=n(43807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(function(){n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},75600(e,t,n){"use strict";n.d(t,{GX:()=>l,YL:()=>c,y_:()=>s});var r=n(96540),a=n(43807),o=n(74848),i=r.createContext(null);function s(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function c(){var e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){var t=e.component,n=e.props,o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");var s=o[1],c=(0,a.Be)(n);return(0,r.useEffect)(function(){s({component:t,props:c})},[s,t,c]),(0,r.useEffect)(function(){return function(){return s({component:null,props:null})}},[s]),null}},76294(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout(function(){a().start()},200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},77387(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(63662);function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,r.A)(e,t)}},78600(e,t,n){"use strict";var r=n(96540),a=n(5338),o=n(80545),i=n(54625),s=n(4784),c=n(38193);const l=[n(10119),n(26134),n(76294),n(51043)];var u=n(35947),d=n(56347),p=n(22831),f=n(74848);function m(e){var t=e.children;return(0,f.jsx)(f.Fragment,{children:t})}var b=n(14563),h=function(e){return e.defaultFormatter(e)};function g(e){var t=e.children;return(0,f.jsx)(b.AL,{formatter:h,children:t})}function y(e){var t=e.children;return(0,f.jsx)(g,{children:t})}var v=n(5260),w=n(44586),S=n(86025),k=n(6342),_=n(45500),x=n(32131),C=n(14090),A=n(70440),E=n(41463);function T(){var e=(0,w.A)().i18n,t=e.currentLocale,n=e.defaultLocale,r=e.localeConfigs,a=(0,x.o)(),o=r[t].htmlLang,i=function(e){return e.replace("-","_")};return(0,f.jsxs)(v.A,{children:[Object.entries(r).map(function(e){var t=e[0],n=e[1].htmlLang;return(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)}),(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:i(o)}),Object.values(r).filter(function(e){return o!==e.htmlLang}).map(function(e){return(0,f.jsx)("meta",{property:"og:locale:alternate",content:i(e.htmlLang)},"meta-og-"+e.htmlLang)})]})}function P(e){var t=e.permalink,n=(0,w.A)().siteConfig.url,r=function(){var e=(0,w.A)().siteConfig,t=e.url,n=e.baseUrl,r=e.trailingSlash,a=(0,d.zy)().pathname;return t+(0,A.Ks)((0,S.Ay)(a),{trailingSlash:r,baseUrl:n})}(),a=t?""+n+t:r;return(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function R(){var e=(0,w.A)().i18n.currentLocale,t=(0,k.p)(),n=t.metadata,r=t.image;return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:C.w})]}),r&&(0,f.jsx)(_.be,{image:r}),(0,f.jsx)(P,{}),(0,f.jsx)(T,{}),(0,f.jsx)(E.A,{tag:"default",locale:e}),(0,f.jsx)(v.A,{children:n.map(function(e,t){return(0,f.jsx)("meta",Object.assign({},e),t)})})]})}var O=new Map;var L=n(6125),D=n(26988),j=n(77387),N=n(205);function I(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\n Your Docusaurus site did not load properly.
\n A very common reason is a wrong site baseUrl configuration .
\n Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'
\n We suggest trying baseUrl =
\n\n'}(e)).replace(/Z,vd:()=>$});var r=n(96540),a=n(5556),o=n.n(a),i=n(30115),s=n.n(i),c=n(20311),l=n.n(c),u=n(2833),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},g={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map(function(e){return h[e]}),S={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(S).reduce(function(e,t){return e[S[t]]=t,e},{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=_(e,h.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=_(e,"defaultTitle");return t||r||void 0},C=function(e){return _(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return p({},e,t)},{})},E=function(e,t){return t.filter(function(e){return void 0!==e[h.BASE]}).map(function(e){return e[h.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a /g,">").replace(/"/g,""").replace(/'/g,"'")},N=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[S[n]||n]=e[n],t},t)},M=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=S[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=I(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=N(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+j(o,r)+""+e+">":"<"+e+' data-rh="true">'+j(o,r)+""+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return N(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+j(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===D.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+""+e+">")},"")}(e,t,n)}}}},W=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,s=e.title,c=void 0===s?"":s,l=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=O(e.metaTags,v),o=O(t,g),i=O(n,y);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,a.priority),M(h.LINK,o.priority),M(h.SCRIPT,i.priority))},toString:function(){return F(h.META,a.priority,r)+" "+F(h.LINK,o.priority,r)+" "+F(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(h.LINK,u,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,o,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,i,r),title:F(h.TITLE,{title:c,titleAttributes:l},r)}},z=[],B=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=W({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),q="undefined"!=typeof document,$=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new B(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);$.canUseDOM=q,$.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},$.defaultProps={context:{}},$.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),s=0;s=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},K=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,l=e.styleTags,u=e.title,d=e.titleAttributes;G(h.BODY,e.bodyAttributes),G(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),G(h.TITLE,t)}(u,d);var p={baseTag:V(h.BASE,n),linkTags:V(h.LINK,a),metaTags:V(h.META,o),noscriptTags:V(h.NOSCRIPT,i),scriptTags:V(h.SCRIPT,c),styleTags:V(h.STYLE,l)},f={},m={};Object.keys(p).forEach(function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)}),t&&t(),s(e,f,m)},Q=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case h.BODY:return p({},a,{bodyAttributes:p({},o)});case h.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach(function(t){var r;n=p({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return l()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),l()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=b(r,J),s=Object.keys(i).reduce(function(e,t){return e[k[t]||t]=i[t],e},{}),c=e.type;switch("symbol"==typeof c?c=c.toString():n.warnOnInvalidChildren(e,o),c){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:s,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=b(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof B||(o=new B(o.context,o.instances)),o?r.createElement(Y,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(Y,p({},a,{context:e}))})},t}(r.Component);Z.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},Z.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},Z.displayName="Helmet"},84054(e){"use strict";e.exports=JSON.parse('{"/-2bc":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"f3976560"},"/-df5":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/-3c1":{"__comp":"a7bd4aaa","__props":"22dd74f7"},"/-2c5":{"__comp":"a94703ab"},"/actions/-de1":{"__comp":"17896441","content":"82cc2a82"},"/actions/ai/BarcodeDetector-d61":{"__comp":"17896441","content":"94410964"},"/actions/ai/DocumentOrientation-e5f":{"__comp":"17896441","content":"fa69c6c7"},"/actions/ai/ImageClassification-155":{"__comp":"17896441","content":"576dd253"},"/actions/ai/ObjectDetection-f21":{"__comp":"17896441","content":"b6b89913"},"/actions/ai/QRCode-555":{"__comp":"17896441","content":"cf309091"},"/actions/ai/TextDetection-407":{"__comp":"17896441","content":"fef7646d"},"/actions/ai/TextExtract-e40":{"__comp":"17896441","content":"0212239c"},"/actions/ai/TextlineOrientation-c38":{"__comp":"17896441","content":"27fa455d"},"/actions/ai/TextRecognition-505":{"__comp":"17896441","content":"94123fed"},"/actions/ai/TextUnwarping-fbc":{"__comp":"17896441","content":"bea4efb0"},"/actions/algorithm/AccessArray-67e":{"__comp":"17896441","content":"2a6faa44"},"/actions/algorithm/AccessKey-58b":{"__comp":"17896441","content":"883064d3"},"/actions/algorithm/ArraySize-5fa":{"__comp":"17896441","content":"3c431fb6"},"/actions/algorithm/CalculateCenter-aa3":{"__comp":"17896441","content":"09337f79"},"/actions/algorithm/ColorPercentage-f54":{"__comp":"17896441","content":"81c0f6a3"},"/actions/algorithm/ConvertPoint-a0f":{"__comp":"17896441","content":"1f01b39d"},"/actions/algorithm/FilterArea-443":{"__comp":"17896441","content":"4eb4152e"},"/actions/algorithm/FilterEllipse-6ac":{"__comp":"17896441","content":"f1d4c9a0"},"/actions/algorithm/FilterPerimeter-3ba":{"__comp":"17896441","content":"c39068ad"},"/actions/algorithm/FilterText-ab0":{"__comp":"17896441","content":"94572e7e"},"/actions/algorithm/FilterVertex-c0e":{"__comp":"17896441","content":"40220182"},"/actions/algorithm/ImageDifference-c0a":{"__comp":"17896441","content":"77683dff"},"/actions/algorithm/JoinString-754":{"__comp":"17896441","content":"99036c72"},"/actions/algorithm/PopBack-ffc":{"__comp":"17896441","content":"27a8509c"},"/actions/algorithm/PushBack-b88":{"__comp":"17896441","content":"f3b678b6"},"/actions/algorithm/RandomNumber-8f0":{"__comp":"17896441","content":"433c55a6"},"/actions/algorithm/RandomPoint-7aa":{"__comp":"17896441","content":"facd303a"},"/actions/algorithm/SplitString-070":{"__comp":"17896441","content":"d21926c6"},"/actions/algorithm/SubString-bae":{"__comp":"17896441","content":"0ec808d5"},"/actions/android/AdbClearText-b95":{"__comp":"17896441","content":"2bc0974d"},"/actions/android/AdbConnect-390":{"__comp":"17896441","content":"89e4af4d"},"/actions/android/AdbDevices-608":{"__comp":"17896441","content":"84131376"},"/actions/android/AdbForward-256":{"__comp":"17896441","content":"2abf6238"},"/actions/android/AdbInput-e16":{"__comp":"17896441","content":"a88f1ebd"},"/actions/android/AdbInstall-f23":{"__comp":"17896441","content":"0d4f3275"},"/actions/android/AdbIsInstalled-23d":{"__comp":"17896441","content":"290513f2"},"/actions/android/AdbKey-7fe":{"__comp":"17896441","content":"18288a26"},"/actions/android/Adbkeyboard-fef":{"__comp":"17896441","content":"684d2366"},"/actions/android/AdbLs-a0b":{"__comp":"17896441","content":"910e3e10"},"/actions/android/AdbMove-21c":{"__comp":"17896441","content":"40cd0a1c"},"/actions/android/AdbPackages-99e":{"__comp":"17896441","content":"9e34fdd7"},"/actions/android/AdbPull-255":{"__comp":"17896441","content":"3fcd392f"},"/actions/android/AdbPush-e58":{"__comp":"17896441","content":"cb778451"},"/actions/android/AdbScreenCap-ed2":{"__comp":"17896441","content":"1331df9a"},"/actions/android/AdbStartApp-a9f":{"__comp":"17896441","content":"60a8bf25"},"/actions/android/AdbStartServer-ebb":{"__comp":"17896441","content":"dba930b0"},"/actions/android/AdbSwipe-2d5":{"__comp":"17896441","content":"10d535e0"},"/actions/android/AdbTap-7f8":{"__comp":"17896441","content":"be4d577d"},"/actions/asynchronous/WhenEvent-831":{"__comp":"17896441","content":"8e6cf8f9"},"/actions/asynchronous/WorkBegin-ea9":{"__comp":"17896441","content":"30b4eb0d"},"/actions/asynchronous/WorkExit-d20":{"__comp":"17896441","content":"f3ee6f70"},"/actions/asynchronous/WorkReset-982":{"__comp":"17896441","content":"778ec94b"},"/actions/asynchronous/WorkTask-832":{"__comp":"17896441","content":"9c8a47b3"},"/actions/asynchronous/WorkThread-f28":{"__comp":"17896441","content":"c3cadfde"},"/actions/asynchronous/WorkTimer-707":{"__comp":"17896441","content":"0bc633eb"},"/actions/asynchronous/WorkWait-eaa":{"__comp":"17896441","content":"34d0da52"},"/actions/cloud/BaiduTranslate-81b":{"__comp":"17896441","content":"f7819998"},"/actions/control/ActionAlias-494":{"__comp":"17896441","content":"061434a1"},"/actions/control/ArithmeticCalculate-bf9":{"__comp":"17896441","content":"ed1903fd"},"/actions/control/Break-024":{"__comp":"17896441","content":"dbe77fb8"},"/actions/control/Code-b82":{"__comp":"17896441","content":"30118e18"},"/actions/control/CodeExpression-0cb":{"__comp":"17896441","content":"58daed0f"},"/actions/control/Exit-782":{"__comp":"17896441","content":"c1669ff7"},"/actions/control/For-c4e":{"__comp":"17896441","content":"7749c7f8"},"/actions/control/GroupAction-67a":{"__comp":"17896441","content":"b5b936be"},"/actions/control/If-624":{"__comp":"17896441","content":"f8680b75"},"/actions/control/Invoke-aaa":{"__comp":"17896441","content":"af5bc67d"},"/actions/control/IsEmpty-cac":{"__comp":"17896441","content":"8961866f"},"/actions/control/LoggingControl-9e6":{"__comp":"17896441","content":"dd83d3bd"},"/actions/control/LogicalOperator-880":{"__comp":"17896441","content":"fa56a6e6"},"/actions/control/NameAlias-bf6":{"__comp":"17896441","content":"0980b9ce"},"/actions/control/Param-06c":{"__comp":"17896441","content":"51a5c9ab"},"/actions/control/RelationalOperator-0c8":{"__comp":"17896441","content":"ada325a7"},"/actions/control/SoftwareTrigger-06a":{"__comp":"17896441","content":"eee4257b"},"/actions/detection/BlobDetect-073":{"__comp":"17896441","content":"d4eb02dc"},"/actions/detection/EllipseDetection-e0d":{"__comp":"17896441","content":"ca9336c6"},"/actions/detection/FeatureDetect-eae":{"__comp":"17896441","content":"1f34ba25"},"/actions/detection/FindContours-e24":{"__comp":"17896441","content":"7341088b"},"/actions/detection/ImageColorDiscrimination-a3f":{"__comp":"17896441","content":"eda5dccf"},"/actions/detection/LineDetection-fae":{"__comp":"17896441","content":"83e499fe"},"/actions/detection/MatchImage-c69":{"__comp":"17896441","content":"0bf2ca3e"},"/actions/detection/MatchShapes-3f8":{"__comp":"17896441","content":"d6f66b7f"},"/actions/detection/MatchTemplate-89b":{"__comp":"17896441","content":"c5eb1178"},"/actions/detection/ShapeDetection-b52":{"__comp":"17896441","content":"25df2653"},"/actions/draw/BarcodeCreate-7f3":{"__comp":"17896441","content":"4080d162"},"/actions/draw/DrawImage-494":{"__comp":"17896441","content":"18c03fd4"},"/actions/draw/DrawRect-4ce":{"__comp":"17896441","content":"62e40fd5"},"/actions/draw/DrawText-abc":{"__comp":"17896441","content":"a98cfe02"},"/actions/draw/FillColor-e48":{"__comp":"17896441","content":"13441d96"},"/actions/filesystem/CopyFile-014":{"__comp":"17896441","content":"3a46aa88"},"/actions/filesystem/DirectoryIterator-c3e":{"__comp":"17896441","content":"d826ca10"},"/actions/filesystem/FileQuery-4a2":{"__comp":"17896441","content":"46ad04df"},"/actions/filesystem/FileRead-94a":{"__comp":"17896441","content":"60e84239"},"/actions/filesystem/FileWrite-3eb":{"__comp":"17896441","content":"f5237899"},"/actions/filesystem/ImageLoad-5fa":{"__comp":"17896441","content":"45ead4a3"},"/actions/filesystem/ImageSave-98e":{"__comp":"17896441","content":"0f5d837d"},"/actions/filesystem/ReadLines-8c9":{"__comp":"17896441","content":"eb4fdae9"},"/actions/filesystem/StandardPath-1aa":{"__comp":"17896441","content":"7a1044ed"},"/actions/image/AdaptiveThreshold-f0e":{"__comp":"17896441","content":"64ea7d96"},"/actions/image/CenterCropImage-a89":{"__comp":"17896441","content":"032a8fd6"},"/actions/image/ConnectedComponents-cce":{"__comp":"17896441","content":"3a1d971a"},"/actions/image/CropImage-edd":{"__comp":"17896441","content":"8cd487c1"},"/actions/image/CvtColor-b42":{"__comp":"17896441","content":"e9c7f8a9"},"/actions/image/ImageBlur-a1e":{"__comp":"17896441","content":"aad46fb4"},"/actions/image/ImageCanny-aeb":{"__comp":"17896441","content":"ea4f5a63"},"/actions/image/ImageInRange-a51":{"__comp":"17896441","content":"f9782496"},"/actions/image/ImageMarkRelativeROI-799":{"__comp":"17896441","content":"a22048ef"},"/actions/image/ImageMarkROI-c8b":{"__comp":"17896441","content":"63b5dde9"},"/actions/image/ImageMean-347":{"__comp":"17896441","content":"71149d5b"},"/actions/image/ImageMorphological-921":{"__comp":"17896441","content":"5c209aed"},"/actions/image/ImageNormalize-00b":{"__comp":"17896441","content":"3eeb5aee"},"/actions/image/ImageRotate-b0a":{"__comp":"17896441","content":"80006b16"},"/actions/image/ImageScale-23c":{"__comp":"17896441","content":"86c35d0f"},"/actions/image/ImageStd-172":{"__comp":"17896441","content":"c7312164"},"/actions/image/ImageThreshold-435":{"__comp":"17896441","content":"3263f751"},"/actions/image/ResizeImage-d07":{"__comp":"17896441","content":"b2da3cbd"},"/actions/keyboard/ListenKeyboard-aa6":{"__comp":"17896441","content":"a47b36ae"},"/actions/keyboard/PressAndReleaseKey-989":{"__comp":"17896441","content":"1678dd93"},"/actions/keyboard/PressKey-83e":{"__comp":"17896441","content":"62b2ad38"},"/actions/keyboard/ReleaseKey-e79":{"__comp":"17896441","content":"2173202d"},"/actions/keyboard/SendKey-829":{"__comp":"17896441","content":"38abf38a"},"/actions/keyboard/SendText-f7e":{"__comp":"17896441","content":"7fd7b5de"},"/actions/keyboard/WaitKey-450":{"__comp":"17896441","content":"83fbfac1"},"/actions/media/CaptureActiveWindow-a59":{"__comp":"17896441","content":"dfa6ba64"},"/actions/media/CaptureScreen-638":{"__comp":"17896441","content":"3cce24d2"},"/actions/media/CaptureWindow-f70":{"__comp":"17896441","content":"bbc2e165"},"/actions/media/MediaPlay-a04":{"__comp":"17896441","content":"059d8493"},"/actions/media/PixelPoint-7a1":{"__comp":"17896441","content":"e6e87780"},"/actions/media/PlayRecord-36d":{"__comp":"17896441","content":"a2f6a364"},"/actions/media/VideoFrame-ee2":{"__comp":"17896441","content":"5e703ad2"},"/actions/method/SubString-803":{"__comp":"17896441","content":"ce1aae31"},"/actions/mouse/CellClick-5cb":{"__comp":"17896441","content":"3665c3a7"},"/actions/mouse/CellMove-5b4":{"__comp":"17896441","content":"c9aa14d0"},"/actions/mouse/Click-0b8":{"__comp":"17896441","content":"c24cc4b0"},"/actions/mouse/DoubleClick-a4d":{"__comp":"17896441","content":"e0d539eb"},"/actions/mouse/DragPointer-072":{"__comp":"17896441","content":"d914c017"},"/actions/mouse/ListenMouse-25e":{"__comp":"17896441","content":"0f8264b8"},"/actions/mouse/MoveClick-a66":{"__comp":"17896441","content":"0ec53efb"},"/actions/mouse/MoveDoubleClick-8b7":{"__comp":"17896441","content":"5f2fd1a9"},"/actions/mouse/MoveOffset-afa":{"__comp":"17896441","content":"aa7a3905"},"/actions/mouse/MovePointer-bc3":{"__comp":"17896441","content":"2841f9ad"},"/actions/mouse/RightClick-9ab":{"__comp":"17896441","content":"974cc26a"},"/actions/mouse/WheelMouse-1c2":{"__comp":"17896441","content":"64eff16a"},"/actions/network/DomainQuery-ec5":{"__comp":"17896441","content":"c573da8d"},"/actions/network/HttpDownload-d90":{"__comp":"17896441","content":"28f48a63"},"/actions/network/HttpGet-56a":{"__comp":"17896441","content":"88d8710b"},"/actions/network/HttpHead-690":{"__comp":"17896441","content":"eb430867"},"/actions/network/HttpPost-f7b":{"__comp":"17896441","content":"d49b977a"},"/actions/network/NetworkConnect-ef4":{"__comp":"17896441","content":"9820784b"},"/actions/network/NetworkListen-1c6":{"__comp":"17896441","content":"4a5dd931"},"/actions/network/NetworkReceive-29e":{"__comp":"17896441","content":"0ee1e4b3"},"/actions/network/NetworkSend-021":{"__comp":"17896441","content":"98633dcf"},"/actions/network/ReceiveInput-7ee":{"__comp":"17896441","content":"39230bb1"},"/actions/network/SendInput-7f8":{"__comp":"17896441","content":"22dfc6a7"},"/actions/network/VideoDownload-19a":{"__comp":"17896441","content":"ee28a15e"},"/actions/pandas/DataFrameQuery-f7e":{"__comp":"17896441","content":"d0f60e26"},"/actions/pandas/IndexLoc-35b":{"__comp":"17896441","content":"95f89245"},"/actions/pandas/IterRow-1e2":{"__comp":"17896441","content":"f1bef415"},"/actions/pandas/LoadDocument-44b":{"__comp":"17896441","content":"38933497"},"/actions/pandas/NameLoc-e5d":{"__comp":"17896441","content":"c944caa7"},"/actions/pandas/RowsCount-2a6":{"__comp":"17896441","content":"b1b30f45"},"/actions/pandas/SaveDocument-9c0":{"__comp":"17896441","content":"3b631c40"},"/actions/system/AttachProcess-148":{"__comp":"17896441","content":"f07e35b5"},"/actions/system/CallMethod-35a":{"__comp":"17896441","content":"230606ec"},"/actions/system/ClipboardValue-1e7":{"__comp":"17896441","content":"bbbd4026"},"/actions/system/CloseHandle-7e2":{"__comp":"17896441","content":"f95f1e67"},"/actions/system/CreateObject-423":{"__comp":"17896441","content":"1021b3e1"},"/actions/system/ExistProcess-2c8":{"__comp":"17896441","content":"2ffce192"},"/actions/system/KillProcess-1ce":{"__comp":"17896441","content":"9e49c817"},"/actions/system/LaunchFile-f1c":{"__comp":"17896441","content":"ff6bd792"},"/actions/system/OpenApplication-217":{"__comp":"17896441","content":"7e4a9697"},"/actions/system/OpenUrl-37d":{"__comp":"17896441","content":"42629af2"},"/actions/system/PrintMessage-bdd":{"__comp":"17896441","content":"487a2aaa"},"/actions/system/ReadMemory-e15":{"__comp":"17896441","content":"17e0084b"},"/actions/system/Runas-e4f":{"__comp":"17896441","content":"87fa0c25"},"/actions/system/StartProcess-367":{"__comp":"17896441","content":"769da076"},"/actions/system/SuspendSystem-ecc":{"__comp":"17896441","content":"72897e86"},"/actions/system/UserAdd-bdf":{"__comp":"17896441","content":"74823882"},"/actions/system/Wait-6d7":{"__comp":"17896441","content":"468614a2"},"/actions/system/WriteMemory-30d":{"__comp":"17896441","content":"e0344989"},"/actions/type/TypeBoolean-8ba":{"__comp":"17896441","content":"c8bcf195"},"/actions/type/TypeCamera-8ea":{"__comp":"17896441","content":"4081cae1"},"/actions/type/TypeColor-38b":{"__comp":"17896441","content":"56b0f055"},"/actions/type/TypeDict-f70":{"__comp":"17896441","content":"04b91dad"},"/actions/type/TypeEvent-ab2":{"__comp":"17896441","content":"c6e203ae"},"/actions/type/TypeFile-121":{"__comp":"17896441","content":"ea6a74ef"},"/actions/type/TypeHostAddress-70d":{"__comp":"17896441","content":"b0849985"},"/actions/type/TypeJson-972":{"__comp":"17896441","content":"5bef61ed"},"/actions/type/TypeList-6bb":{"__comp":"17896441","content":"ace22e47"},"/actions/type/TypeModel-7b4":{"__comp":"17896441","content":"55fd45cc"},"/actions/type/TypeNumber-0ce":{"__comp":"17896441","content":"1f01c7aa"},"/actions/type/TypePassword-8e0":{"__comp":"17896441","content":"0cabcdc4"},"/actions/type/TypePath-525":{"__comp":"17896441","content":"ab9fb3f6"},"/actions/type/TypePoint-683":{"__comp":"17896441","content":"88249bb4"},"/actions/type/TypePtr-a01":{"__comp":"17896441","content":"880cebae"},"/actions/type/TypeRect-4eb":{"__comp":"17896441","content":"62b2503f"},"/actions/type/TypeResource-be8":{"__comp":"17896441","content":"98432c7c"},"/actions/type/TypeScalar-684":{"__comp":"17896441","content":"0c40b40f"},"/actions/type/TypeShortcut-fe8":{"__comp":"17896441","content":"f61e0f25"},"/actions/type/TypeSlice-885":{"__comp":"17896441","content":"201d17a9"},"/actions/type/TypeString-498":{"__comp":"17896441","content":"e311b3b3"},"/actions/type/TypeStrings-8b9":{"__comp":"17896441","content":"356a587e"},"/actions/type/TypeTuple-bcf":{"__comp":"17896441","content":"83e4a324"},"/actions/type/TypeUrl-716":{"__comp":"17896441","content":"a6f932f1"},"/actions/web/WebActionChainsPerform-7aa":{"__comp":"17896441","content":"109487e7"},"/actions/web/WebActionClick-105":{"__comp":"17896441","content":"89381d3f"},"/actions/web/WebActionClickHold-10d":{"__comp":"17896441","content":"306771eb"},"/actions/web/WebActionDoubleClick-a86":{"__comp":"17896441","content":"736b570d"},"/actions/web/WebActionDragDrop-653":{"__comp":"17896441","content":"ba8bf9cc"},"/actions/web/WebActionKeyDown-184":{"__comp":"17896441","content":"4ffb60b2"},"/actions/web/WebActionKeyUp-036":{"__comp":"17896441","content":"764653a2"},"/actions/web/WebActionMoveTo-31e":{"__comp":"17896441","content":"88654f99"},"/actions/web/WebActionPause-86c":{"__comp":"17896441","content":"57a3676d"},"/actions/web/WebActionRelease-2af":{"__comp":"17896441","content":"dcec5f39"},"/actions/web/WebActionSendText-35c":{"__comp":"17896441","content":"3019a594"},"/actions/web/WebCookies-add":{"__comp":"17896441","content":"a53b049e"},"/actions/web/WebElementAttribute-3b7":{"__comp":"17896441","content":"d935e4ef"},"/actions/web/WebElementClear-144":{"__comp":"17896441","content":"916aa548"},"/actions/web/WebElementClick-5fa":{"__comp":"17896441","content":"1bbce3d2"},"/actions/web/WebElementSelected-713":{"__comp":"17896441","content":"f03e7a27"},"/actions/web/WebElementSendKey-87d":{"__comp":"17896441","content":"781830a1"},"/actions/web/WebElementSendText-481":{"__comp":"17896441","content":"af118740"},"/actions/web/WebElementSubmit-878":{"__comp":"17896441","content":"1d96de41"},"/actions/web/WebExecute-cd6":{"__comp":"17896441","content":"52bdabbe"},"/actions/web/WebFocusFrameDefault-495":{"__comp":"17896441","content":"0a8d86d0"},"/actions/web/WebGetElement-b0f":{"__comp":"17896441","content":"8cbcbb20"},"/actions/web/WebOpen-865":{"__comp":"17896441","content":"aa81edee"},"/actions/web/WebScreenshot-e50":{"__comp":"17896441","content":"9154ef34"},"/actions/web/WebSwitchToFrame-8a6":{"__comp":"17896441","content":"90a950a1"},"/actions/web/WebWaitAlert-d48":{"__comp":"17896441","content":"0d4d15f5"},"/actions/web/WebWaitClickable-ef7":{"__comp":"17896441","content":"dfdd5007"},"/actions/web/WebWaitFrameAvailable-d9d":{"__comp":"17896441","content":"7b711a79"},"/actions/web/WebWaitPresence-e8c":{"__comp":"17896441","content":"078dbe59"},"/actions/web/WebWaitTitle-ef1":{"__comp":"17896441","content":"0d15c4d5"},"/actions/web/WebWaitVisibilityByElement-aa6":{"__comp":"17896441","content":"3e81b960"},"/actions/web/WebWaitVisibilityByLocator-4df":{"__comp":"17896441","content":"61bca3ff"},"/actions/window/ActiveWindow-f2c":{"__comp":"17896441","content":"72c8f390"},"/actions/window/CloseWindow-c57":{"__comp":"17896441","content":"90c4d861"},"/actions/window/EnumWindows-62a":{"__comp":"17896441","content":"0b8ee100"},"/actions/window/FindWindow-e49":{"__comp":"17896441","content":"397ac1ef"},"/actions/window/FlashWindow-eee":{"__comp":"17896441","content":"48930afb"},"/actions/window/MessageBox-275":{"__comp":"17896441","content":"9af22f93"},"/actions/window/PositionWindow-576":{"__comp":"17896441","content":"0410b365"},"/actions/window/SpecialWindow-503":{"__comp":"17896441","content":"6267ac91"},"/actions/window/WindowAncestor-a06":{"__comp":"17896441","content":"7005a7a9"},"/actions/window/WindowCaption-196":{"__comp":"17896441","content":"c1d0a1cb"},"/actions/window/WindowPoint-1dc":{"__comp":"17896441","content":"6cd716b7"},"/actions/window/WindowSize-82e":{"__comp":"17896441","content":"47d6f024"},"/actions/window/WindowVisible-ffb":{"__comp":"17896441","content":"0dc82375"},"/actions/window/WindowXy-bf9":{"__comp":"17896441","content":"321eb707"},"/actions/window/WinRun-600":{"__comp":"17896441","content":"c7acce28"},"/CHANGELOG-cce":{"__comp":"17896441","content":"fec66055"},"/enums/AncestorWindow-39b":{"__comp":"17896441","content":"a0fcff00"},"/enums/BARCODE_Encoding-911":{"__comp":"17896441","content":"8d85f012"},"/enums/BlurOperation-06b":{"__comp":"17896441","content":"e76c4a05"},"/enums/CameraTriggerActivation-196":{"__comp":"17896441","content":"e22a1c9c"},"/enums/CameraTriggerSource-87b":{"__comp":"17896441","content":"0f4758da"},"/enums/CameraType-5ab":{"__comp":"17896441","content":"42ef5008"},"/enums/ColorConversionCodes-5ba":{"__comp":"17896441","content":"4eac9538"},"/enums/Colors-a26":{"__comp":"17896441","content":"03973f1e"},"/enums/ContourApproximationMode-197":{"__comp":"17896441","content":"dbdb57ac"},"/enums/ContourShape-40b":{"__comp":"17896441","content":"a303d90d"},"/enums/CookiesFormat-da3":{"__comp":"17896441","content":"6639e78a"},"/enums/Directions-c87":{"__comp":"17896441","content":"75383206"},"/enums/FeatureAlgorithm-a46":{"__comp":"17896441","content":"cacca115"},"/enums/FileExtension-083":{"__comp":"17896441","content":"707f19c7"},"/enums/GlobOptions-4d9":{"__comp":"17896441","content":"2c8ada7c"},"/enums/HandleType-03c":{"__comp":"17896441","content":"f9bc12e6"},"/enums/KnownFolder-903":{"__comp":"17896441","content":"8b9a221e"},"/enums/KnownWindow-80c":{"__comp":"17896441","content":"31e1e27c"},"/enums/LogicalOperators-9ef":{"__comp":"17896441","content":"0e31fcb5"},"/enums/LogStatus-0ea":{"__comp":"17896441","content":"b00084eb"},"/enums/MessageBoxFlags-362":{"__comp":"17896441","content":"50999547"},"/enums/MessagePlaceMode-d54":{"__comp":"17896441","content":"2b0e8cc3"},"/enums/ModuleOption-f0d":{"__comp":"17896441","content":"e55bb8a8"},"/enums/MorphologicalOperations-1a0":{"__comp":"17896441","content":"94dabad6"},"/enums/MouseButtons-5fb":{"__comp":"17896441","content":"93b80ce7"},"/enums/MouseMessage-997":{"__comp":"17896441","content":"bdadc641"},"/enums/Operations-313":{"__comp":"17896441","content":"f35df58b"},"/enums/Orientation-b6c":{"__comp":"17896441","content":"ee2e9eef"},"/enums/PageSegMode-caf":{"__comp":"17896441","content":"306635cc"},"/enums/PointConvertMethod-990":{"__comp":"17896441","content":"62e4e363"},"/enums/RelationalOperators-5b6":{"__comp":"17896441","content":"0d51f1e4"},"/enums/RelativePosition-652":{"__comp":"17896441","content":"7a8c2003"},"/enums/RetrievalModes-772":{"__comp":"17896441","content":"4ebddb3b"},"/enums/SeverityLevel-8e3":{"__comp":"17896441","content":"a021a78b"},"/enums/SuspendStateOption-473":{"__comp":"17896441","content":"c4117108"},"/enums/ThresholdTypes-e56":{"__comp":"17896441","content":"f66fa4ad"},"/enums/Visibility-f57":{"__comp":"17896441","content":"e16c7c0f"},"/enums/WebKey-682":{"__comp":"17896441","content":"8248f80c"},"/enums/WebLocated-55d":{"__comp":"17896441","content":"639c9278"},"/enums/WindowHandle-150":{"__comp":"17896441","content":"116d2042"},"/enums/WindowSortDirection-ac4":{"__comp":"17896441","content":"8f5bac6f"},"/enums/WorkState-3d8":{"__comp":"17896441","content":"9883381c"},"/introduction/-8e1":{"__comp":"17896441","content":"ab602bb8"},"/introduction/android/uiautomatorviewer-e4c":{"__comp":"17896441","content":"cf086379"},"/introduction/installation/installed_by_exe-07a":{"__comp":"17896441","content":"7010493b"},"/introduction/installation/installed_by_msix-87c":{"__comp":"17896441","content":"b55d6ab4"},"/introduction/installation/question/quest1-5d1":{"__comp":"17896441","content":"e7e28ddd"},"/introduction/installation/question/quest2-8b1":{"__comp":"17896441","content":"c424764f"},"/introduction/mixed/CUDA-e3a":{"__comp":"17896441","content":"f2765b18"},"/introduction/mixed/cuDNN-3a7":{"__comp":"17896441","content":"2a9402cc"},"/introduction/mixed/glob-745":{"__comp":"17896441","content":"5f797784"},"/introduction/mixed/paddle2onnx-996":{"__comp":"17896441","content":"d013a24a"},"/introduction/mixed/wildcard-68d":{"__comp":"17896441","content":"600bf387"},"/introduction/setting/action_group_setting-7e5":{"__comp":"17896441","content":"d6c12311"},"/introduction/setting/workflow-90b":{"__comp":"17896441","content":"6440a0ce"},"/introduction/tesseract/Data-Files-475":{"__comp":"17896441","content":"68bb25ac"},"/introduction/tesseract/Languages_Scripts-635":{"__comp":"17896441","content":"d089b069"},"/introduction/tesseract/tesstrain-cab":{"__comp":"17896441","content":"1c542be1"},"/introduction/webdriver/browser_directory-8bf":{"__comp":"17896441","content":"ed56694a"},"/introduction/webdriver/download-de1":{"__comp":"17896441","content":"0b9df12d"},"/introduction/webdriver/locators-2e1":{"__comp":"17896441","content":"720d541b"},"/introduction/workflow/action-dae":{"__comp":"17896441","content":"e0374d43"},"/introduction/workflow/features-978":{"__comp":"17896441","content":"588f666f"},"/introduction/workflow/logic-89c":{"__comp":"17896441","content":"15016e8c"},"/introduction/workflow/property-c9a":{"__comp":"17896441","content":"77bf62f7"},"/introduction/workflow/record-3ab":{"__comp":"17896441","content":"704d5239"},"/introduction/workflow/resources-d36":{"__comp":"17896441","content":"7bd93074"},"/introduction/workflow/variable-5cf":{"__comp":"17896441","content":"8a2bdc1a"},"/network/openwrt_dns-cf2":{"__comp":"17896441","content":"9565d4d4"},"/types/ActionChains-673":{"__comp":"17896441","content":"31fcb2aa"},"/types/Boolean-abb":{"__comp":"17896441","content":"294a53a6"},"/types/Bytes-4ef":{"__comp":"17896441","content":"0f5c8c98"},"/types/ClassificationResult-be7":{"__comp":"17896441","content":"42099df7"},"/types/Color-936":{"__comp":"17896441","content":"18b56e01"},"/types/Contour-75c":{"__comp":"17896441","content":"786d175f"},"/types/DateTime-a2a":{"__comp":"17896441","content":"609835c8"},"/types/DetectionResult-e92":{"__comp":"17896441","content":"0237c019"},"/types/Dict-b2e":{"__comp":"17896441","content":"22555e49"},"/types/Ellipse-6f7":{"__comp":"17896441","content":"121382ad"},"/types/File-01e":{"__comp":"17896441","content":"2b777a81"},"/types/HostAddress-4dc":{"__comp":"17896441","content":"e4ef92be"},"/types/Image-712":{"__comp":"17896441","content":"1216816d"},"/types/IOContext-8be":{"__comp":"17896441","content":"7d5117ea"},"/types/JsonArray-588":{"__comp":"17896441","content":"ed73d21f"},"/types/JsonValue-d7a":{"__comp":"17896441","content":"8c17bc8f"},"/types/Keyboard-44f":{"__comp":"17896441","content":"57fc64d8"},"/types/KeySequence-fc3":{"__comp":"17896441","content":"76109574"},"/types/Line-232":{"__comp":"17896441","content":"a17e8022"},"/types/List-78a":{"__comp":"17896441","content":"f22dbe6f"},"/types/ModelSession-5fc":{"__comp":"17896441","content":"21d46690"},"/types/Number-7c0":{"__comp":"17896441","content":"dd5198c7"},"/types/Object-493":{"__comp":"17896441","content":"b89e6e3b"},"/types/Path-171":{"__comp":"17896441","content":"808197dd"},"/types/Point-6be":{"__comp":"17896441","content":"aa4c57da"},"/types/Ptr-8ff":{"__comp":"17896441","content":"6623a0fc"},"/types/Range-0af":{"__comp":"17896441","content":"f1a2411e"},"/types/RecognitionResult-05c":{"__comp":"17896441","content":"8e619b65"},"/types/Rect-25a":{"__comp":"17896441","content":"db12e468"},"/types/RotatedRect-3f9":{"__comp":"17896441","content":"dc89e34e"},"/types/Scalar-f55":{"__comp":"17896441","content":"5620466c"},"/types/Size-864":{"__comp":"17896441","content":"0dfd4ae5"},"/types/Slice-d13":{"__comp":"17896441","content":"3fc6fb20"},"/types/String-c96":{"__comp":"17896441","content":"8619de90"},"/types/TCPServer-8ef":{"__comp":"17896441","content":"ffbc1d06"},"/types/TCPSocket-a5a":{"__comp":"17896441","content":"0c2ef554"},"/types/Thread-3f7":{"__comp":"17896441","content":"1c1b8080"},"/types/Timer-440":{"__comp":"17896441","content":"ae1d8c28"},"/types/TimeSpan-d1b":{"__comp":"17896441","content":"5e63bbf1"},"/types/Tuple-70e":{"__comp":"17896441","content":"6fef7e09"},"/types/UDPSocket-7ae":{"__comp":"17896441","content":"c88124db"},"/types/Url-b69":{"__comp":"17896441","content":"c479f042"},"/types/VideoCapture-980":{"__comp":"17896441","content":"1da30b24"},"/types/WebDriver-fdf":{"__comp":"17896441","content":"69ebee62"},"/types/WebElement-f1a":{"__comp":"17896441","content":"53bdc2e5"},"/types/WinEvent-a78":{"__comp":"17896441","content":"313d090e"},"/types/WinInput-47f":{"__comp":"17896441","content":"4840c358"},"/types/Wnd-dd2":{"__comp":"17896441","content":"ddf7038f"},"/-c95":{"__comp":"17896441","content":"f7e3462c"}}')},86025(e,t,n){"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(96540),a=n(44586),o=n(16654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=e.future.experimental_router,s=(0,r.useCallback)(function(e,r){return function(e){var t=e.siteUrl,n=e.baseUrl,r=e.url,a=e.options,i=void 0===a?{}:a,s=i.forcePrependBaseUrl,c=void 0!==s&&s,l=i.absolute,u=void 0!==l&&l,d=e.router;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===d)return r.startsWith("/")?"."+r:"./"+r;if(c)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;var p=r.startsWith(n)?r:n+r.replace(/^\//,"");return u?t+p:p}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})},[n,t,i]);return{withBaseUrl:s}}function s(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},86921(e,t,n){"use strict";n.d(t,{A:()=>r});function r(e){var t={};return function e(n,r){Object.entries(n).forEach(function(n){var a,o=n[0],i=n[1],s=r?r+"."+o:o;"object"==typeof(a=i)&&a&&Object.keys(a).length>0?e(i,s):t[s]=i})}(e),t}},92303(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},95293(e,t,n){"use strict";n.d(t,{G:()=>k,a:()=>S});var r=n(96540),a=n(92303),o=n(43807),i=n(70679),s=n(6342),c=n(74848);function l(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function u(e){return t="(prefers-color-scheme: dark)",n=function(){return e(l())},(r=window.matchMedia(t)).addEventListener("change",n),function(){return r.removeEventListener("change",n)};var t,n,r}var d=r.createContext(void 0),p=(0,i.Wf)("theme"),f="system",m=function(e){return"dark"===e?"dark":"light"},b=function(e){return null===e||e===f?null:m(e)},h=function(){return m(document.documentElement.getAttribute("data-theme"))},g=function(e){document.documentElement.setAttribute("data-theme",m(e))},y=function(){return b(document.documentElement.getAttribute("data-theme-choice"))},v=function(e){var t;document.documentElement.setAttribute("data-theme-choice",null!=(t=b(e))?t:f)};function w(){var e=(0,s.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,o=e.respectPrefersColorScheme,i=function(){var e=(0,s.p)().colorMode.defaultMode,t=(0,a.A)(),n=(0,r.useState)(t?h():e),o=n[0],i=n[1],c=(0,r.useState)(t?y():null),l=c[0],u=c[1];return(0,r.useEffect)(function(){i(h()),u(y())},[]),{colorMode:o,setColorModeState:i,colorModeChoice:l,setColorModeChoiceState:u}}(),c=i.colorMode,d=i.setColorModeState,f=i.colorModeChoice,w=i.setColorModeChoiceState;(0,r.useEffect)(function(){n&&p.del()},[n]);var S=(0,r.useCallback)(function(e,n){void 0===n&&(n={});var r=n.persist,a=void 0===r||r;if(null===e){var i=o?l():t;g(i),d(i),v(null),w(null)}else g(e),v(e),d(e),w(e);a&&function(e){null===e?p.del():p.set(m(e))}(e)},[d,w,o,t]);return(0,r.useEffect)(function(){return p.listen(function(e){S(b(e.newValue))})},[S]),(0,r.useEffect)(function(){if(null===f&&o)return u(function(e){d(e),g(e)})},[o,f,d]),(0,r.useMemo)(function(){return{colorMode:c,colorModeChoice:f,setColorMode:S,get isDarkTheme(){return"dark"===c},setLightTheme:function(){S("light")},setDarkTheme:function(){S("dark")}}},[c,f,S])}function S(e){var t=e.children,n=w();return(0,c.jsx)(d.Provider,{value:n,children:t})}function k(){var e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},96540(e,t,n){"use strict";e.exports=n(29869)},98380(e){"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var s={},c=e[r];if(c){function l(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in a(t,o),s[t]=!0,n[t])s[i]=!0}t(c.require,l),t(c.optional,l),t(c.modify,l)}n[r]=s,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,s){var c=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),l=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a})}return n[r]||r}}(c);i=i.map(l),s=(s||[]).map(l);var u=n(i),d=n(s);i.forEach(function e(n){var r=c[n];t(r&&r.require,function(t){t in d||(u[t]=!0,e(t))})});for(var p,f=r(c),m=u;a(m);){for(var b in p={},m){var h=c[b];t(h&&h.modify,function(e){e in d&&(p[e]=!0)})}for(var g in d)if(!(g in u))for(var y in f(g))if(y in u){p[g]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load(function(t){e.push(t)}),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,s={},c={};function l(e){if(e in s)return s[e];c[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map(function(e){var t=l(e);return delete c[e],t}));o?a=o(p,function(){return r(e)}):r(e)}return s[e]=a}for(var u in n)l(u);var d=[];for(var p in c)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},98587(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},99169(e,t,n){"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(96540),a=n(35947),o=n(44586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function s(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)(function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap(function(e){var t;return null!=(t=e.routes)?t:[]}))}(e.routes)}({routes:a.A,baseUrl:e})},[e])}}},e=>{e.O(0,[1869],()=>{return t=78600,e(e.s=t);var t});e.O()}]);
\ No newline at end of file
diff --git a/docs/assets/js/main.c7f9548e.js.LICENSE.txt b/docs/assets/js/main.c7f9548e.js.LICENSE.txt
new file mode 100644
index 00000000..4c963e46
--- /dev/null
+++ b/docs/assets/js/main.c7f9548e.js.LICENSE.txt
@@ -0,0 +1,61 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/**
+ * @license React
+ * react-dom-client.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-dom.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.js
+ *
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/docs/assets/js/runtime~main.1963a0ca.js b/docs/assets/js/runtime~main.1963a0ca.js
new file mode 100644
index 00000000..bfd9ebca
--- /dev/null
+++ b/docs/assets/js/runtime~main.1963a0ca.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,d,f,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(a,d,f,c)=>{if(!d){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every(e=>r.O[e](d[o]))?d.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,f,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;("object"==typeof t||"function"==typeof t)&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach(a=>b[a]=()=>e[a]);return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((a,d)=>(r.f[d](e,a),a),[])),r.u=e=>"assets/js/"+({9:"88d8710b",51:"6fef7e09",59:"609835c8",60:"c573da8d",128:"294a53a6",136:"1216816d",176:"f3976560",182:"30118e18",197:"8d85f012",229:"dcec5f39",241:"dfdd5007",265:"ed73d21f",272:"201d17a9",334:"82cc2a82",350:"0410b365",377:"736b570d",398:"f9782496",422:"fa69c6c7",432:"0a8d86d0",480:"d935e4ef",532:"9c8a47b3",583:"ed56694a",672:"53bdc2e5",695:"7a1044ed",745:"5f2fd1a9",774:"9154ef34",793:"e0344989",799:"ed1903fd",822:"22555e49",829:"2abf6238",880:"1da30b24",962:"8e6cf8f9",1031:"dbdb57ac",1043:"ddf7038f",1048:"7749c7f8",1077:"9820784b",1086:"47d6f024",1134:"51a5c9ab",1147:"38933497",1174:"c8bcf195",1188:"5f797784",1191:"f03e7a27",1196:"99036c72",1235:"a7456010",1238:"ab602bb8",1245:"c424764f",1287:"28f48a63",1289:"0212239c",1312:"dbe77fb8",1339:"0b9df12d",1340:"facd303a",1372:"cb778451",1389:"9e49c817",1471:"d089b069",1502:"f22dbe6f",1521:"6cd716b7",1563:"62b2503f",1567:"22dd74f7",1587:"ee28a15e",1601:"30b4eb0d",1611:"c88124db",1721:"83e4a324",1723:"40cd0a1c",1804:"6623a0fc",1814:"2173202d",1822:"0ec808d5",1831:"f66fa4ad",1832:"46ad04df",1850:"7b711a79",1861:"a021a78b",1884:"bdadc641",1921:"9af22f93",1970:"c3cadfde",1976:"c7312164",1990:"c9aa14d0",2001:"e0374d43",2027:"c1669ff7",2116:"8248f80c",2139:"aa4c57da",2152:"ea4f5a63",2183:"ba8bf9cc",2203:"fec66055",2215:"dba930b0",2254:"eee4257b",2275:"74823882",2281:"bbc2e165",2298:"0ee1e4b3",2329:"03973f1e",2398:"588f666f",2400:"98432c7c",2403:"3c431fb6",2406:"0b8ee100",2432:"72897e86",2498:"eda5dccf",2518:"86c35d0f",2530:"10d535e0",2547:"8961866f",2555:"89381d3f",2556:"0f4758da",2585:"059d8493",2592:"d21926c6",2633:"94123fed",2702:"4080d162",2703:"764653a2",2706:"f07e35b5",2801:"c5eb1178",2851:"880cebae",2893:"a17e8022",3016:"a2f6a364",3047:"8cd487c1",3088:"306635cc",3096:"57fc64d8",3117:"0980b9ce",3154:"e76c4a05",3192:"321eb707",3245:"e55bb8a8",3256:"c24cc4b0",3331:"87fa0c25",3362:"7341088b",3385:"1f01b39d",3401:"4eac9538",3411:"0f8264b8",3499:"50999547",3511:"eb4fdae9",3521:"8619de90",3529:"bbbd4026",3535:"1331df9a",3541:"62e4e363",3572:"8f5bac6f",3622:"3263f751",3660:"56b0f055",3668:"39230bb1",3671:"576dd253",3673:"078dbe59",3687:"62e40fd5",3699:"356a587e",3708:"58daed0f",3741:"3fc6fb20",3752:"b00084eb",3802:"d6f66b7f",3822:"88249bb4",3833:"cf086379",3841:"9e34fdd7",3894:"42099df7",3906:"b0849985",3915:"aad46fb4",3933:"f8680b75",3949:"a0fcff00",4079:"d013a24a",4098:"34d0da52",4104:"1021b3e1",4122:"2bc0974d",4126:"0d4f3275",4208:"974cc26a",4244:"0c40b40f",4252:"76109574",4255:"4ffb60b2",4259:"ae1d8c28",4299:"90a950a1",4309:"468614a2",4311:"3a46aa88",4331:"a98cfe02",4333:"4ebddb3b",4377:"f9bc12e6",4400:"88654f99",4402:"306771eb",4435:"8a2bdc1a",4450:"f95f1e67",4457:"3b631c40",4462:"80006b16",4475:"83fbfac1",4477:"0bf2ca3e",4514:"7d5117ea",4534:"1c1b8080",4589:"aa81edee",4596:"684d2366",4665:"be4d577d",4680:"2c8ada7c",4731:"1678dd93",4754:"6639e78a",4757:"dd83d3bd",4765:"7fd7b5de",4769:"fa56a6e6",4783:"94572e7e",4794:"781830a1",4864:"d826ca10",4895:"0c2ef554",4898:"ace22e47",4928:"ffbc1d06",4951:"7010493b",5037:"3fcd392f",5058:"3eeb5aee",5075:"c39068ad",5088:"e0d539eb",5092:"f35df58b",5107:"63b5dde9",5257:"7bd93074",5269:"e311b3b3",5308:"64eff16a",5358:"52bdabbe",5375:"af118740",5402:"9565d4d4",5431:"18288a26",5455:"769da076",5505:"af5bc67d",5543:"d4eb02dc",5551:"910e3e10",5562:"0ec53efb",5585:"7a8c2003",5587:"e4ef92be",5598:"397ac1ef",5668:"dd5198c7",5740:"4081cae1",5742:"aba21aa0",5775:"c7acce28",5776:"89e4af4d",5788:"5c209aed",5832:"04b91dad",5985:"61bca3ff",5998:"5e703ad2",6029:"18b56e01",6061:"1f391b9e",6129:"1bbce3d2",6139:"72c8f390",6158:"b55d6ab4",6174:"0dfd4ae5",6179:"5bef61ed",6187:"ce1aae31",6244:"aa7a3905",6274:"27a8509c",6319:"b5b936be",6326:"f2765b18",6337:"db12e468",6354:"93b80ce7",6402:"71149d5b",6404:"60e84239",6405:"f7819998",6415:"42629af2",6427:"1f34ba25",6442:"17e0084b",6460:"e6e87780",6475:"116d2042",6491:"8c17bc8f",6517:"3665c3a7",6525:"69ebee62",6530:"639c9278",6562:"48930afb",6574:"9883381c",6578:"22dfc6a7",6590:"6440a0ce",6609:"0d15c4d5",6653:"a22048ef",6656:"dc89e34e",6707:"64ea7d96",6726:"230606ec",6735:"b6b89913",6744:"55fd45cc",6767:"e9c7f8a9",6770:"94410964",6772:"cf309091",6789:"e22a1c9c",6915:"8cbcbb20",6956:"a53b049e",7030:"f5237899",7035:"7e4a9697",7074:"3a1d971a",7098:"a7bd4aaa",7131:"f1d4c9a0",7174:"808197dd",7180:"31fcb2aa",7183:"5e63bbf1",7210:"90c4d861",7219:"c944caa7",7229:"2ffce192",7248:"77bf62f7",7324:"2b777a81",7336:"f61e0f25",7349:"0d51f1e4",7350:"b1b30f45",7402:"2a6faa44",7452:"2841f9ad",7474:"ab9fb3f6",7501:"60a8bf25",7521:"0bc633eb",7542:"d0f60e26",7591:"b89e6e3b",7635:"27fa455d",7683:"704d5239",7693:"62b2ad38",7734:"d6c12311",7747:"bea4efb0",7749:"0f5c8c98",7756:"e16c7c0f",7758:"e7e28ddd",7775:"1f01c7aa",7792:"0237c019",7795:"38abf38a",7857:"ff6bd792",7867:"883064d3",7897:"fef7646d",7898:"31e1e27c",7919:"3e81b960",7939:"42ef5008",7966:"83e499fe",8030:"d49b977a",8085:"a303d90d",8122:"18c03fd4",8170:"f1a2411e",8188:"eb430867",8201:"a6f932f1",8210:"720d541b",8213:"13441d96",8243:"5620466c",8266:"a47b36ae",8302:"0d4d15f5",8330:"25df2653",8359:"98633dcf",8401:"17896441",8412:"45ead4a3",8463:"ada325a7",8559:"0dc82375",8565:"cacca115",8621:"0cabcdc4",8654:"1c542be1",8667:"2b0e8cc3",8681:"f7e3462c",8781:"3cce24d2",8785:"061434a1",8786:"c479f042",8793:"433c55a6",8872:"f1bef415",8952:"4a5dd931",8973:"707f19c7",8975:"032a8fd6",9010:"487a2aaa",9020:"84131376",9034:"a88f1ebd",9044:"c4117108",9048:"a94703ab",9068:"0f5d837d",9083:"09337f79",9123:"21d46690",9145:"3019a594",9183:"95f89245",9184:"6267ac91",9201:"dfa6ba64",9207:"75383206",9208:"0e31fcb5",9221:"f3ee6f70",9260:"d914c017",9262:"c1d0a1cb",9268:"15016e8c",9321:"290513f2",9429:"8b9a221e",9449:"600bf387",9466:"778ec94b",9471:"ca9336c6",9482:"77683dff",9494:"b2da3cbd",9548:"109487e7",9560:"57a3676d",9596:"916aa548",9647:"5e95c892",9682:"4840c358",9691:"8e619b65",9740:"94dabad6",9753:"ee2e9eef",9778:"ea6a74ef",9793:"1d96de41",9803:"81c0f6a3",9808:"40220182",9815:"121382ad",9822:"313d090e",9936:"c6e203ae",9941:"786d175f",9943:"f3b678b6",9957:"7005a7a9",9962:"68bb25ac",9963:"2a9402cc",9969:"4eb4152e"}[e]||e)+"."+{9:"a9deaa5a",51:"3d2309ec",59:"1203fa2f",60:"744aa599",128:"57e176af",136:"8d2d03f4",176:"0fa6522f",182:"4a715476",197:"2f6ef600",229:"89ce60f7",241:"47a0378e",265:"3d48aebb",272:"4855682a",334:"c5332171",350:"8bdfc8d3",377:"7e6a28dd",398:"6634f10f",422:"06e39304",432:"8f47123f",480:"180246e7",532:"3419d477",583:"6d0e12ec",672:"c3ef5667",695:"786f2dce",745:"770d6e58",774:"b1c7a3dc",793:"6c01740d",799:"74b435e7",822:"1e5a9204",829:"b8197d8a",880:"71688776",962:"50ddb75a",1031:"988801e4",1043:"42ee2ea2",1048:"2e3b4ca4",1077:"7c1f1efd",1086:"73354e18",1134:"d2cb1827",1147:"ab1a9a6e",1174:"766e3f70",1188:"468e40ee",1191:"771b23b6",1196:"4998cd63",1235:"1c5894d7",1238:"d6f46796",1245:"b4e7f002",1287:"88da8498",1289:"73e53788",1312:"0424252e",1339:"aed8dcc7",1340:"0a4cccf5",1372:"333e2f86",1389:"bd4281b4",1471:"e317b1ad",1502:"e04a72d6",1521:"af0ec990",1563:"acb8064e",1567:"d96c3e60",1587:"7e042949",1601:"cf7bfe68",1611:"029df39f",1721:"d5e17e4e",1723:"4bcfc01c",1804:"95b1d8e7",1814:"f660e7b9",1822:"e6bbd5c5",1831:"f946be4c",1832:"17e90378",1850:"efc4c80f",1861:"e443aa2b",1884:"0528882c",1921:"e83eba7e",1970:"95bf525a",1976:"369be8f7",1990:"3aa81257",2001:"ee3974ad",2027:"c09ac6d7",2116:"36b7ae60",2139:"bdfe0f5d",2152:"ab5cd250",2183:"3430ab8a",2203:"78cd85e2",2215:"b81ba135",2237:"ac9fad33",2254:"1d5979c3",2275:"b898f34a",2281:"e3ef5b72",2298:"db869268",2329:"d486ace1",2398:"530d8c74",2400:"f2173fb5",2403:"e37dcc12",2406:"fef3dcb4",2432:"ec467546",2498:"3f0e20b4",2518:"b1785e0d",2530:"d85a26be",2547:"5873d22b",2555:"66fbbde5",2556:"19ea7528",2585:"8b111ea7",2592:"d1c280bc",2633:"434eec64",2702:"45b4bec1",2703:"0cdc7316",2706:"3fe45812",2801:"4a99900a",2851:"7eaf5038",2893:"3ece4f2f",3016:"18b04d7a",3047:"1ac09160",3088:"2011bd9b",3096:"8bf5f740",3117:"b2a2dd9a",3154:"22a4eb96",3192:"636eaa36",3245:"d01e4a73",3256:"cb963fe9",3331:"5d5bac42",3362:"47e12e0e",3385:"4b91bccd",3401:"eaefbab0",3411:"16d8e89f",3499:"1d44dfd7",3511:"556838db",3521:"42653f84",3529:"bca668e3",3535:"93dac4eb",3541:"435f9b87",3572:"c1eda8b9",3622:"8a45cfe8",3660:"cb144022",3668:"ea4edcd1",3671:"52fbe47d",3673:"1bb44e13",3687:"72b2605c",3699:"a7996761",3708:"ac2e6ea2",3741:"653e78fd",3752:"9d595158",3802:"5b993a22",3822:"5ca4a1ff",3833:"016a1477",3841:"f27ac9a1",3894:"d8ac3929",3906:"dc60cbda",3915:"8981b102",3933:"f7795a63",3949:"5d1ac812",4079:"fafdd6d3",4098:"5815e933",4104:"9321bc4a",4122:"c32b079b",4126:"24f5c63d",4208:"cc1f4195",4244:"4df0b422",4252:"02a47f4a",4255:"c9bacc73",4259:"75d0c621",4299:"04865975",4309:"082a6fd2",4311:"4b82d0b1",4331:"8c3f88b2",4333:"bda8aa84",4377:"19251382",4400:"eccdf974",4402:"ed00c828",4435:"f4d84e6e",4450:"d35a31fb",4457:"fca76735",4462:"3a69ea47",4475:"676b7ba0",4477:"7e2a6383",4514:"3bf27210",4534:"1b4dbdd7",4589:"b6d98d47",4596:"e38054b3",4665:"2fe48750",4680:"ef3f0008",4731:"68b75bba",4754:"61997b86",4757:"4b022a11",4765:"9905d492",4769:"57a1be14",4783:"d73fcdae",4794:"aad84df2",4864:"58adaaab",4895:"fc436000",4898:"75c210ad",4928:"3253bcb3",4951:"ccd31032",5037:"d2ef4488",5058:"418feaf4",5075:"f9963410",5088:"90874dc2",5092:"3c116079",5107:"998f09c0",5257:"ab9229f8",5269:"bc6e9720",5308:"72103d6e",5358:"9eff2797",5375:"d39a4968",5402:"f468e88f",5431:"e743a6d7",5455:"10c38ee9",5505:"07894976",5543:"f9b988b2",5551:"943c86b4",5562:"fdba94f4",5585:"367fd41e",5587:"ecd4742f",5598:"e6426ff5",5668:"66592dd3",5740:"bf3692b3",5742:"42ec99b5",5775:"01fcee7c",5776:"c6303cee",5788:"a2210e78",5832:"df94f247",5985:"59d7ca1c",5998:"8249f05b",6029:"da84e6a2",6061:"36be4717",6129:"88b77e28",6139:"a634376f",6158:"ed39554d",6174:"6c8fb90d",6179:"4ca30c5c",6187:"1c6d2a6c",6244:"6d367874",6274:"8a4e3f3a",6319:"9ed2a0ed",6326:"d884f72f",6337:"ecabf1bd",6354:"541a60a7",6402:"504e0b8a",6404:"99b8a218",6405:"bfd9f7a4",6415:"27ae73aa",6427:"200f7f63",6442:"f5277bd9",6460:"334d2aa5",6475:"2cd8f1ed",6491:"9f820932",6517:"8a2ed79f",6525:"07f482ad",6530:"082bf3cf",6562:"d6cfb7f9",6574:"57b9fd8f",6578:"f82a1620",6590:"c9d00a7e",6609:"0c12e8c6",6653:"169d330e",6656:"bb4302a4",6707:"a948697f",6726:"ef85fbac",6735:"62151a12",6744:"9d487050",6767:"292f3b55",6770:"4c2c494f",6772:"68c9419d",6789:"da2c849f",6915:"66cbf5b5",6956:"95030d11",7030:"c1d2aee1",7035:"0cdb526e",7074:"2191576b",7098:"e92c7983",7131:"e80c69e0",7174:"04c151d8",7180:"6bd21f67",7183:"1e5f54f2",7210:"f51030e0",7219:"7101b868",7229:"90e7bee0",7248:"4c66d395",7324:"fc90250b",7336:"bd03f6b9",7349:"a4cce97c",7350:"bcdd8eff",7402:"a357e3e8",7452:"7de93931",7474:"952ddc77",7501:"1f2f2b4e",7521:"d72d99ea",7542:"9f5cd4ee",7591:"41635c72",7635:"c15495c5",7683:"fc504c90",7693:"ff68225a",7734:"fea23bf1",7747:"1b68f1fb",7749:"eeaa21ff",7756:"96c172b7",7758:"344bb48c",7775:"a37f57f9",7792:"4c359331",7795:"25c971ca",7857:"3a79bd87",7867:"644f4eab",7897:"0abde35b",7898:"af4ca4fe",7919:"3c208d4c",7939:"95d7fd7b",7966:"b2c392c2",8030:"6bddd747",8085:"a31faac1",8122:"754690c4",8170:"314cc207",8188:"ed41fc5e",8201:"c871c79d",8210:"7bd9cac7",8213:"b8a3395c",8243:"e268d0fd",8266:"5a6409ff",8302:"a2998bd5",8330:"1c8ba8d8",8359:"78d5509a",8401:"6db9ab48",8412:"430c0955",8463:"ec55a7c7",8559:"1660b7a9",8565:"7572a729",8621:"c6218b9b",8654:"d71c38b9",8667:"a45f9c25",8681:"ed02fbed",8781:"69fdbc3e",8785:"47a43109",8786:"fad573e4",8793:"13c869cf",8872:"e33fd072",8952:"bfd85173",8973:"39ca8c2f",8975:"95159f92",9010:"13dc6ace",9020:"43a66da4",9034:"4e21c2c8",9044:"d526427b",9048:"8e1eba0b",9068:"53f1efb2",9083:"385a0ce0",9123:"ac4359f2",9145:"1920ec35",9183:"b32ed842",9184:"33f72e1b",9201:"eda86c87",9207:"e55a4ab9",9208:"c8e8c2f8",9221:"bb5cfc47",9260:"86be7bc3",9262:"9dbb8db9",9268:"b63b2f61",9321:"299b708f",9429:"dd472667",9449:"fb1ee55c",9466:"daca593c",9471:"d9047dcd",9482:"224c241b",9494:"eeaa1e26",9548:"2e2b38b3",9560:"e2941451",9596:"1620ddd7",9647:"c4c89541",9682:"2ea591eb",9691:"e6f51b1a",9740:"f9c28d3a",9753:"95cc9171",9778:"213232a5",9793:"80c5fb76",9803:"d65969d3",9808:"60c6ebab",9815:"dc21093f",9822:"f71df202",9917:"c0906350",9936:"cd0c2dcb",9941:"8b115552",9943:"08737bc1",9957:"9e153b3d",9962:"e7de3860",9963:"16665cbf",9969:"e577aee9"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},c="winui-docs:",r.l=(e,a,d,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach(e=>e(d)),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",38933497:"1147",40220182:"9808",50999547:"3499",74823882:"2275",75383206:"9207",76109574:"4252",84131376:"9020",94410964:"6770","88d8710b":"9","6fef7e09":"51","609835c8":"59",c573da8d:"60","294a53a6":"128","1216816d":"136",f3976560:"176","30118e18":"182","8d85f012":"197",dcec5f39:"229",dfdd5007:"241",ed73d21f:"265","201d17a9":"272","82cc2a82":"334","0410b365":"350","736b570d":"377",f9782496:"398",fa69c6c7:"422","0a8d86d0":"432",d935e4ef:"480","9c8a47b3":"532",ed56694a:"583","53bdc2e5":"672","7a1044ed":"695","5f2fd1a9":"745","9154ef34":"774",e0344989:"793",ed1903fd:"799","22555e49":"822","2abf6238":"829","1da30b24":"880","8e6cf8f9":"962",dbdb57ac:"1031",ddf7038f:"1043","7749c7f8":"1048","9820784b":"1077","47d6f024":"1086","51a5c9ab":"1134",c8bcf195:"1174","5f797784":"1188",f03e7a27:"1191","99036c72":"1196",a7456010:"1235",ab602bb8:"1238",c424764f:"1245","28f48a63":"1287","0212239c":"1289",dbe77fb8:"1312","0b9df12d":"1339",facd303a:"1340",cb778451:"1372","9e49c817":"1389",d089b069:"1471",f22dbe6f:"1502","6cd716b7":"1521","62b2503f":"1563","22dd74f7":"1567",ee28a15e:"1587","30b4eb0d":"1601",c88124db:"1611","83e4a324":"1721","40cd0a1c":"1723","6623a0fc":"1804","2173202d":"1814","0ec808d5":"1822",f66fa4ad:"1831","46ad04df":"1832","7b711a79":"1850",a021a78b:"1861",bdadc641:"1884","9af22f93":"1921",c3cadfde:"1970",c7312164:"1976",c9aa14d0:"1990",e0374d43:"2001",c1669ff7:"2027","8248f80c":"2116",aa4c57da:"2139",ea4f5a63:"2152",ba8bf9cc:"2183",fec66055:"2203",dba930b0:"2215",eee4257b:"2254",bbc2e165:"2281","0ee1e4b3":"2298","03973f1e":"2329","588f666f":"2398","98432c7c":"2400","3c431fb6":"2403","0b8ee100":"2406","72897e86":"2432",eda5dccf:"2498","86c35d0f":"2518","10d535e0":"2530","8961866f":"2547","89381d3f":"2555","0f4758da":"2556","059d8493":"2585",d21926c6:"2592","94123fed":"2633","4080d162":"2702","764653a2":"2703",f07e35b5:"2706",c5eb1178:"2801","880cebae":"2851",a17e8022:"2893",a2f6a364:"3016","8cd487c1":"3047","306635cc":"3088","57fc64d8":"3096","0980b9ce":"3117",e76c4a05:"3154","321eb707":"3192",e55bb8a8:"3245",c24cc4b0:"3256","87fa0c25":"3331","7341088b":"3362","1f01b39d":"3385","4eac9538":"3401","0f8264b8":"3411",eb4fdae9:"3511","8619de90":"3521",bbbd4026:"3529","1331df9a":"3535","62e4e363":"3541","8f5bac6f":"3572","3263f751":"3622","56b0f055":"3660","39230bb1":"3668","576dd253":"3671","078dbe59":"3673","62e40fd5":"3687","356a587e":"3699","58daed0f":"3708","3fc6fb20":"3741",b00084eb:"3752",d6f66b7f:"3802","88249bb4":"3822",cf086379:"3833","9e34fdd7":"3841","42099df7":"3894",b0849985:"3906",aad46fb4:"3915",f8680b75:"3933",a0fcff00:"3949",d013a24a:"4079","34d0da52":"4098","1021b3e1":"4104","2bc0974d":"4122","0d4f3275":"4126","974cc26a":"4208","0c40b40f":"4244","4ffb60b2":"4255",ae1d8c28:"4259","90a950a1":"4299","468614a2":"4309","3a46aa88":"4311",a98cfe02:"4331","4ebddb3b":"4333",f9bc12e6:"4377","88654f99":"4400","306771eb":"4402","8a2bdc1a":"4435",f95f1e67:"4450","3b631c40":"4457","80006b16":"4462","83fbfac1":"4475","0bf2ca3e":"4477","7d5117ea":"4514","1c1b8080":"4534",aa81edee:"4589","684d2366":"4596",be4d577d:"4665","2c8ada7c":"4680","1678dd93":"4731","6639e78a":"4754",dd83d3bd:"4757","7fd7b5de":"4765",fa56a6e6:"4769","94572e7e":"4783","781830a1":"4794",d826ca10:"4864","0c2ef554":"4895",ace22e47:"4898",ffbc1d06:"4928","7010493b":"4951","3fcd392f":"5037","3eeb5aee":"5058",c39068ad:"5075",e0d539eb:"5088",f35df58b:"5092","63b5dde9":"5107","7bd93074":"5257",e311b3b3:"5269","64eff16a":"5308","52bdabbe":"5358",af118740:"5375","9565d4d4":"5402","18288a26":"5431","769da076":"5455",af5bc67d:"5505",d4eb02dc:"5543","910e3e10":"5551","0ec53efb":"5562","7a8c2003":"5585",e4ef92be:"5587","397ac1ef":"5598",dd5198c7:"5668","4081cae1":"5740",aba21aa0:"5742",c7acce28:"5775","89e4af4d":"5776","5c209aed":"5788","04b91dad":"5832","61bca3ff":"5985","5e703ad2":"5998","18b56e01":"6029","1f391b9e":"6061","1bbce3d2":"6129","72c8f390":"6139",b55d6ab4:"6158","0dfd4ae5":"6174","5bef61ed":"6179",ce1aae31:"6187",aa7a3905:"6244","27a8509c":"6274",b5b936be:"6319",f2765b18:"6326",db12e468:"6337","93b80ce7":"6354","71149d5b":"6402","60e84239":"6404",f7819998:"6405","42629af2":"6415","1f34ba25":"6427","17e0084b":"6442",e6e87780:"6460","116d2042":"6475","8c17bc8f":"6491","3665c3a7":"6517","69ebee62":"6525","639c9278":"6530","48930afb":"6562","9883381c":"6574","22dfc6a7":"6578","6440a0ce":"6590","0d15c4d5":"6609",a22048ef:"6653",dc89e34e:"6656","64ea7d96":"6707","230606ec":"6726",b6b89913:"6735","55fd45cc":"6744",e9c7f8a9:"6767",cf309091:"6772",e22a1c9c:"6789","8cbcbb20":"6915",a53b049e:"6956",f5237899:"7030","7e4a9697":"7035","3a1d971a":"7074",a7bd4aaa:"7098",f1d4c9a0:"7131","808197dd":"7174","31fcb2aa":"7180","5e63bbf1":"7183","90c4d861":"7210",c944caa7:"7219","2ffce192":"7229","77bf62f7":"7248","2b777a81":"7324",f61e0f25:"7336","0d51f1e4":"7349",b1b30f45:"7350","2a6faa44":"7402","2841f9ad":"7452",ab9fb3f6:"7474","60a8bf25":"7501","0bc633eb":"7521",d0f60e26:"7542",b89e6e3b:"7591","27fa455d":"7635","704d5239":"7683","62b2ad38":"7693",d6c12311:"7734",bea4efb0:"7747","0f5c8c98":"7749",e16c7c0f:"7756",e7e28ddd:"7758","1f01c7aa":"7775","0237c019":"7792","38abf38a":"7795",ff6bd792:"7857","883064d3":"7867",fef7646d:"7897","31e1e27c":"7898","3e81b960":"7919","42ef5008":"7939","83e499fe":"7966",d49b977a:"8030",a303d90d:"8085","18c03fd4":"8122",f1a2411e:"8170",eb430867:"8188",a6f932f1:"8201","720d541b":"8210","13441d96":"8213","5620466c":"8243",a47b36ae:"8266","0d4d15f5":"8302","25df2653":"8330","98633dcf":"8359","45ead4a3":"8412",ada325a7:"8463","0dc82375":"8559",cacca115:"8565","0cabcdc4":"8621","1c542be1":"8654","2b0e8cc3":"8667",f7e3462c:"8681","3cce24d2":"8781","061434a1":"8785",c479f042:"8786","433c55a6":"8793",f1bef415:"8872","4a5dd931":"8952","707f19c7":"8973","032a8fd6":"8975","487a2aaa":"9010",a88f1ebd:"9034",c4117108:"9044",a94703ab:"9048","0f5d837d":"9068","09337f79":"9083","21d46690":"9123","3019a594":"9145","95f89245":"9183","6267ac91":"9184",dfa6ba64:"9201","0e31fcb5":"9208",f3ee6f70:"9221",d914c017:"9260",c1d0a1cb:"9262","15016e8c":"9268","290513f2":"9321","8b9a221e":"9429","600bf387":"9449","778ec94b":"9466",ca9336c6:"9471","77683dff":"9482",b2da3cbd:"9494","109487e7":"9548","57a3676d":"9560","916aa548":"9596","5e95c892":"9647","4840c358":"9682","8e619b65":"9691","94dabad6":"9740",ee2e9eef:"9753",ea6a74ef:"9778","1d96de41":"9793","81c0f6a3":"9803","121382ad":"9815","313d090e":"9822",c6e203ae:"9936","786d175f":"9941",f3b678b6:"9943","7005a7a9":"9957","68bb25ac":"9962","2a9402cc":"9963","4eb4152e":"9969"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((d,c)=>f=e[a]=[d,c]);d.push(f[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var c=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,f[1](t)}},"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,c,[b,t,o]=d,n=0;if(b.some(a=>0!==e[a])){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n
+
+
+
+
+AncestorWindow | WinUI
+
+
+
+
+
+
+
+
+
+WA_PARENT
+WA_ROOT
+WA_ROOTOWNER
+
+
+
\ No newline at end of file
diff --git a/docs/enums/BARCODE_Encoding/index.html b/docs/enums/BARCODE_Encoding/index.html
new file mode 100644
index 00000000..20844eba
--- /dev/null
+++ b/docs/enums/BARCODE_Encoding/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+BARCODE_Encoding | WinUI
+
+
+
+
+
+
+
+
+
+CODE128
+CODE39
+CODE93
+EAN13
+UPCA
+UPCE
+ITF
+CODABAR
+QR_CODE
+PDF417
+DATA_MATRIX
+
+
+
\ No newline at end of file
diff --git a/docs/enums/BlurOperation/index.html b/docs/enums/BlurOperation/index.html
new file mode 100644
index 00000000..1615d145
--- /dev/null
+++ b/docs/enums/BlurOperation/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+BlurOperation | WinUI
+
+
+
+
+
+
+
+
+
+
+简单模糊(平均值),获取中心像素周围的像素区域,将所有这些像素平均在一起,然后用平均值替换中心像素。
+
+
+
+加权高斯模糊,使用加权平均值,其中更接近中心像素的邻域像素对平均值贡献更多的 权重 。高斯平滑用于去除近似服从高斯分布的噪声。与简单模糊相比,基于此权重,我们将能够保留图像中更多的边缘。使用此方法,图像不会那么模糊,但会更加 自然模糊 。
+
+
+
+中值滤波,此方法在消除椒盐噪声时最为有效。这种类型的噪音正如它听起来的那样:想象一下拍一张照片,把它放在餐桌上,然后在上面撒上盐和胡椒粉。使用中值模糊方法,您可以从图像中去除盐和胡椒。
+
+
+
+双边模糊,模糊方法的目的是减少图像中的噪声和细节。然而,作为一个副作用,我们往往会丢失图像的边缘。为了在保持边缘的同时减少噪音,我们可以使用双边模糊。这种方法的最大缺点是它比平均、高斯和中值模糊方法慢得多。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/CameraTriggerActivation/index.html b/docs/enums/CameraTriggerActivation/index.html
new file mode 100644
index 00000000..c05cf987
--- /dev/null
+++ b/docs/enums/CameraTriggerActivation/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+CameraTriggerActivation | WinUI
+
+
+
+
+
+
+
+enums CameraTriggerActivation
+
+
+上升沿
+
+
+
+下降沿
+
+
+
+高电平
+
+
+
+低电平
+
+
+
\ No newline at end of file
diff --git a/docs/enums/CameraTriggerSource/index.html b/docs/enums/CameraTriggerSource/index.html
new file mode 100644
index 00000000..b5076ae4
--- /dev/null
+++ b/docs/enums/CameraTriggerSource/index.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+CameraTriggerSource | WinUI
+
+
+
+
+
+
+
+
+
+
+非隔离输入(如海康相机)。
+
+
+
+可配置为输入/输出的双向I/O(如LEO系列相机)。
+
+
+
+通过主机发送软件命令触发拍照,优点是配置灵活,但触发速度和精度低于硬件触发
+
+
+
\ No newline at end of file
diff --git a/docs/enums/CameraType/index.html b/docs/enums/CameraType/index.html
new file mode 100644
index 00000000..e8b57e28
--- /dev/null
+++ b/docs/enums/CameraType/index.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+CameraType | WinUI
+
+
+
+
+
+
+
+
+
+
+常见于工业相机接口
+
+
+
+常见于工业相机接口
+
+
+
\ No newline at end of file
diff --git a/docs/enums/ColorConversionCodes/index.html b/docs/enums/ColorConversionCodes/index.html
new file mode 100644
index 00000000..29237648
--- /dev/null
+++ b/docs/enums/ColorConversionCodes/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ColorConversionCodes | WinUI
+
+
+
+
+
+
+
+enums ColorConversionCodes
+
+COLOR_BGR2BGRA
+COLOR_BGRA2BGR
+COLOR_BGR2GRAY
+COLOR_RGB2GRAY
+COLOR_RGBA2GRAY
+
+
+
\ No newline at end of file
diff --git a/docs/enums/Colors/index.html b/docs/enums/Colors/index.html
new file mode 100644
index 00000000..7e6cf282
--- /dev/null
+++ b/docs/enums/Colors/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+Colors | WinUI
+
+
+
+
+
+
+
+
+
+
+黑色,RGB 颜色值(0, 0, 0)
+
+
+
+白色,RGB 颜色值(255, 255, 255)
+
+
+
+红色,RGB 颜色值(255, 0, 0);BGR 颜色值(0, 0, 255)。
+
+
+
+绿色,RGB 颜色值(0, 255, 0)
+
+
+
+蓝色,RGB 颜色值(0, 0, 255);BGR 颜色值(255, 0, 0)。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/ContourApproximationMode/index.html b/docs/enums/ContourApproximationMode/index.html
new file mode 100644
index 00000000..ab9773de
--- /dev/null
+++ b/docs/enums/ContourApproximationMode/index.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+ContourApproximationMode | WinUI
+
+
+
+
+
+
+
+enums ContourApproximationMode
+
轮廓近似方法
+
+
+不使用近似值并返回所有点。
+
+
+
+简单的近似算法,在形状为多边形时效果很好。对于四边形它将返回 4 个点,对于三角形将返回 3 个点,依此类推。
+
+
+
+更精确的近似算法。当形状弯曲且不是简单的多边形时应使用此方法。
+
+
+CHAIN_APPROX_TC89_KCOS
+
+
+与 CHAIN_APPROX_TC89_L1 算法相比,该算法的计算成本更高,并且稍微更准确。当形状是弯曲的并且不是简单的多边形时,应该使用此方法。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/ContourShape/index.html b/docs/enums/ContourShape/index.html
new file mode 100644
index 00000000..eb8960ba
--- /dev/null
+++ b/docs/enums/ContourShape/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ContourShape | WinUI
+
+
+
+
+
+
+
+
+
+
+三角形
+
+
+
+矩形
+
+
+
+正方形
+
+
+
\ No newline at end of file
diff --git a/docs/enums/CookiesFormat/index.html b/docs/enums/CookiesFormat/index.html
new file mode 100644
index 00000000..4557a29b
--- /dev/null
+++ b/docs/enums/CookiesFormat/index.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+CookiesFormat | WinUI
+
+
+
+
+
+
+
+本页总览
+
+
+默认数据类型
+
+
+
+指的是一种文本文件格式,用于存储网络浏览器中的 HTTP Cookies。这种格式最初由 Netscape Navigator 浏览器定义和使用,尽管现在浏览器内部通常使用更复杂的数据库或二进制格式来管理 Cookies,但 Netscape 格式因其简单性,在某些场景下(例如自动化测试、数据导出/导入或调试)仍然被用作一种通用的交换格式。
+
+
"Cookies Netscape 格式" (Cookies Netscape Format) 指的是一种文本文件格式 ,用于存储网络浏览器中的 HTTP Cookies。这种格式最初由 Netscape Navigator 浏览器定义和使用,尽管现在浏览器内部通常使用更复杂的数据库或二进制格式来管理 Cookies,但 Netscape 格式因其简单性,在某些场景下(例如自动化测试、数据导出/导入或调试 )仍然被用作一种通用的交换格式。
+
+
Netscape Cookies 格式的结构
+
在这种格式中,每个 Cookie 都占据文件中的一行 ,并且行的不同字段之间使用 制表符 (tab) 分隔。
+
典型的字段顺序和含义如下:
+
+域 (Domain) : Cookie 有效的域名。
+
+如果以点开头(例如 .example.com),表示该 Cookie 对主域及其所有子域都有效。
+如果不是以点开头(例如 www.example.com),表示该 Cookie 只对该特定主机名有效。
+
+
+标志 (Flag) : 一个布尔值 (TRUE 或 FALSE)。
+
+TRUE 通常表示该 Cookie 是域级别的(即对主域和子域都有效)。
+FALSE 通常表示该 Cookie 是主机级别的(只对特定主机有效)。
+这个字段与域字段的含义有重叠,但在旧的 Netscape 规范中是独立的。
+
+
+路径 (Path) : Cookie 有效的 URL 路径(例如 / 表示对整个网站有效,/blog 表示只对 /blog 路径及其子路径有效)。
+安全 (Secure) : 一个布尔值 (TRUE 或 FALSE)。
+
+TRUE 表示该 Cookie 只能通过安全的 HTTPS 连接发送。
+FALSE 表示可以通过 HTTP 或 HTTPS 连接发送。
+
+
+过期时间 (Expiration) : Cookie 的过期时间,表示为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数)。会话 Cookie(浏览器关闭即失效)可能没有此字段或为 0。
+名称 (Name) : Cookie 的名称(例如 session_id、user_preference)。
+值 (Value) : Cookie 存储的数据值。
+
+
+
Netscape 格式示例
+
以下是一个 Netscape 格式的 Cookie 文件内容示例:
+
.example.com TRUE / FALSE 1735689600 session_id abcde12345 www.google.com FALSE / TRUE 1735689600 PREF ID=a1b2c3d4e5f6 .github.com TRUE /api/ FALSE 1704067200 _gh_sess eyJzZXNzaW9uX2lkIjoiMTIzNDUifQ==
+
+
为什么它仍然相关?
+
尽管现代浏览器已经不再直接使用这种文本文件来存储所有 Cookies,但在以下场景中,"Netscape 格式"的 Cookies 仍然会遇到或被使用:
+
+Selenium WebDriver 或其他自动化工具 : 在进行 Web 自动化测试时,你可能需要从文件中加载 Cookies 以模拟登录状态,或者将当前会话的 Cookies 导出保存。许多工具和脚本会支持或生成这种格式。
+Cookie 编辑器或插件 : 某些浏览器扩展或工具提供了导入/导出 Cookies 的功能,其中就可能包含 Netscape 格式选项。
+调试和分析 : 对于开发者来说,能够以简单、可读的文本格式查看 Cookie 的详细信息有助于调试网络请求和会话管理问题。
+遗留系统或工具 : 某些较旧的系统或特定的网络爬虫可能仍然依赖这种格式来处理 Cookies。
+
+
理解这种格式可以帮助你更好地与这些工具和场景交互,尤其是在需要手动管理或共享 Cookies 信息时。
+
+
\ No newline at end of file
diff --git a/docs/enums/Directions/index.html b/docs/enums/Directions/index.html
new file mode 100644
index 00000000..a85cda94
--- /dev/null
+++ b/docs/enums/Directions/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+Directions | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/FeatureAlgorithm/index.html b/docs/enums/FeatureAlgorithm/index.html
new file mode 100644
index 00000000..ec746e7c
--- /dev/null
+++ b/docs/enums/FeatureAlgorithm/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+FeatureAlgorithm | WinUI
+
+
+
+
+
+
+
+
+
+
+用于检测和描述图像中的局部特征。它对图像缩放、方向和仿射失真具有鲁棒性。在不同尺度的图像中 SIFT 都比 SURF 要好。
+
+
+
+SURF 在旋转不变性、模糊和扭曲变换方面优于 SIFT 。
+
+
+
+比SURF 快的一种检测方法。
+
+
+
+计算速度快,并且对光照和旋转变化具有鲁棒性,ORB 比 SURF 和 SIFT 快得多,而且性能也比 SURF 更好。
+
+
+
+在过滤匹配项并删除异常值之后,与 ORB 相比,AKAZE 呈现出更多数量的正确匹配项。计算速度比 ORB 慢。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/FileExtension/index.html b/docs/enums/FileExtension/index.html
new file mode 100644
index 00000000..90fad795
--- /dev/null
+++ b/docs/enums/FileExtension/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+FileExtension | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/GlobOptions/index.html b/docs/enums/GlobOptions/index.html
new file mode 100644
index 00000000..3556afb5
--- /dev/null
+++ b/docs/enums/GlobOptions/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+GlobOptions | WinUI
+
+
+
+
+
+
+
+
+
+
+默认行为
+
+
+
+* 和 ? 不会匹配 .
+
+
+
+匹配符号链接
+
+
+
+比较字符时忽略大小写
+
+
+
\ No newline at end of file
diff --git a/docs/enums/HandleType/index.html b/docs/enums/HandleType/index.html
new file mode 100644
index 00000000..267ee7b5
--- /dev/null
+++ b/docs/enums/HandleType/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+HandleType | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/KnownFolder/index.html b/docs/enums/KnownFolder/index.html
new file mode 100644
index 00000000..5ddc34ac
--- /dev/null
+++ b/docs/enums/KnownFolder/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+KnownFolder | WinUI
+
+
+
+
+
+
+
+
+
+
+下载 文件夹
+
+
+
+我的文档 文件夹
+
+
+
+本地应用数据 文件夹
+
+
+
+图片 文件夹
+
+
+
+音乐 文件夹
+
+
+
\ No newline at end of file
diff --git a/docs/enums/KnownWindow/index.html b/docs/enums/KnownWindow/index.html
new file mode 100644
index 00000000..5c6f70ee
--- /dev/null
+++ b/docs/enums/KnownWindow/index.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+KnownWindow | WinUI
+
+
+
+
+
+
+
+
+
+Desktop
+
+桌面
+
+
+Forground
+
+前置窗口, 就是系统将创建指定窗口的线程置于前台并激活该窗口。键盘输入被定向到窗口,并且为用户改变各种视觉提示。系统为创建前台窗口的线程分配比其他线程稍高的优先级。
+
+
+TopMost
+
+
+置顶窗口
+
+
+
\ No newline at end of file
diff --git a/docs/enums/LogStatus/index.html b/docs/enums/LogStatus/index.html
new file mode 100644
index 00000000..eb660e53
--- /dev/null
+++ b/docs/enums/LogStatus/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+LogStatus | WinUI
+
+
+
+
+
+
+
+
+
+
+用来启用日志输出。
+
+
+
+用来禁用日志输出。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/LogicalOperators/index.html b/docs/enums/LogicalOperators/index.html
new file mode 100644
index 00000000..9d5140f9
--- /dev/null
+++ b/docs/enums/LogicalOperators/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+LogicalOperators | WinUI
+
+
+
+
+
+
+
+
+
+
+逻辑与是一个双目运算符,使用时&&的两边各一个表达式,如果运算符的左右两边的表达式都为真,表达式整体才为真,否则即为假。
+
+
+
+逻辑或运算符也是一个双目运算符,使用时候要求两边各一个表达式,如果运算符左右两边的表达式只要有一个为真,那么逻辑或表达式的整体就为真,否则都为假。
+
+
+
+逻辑非是一个单目运算符,它表示取反的意思,放在表达式的左边,如!a ,即原先为真的表达式取反之后变为假,原先为假的表达式取反之后变为真。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/MessageBoxFlags/index.html b/docs/enums/MessageBoxFlags/index.html
new file mode 100644
index 00000000..f63333a3
--- /dev/null
+++ b/docs/enums/MessageBoxFlags/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+MessageBoxFlags | WinUI
+
+
+
+
+
+
+
+
+
+OK
+OKCANCEL
+ABORTRETRYIGNORE
+YESNOCANCEL
+YESNO
+RETRYCANCEL
+
+
+
\ No newline at end of file
diff --git a/docs/enums/MessagePlaceMode/index.html b/docs/enums/MessagePlaceMode/index.html
new file mode 100644
index 00000000..09903f84
--- /dev/null
+++ b/docs/enums/MessagePlaceMode/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+MessagePlaceMode | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/ModuleOption/index.html b/docs/enums/ModuleOption/index.html
new file mode 100644
index 00000000..4d555711
--- /dev/null
+++ b/docs/enums/ModuleOption/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ModuleOption | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/MorphologicalOperations/index.html b/docs/enums/MorphologicalOperations/index.html
new file mode 100644
index 00000000..7b37db4b
--- /dev/null
+++ b/docs/enums/MorphologicalOperations/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+MorphologicalOperations | WinUI
+
+
+
+
+
+
+
+enums MorphologicalOperations
+
+
+侵蚀,根据内核的大小,边界附近的所有像素都将被丢弃。因此,前景物体的厚度或尺寸会减小,或者图像中的白色区域会减小。它对于消除小的白噪声、分离两个连接的对象等很有用。通常进行侵蚀后的影像,黑色区域会扩张,白色区域会缩小。
+
+
+
+膨胀,它与侵蚀正好相反,它增加了图像中的白色区域或前景物体的尺寸,对于连接物体的破损部分也很有用。通常进行膨胀后的影像,白色区域会扩张,黑色区域会缩小。
+
+
+
+先应用腐蚀,然后应用膨胀!此操作对于消除噪声很有用。这是因为第一次腐蚀将删除原始图像中小于结构元素的任何形状,但也会缩小我们想要的形状。然后,膨胀将逆转收缩,但不会带回“噪音”。
+
+
+
+首先应用膨胀,然后应用腐蚀!此操作对于“关闭”我们想要的形状或前景中的孔非常有用。这是因为当我们第一次应用膨胀时,孔将被关闭,但主要形状会放大。然后侵蚀将逆转主要形状的扩大,因此闭合的效果实际上只是“闭合”孔。
+
+
+
+这是图像的膨胀和腐蚀之间的区别,结果将看起来像对象的轮廓。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/MouseButtons/index.html b/docs/enums/MouseButtons/index.html
new file mode 100644
index 00000000..93332439
--- /dev/null
+++ b/docs/enums/MouseButtons/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+MouseButtons | WinUI
+
+
+
+
+
+
+
+
+
+
+鼠标左键
+
+
+
+鼠标中键
+
+
+
+鼠标右键
+
+
+
+鼠标侧键
+
+
+
\ No newline at end of file
diff --git a/docs/enums/MouseMessage/index.html b/docs/enums/MouseMessage/index.html
new file mode 100644
index 00000000..c23a2e1a
--- /dev/null
+++ b/docs/enums/MouseMessage/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+MouseMessage | WinUI
+
+
+
+
+
+
+
+
+
+None
+MouseMove
+LeftButtonDown
+LeftButtonUp
+RightButtonDown
+RightButtonUp
+MouseWheelForward
+MouseWheelBackward
+MouseHorizontalWheelLeft
+MouseHorizontalWheelRight
+MiddleButtonDown
+MiddleButtonUp
+
+
+
\ No newline at end of file
diff --git a/docs/enums/Operations/index.html b/docs/enums/Operations/index.html
new file mode 100644
index 00000000..fded731d
--- /dev/null
+++ b/docs/enums/Operations/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+Operations | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/Orientation/index.html b/docs/enums/Orientation/index.html
new file mode 100644
index 00000000..5112caca
--- /dev/null
+++ b/docs/enums/Orientation/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+Orientation | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/PageSegMode/index.html b/docs/enums/PageSegMode/index.html
new file mode 100644
index 00000000..1e427174
--- /dev/null
+++ b/docs/enums/PageSegMode/index.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+PageSegMode | WinUI
+
+
+
+
+
+
+
+
+
+
+自动检测页面布局并进行识别。这是最常用的模式之一,Tesseract 会自动分析图像的布局,尝试确定文字的行、段落等结构,然后进行识别。适用于大多数普通文档图像。
+
+
+
+假定图像包含一个垂直排列的单列文本。当图像中的文字是以单列形式排列时,使用此模式可以更准确地识别文字,引擎会按照单列文本的结构进行处理。
+
+
+SINGLE_BLOCK_VERT_TEXT (5)
+
+
+假定图像包含一个垂直排列的文本块。如果图像中的文字是垂直书写的,并且形成一个整体的文本块,使用该模式可以更好地进行识别。
+
+
+
+假定图像包含一个统一的文本块。对于没有明显分行或段落结构的图像,如一些标语、横幅等,使用此模式可以将整个图像作为一个文本块进行识别。
+
+
+
+将图像视为单行文本进行识别。适用于只包含一行文字的图像,如标题、菜单等,引擎会专注于识别这一行文字。
+
+
+
+将图像视为单个单词进行识别。当图像中只包含一个单词时,使用此模式可以提高识别的准确性。
+
+
+
+将图像视为单个单词,且该单词可能是圆形排列的。对于一些以圆形方式排列的文字,如商标、徽章上的文字,此模式可以更好地进行识别。
+
+
+
+将图像视为单个字符进行识别。用于识别只包含一个字符的图像,例如验证码中的单个字符。
+
+
+
+在图像中查找稀疏分布的文本,不进行特定的页面布局分析。当图像中的文字分布比较分散,没有明显的布局结构时,使用此模式可以找出所有的文字。
+
+
+
+在图像中查找稀疏分布的文本,并进行方向和脚本检测。结合了方向和脚本检测功能,适用于文字分布稀疏且方向不确定的图像。
+
+
+
+直接将图像中的像素作为原始文本行进行识别,不进行任何页面分割或预处理。这种模式适用于一些特殊情况,如手写文字或经过特殊处理的图像,引擎会尽量直接识别像素中的文字信息。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/PointConvertMethod/index.html b/docs/enums/PointConvertMethod/index.html
new file mode 100644
index 00000000..d358c691
--- /dev/null
+++ b/docs/enums/PointConvertMethod/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+PointConvertMethod | WinUI
+
+
+
+
+
+
+
+
+
+
+SCREEN_TO_CLIENT
+
+屏幕坐标->窗口坐标
+
+
+
+CLIENT_TO_SCREEN
+
+窗口坐标->屏幕坐标
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/RelationalOperators/index.html b/docs/enums/RelationalOperators/index.html
new file mode 100644
index 00000000..e6c532d3
--- /dev/null
+++ b/docs/enums/RelationalOperators/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+RelationalOperators | WinUI
+
+
+
+
+
+
+
+
+
+GreaterThan
+EqualTo
+LessThan
+NotEqualTo
+GreaterThanOrEqualTo
+LessThanOrEqualTo
+
+
操作符 意义 描述 句法 == 等于 如果第一个操作数等于第二个操作数,则等于运算符返回 True。否则,它返回 False。 操作数 1 == 操作数 2!= 不等于 如果第一个操作数不等于第二个操作数,则不等于运算符返回 True。否则,它返回 False 操作数 1 != 操作数 2> 大于 如果第一个操作数大于第二个操作数,则大于运算符返回 True。否则,它返回 False 操作数 1 > 操作数 2<小于 如果第一个操作数小于第二个,则小于运算符返回 True。否则,它返回 False。 操作数 1 < 操作数 2>=大于或等于 如果第一个操作数大于或等于第二个操作数,则大于或等于运算符返回 True。否则,它返回 False。 操作数 1 >= 操作数 2<=小于或等于 如果第一个操作数小于或等于第二个操作数,则小于或等于运算符返回 True。否则,它返回 False。 操作数 1 <= 操作数 2
+
+
\ No newline at end of file
diff --git a/docs/enums/RelativePosition/index.html b/docs/enums/RelativePosition/index.html
new file mode 100644
index 00000000..d38cb4e9
--- /dev/null
+++ b/docs/enums/RelativePosition/index.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+RelativePosition | WinUI
+
+
+
+
+
+
+
+
+
+
+左上角
+
+
+
+右上角
+
+
+
+中心
+
+
+
+BottomLeft
+
+左下角
+
+
+
+BottomRight
+
+右下角
+
+
+
+CENTER_LEFT
+
+
+
+左中
+
+
+
+右中
+
+
+
+上中
+
+
+
+下中
+
+
+
\ No newline at end of file
diff --git a/docs/enums/RetrievalModes/index.html b/docs/enums/RetrievalModes/index.html
new file mode 100644
index 00000000..ac4de565
--- /dev/null
+++ b/docs/enums/RetrievalModes/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+RetrievalModes | WinUI
+
+
+
+
+
+
+
+
+
+
+仅检索最外轮廓
+
+
+
+检索所有轮廓而不建立任何层次关系
+
+
+
+检索所有轮廓并将它们组织成两级层次结构。在顶层,存在组件的外部边界。在第二层,有孔的边界。如果连接组件的孔内还有另一个轮廓,则它仍然放在顶层。
+
+
+
+检索所有轮廓并重建嵌套轮廓的完整层次结构。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/SeverityLevel/index.html b/docs/enums/SeverityLevel/index.html
new file mode 100644
index 00000000..a80fbde1
--- /dev/null
+++ b/docs/enums/SeverityLevel/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+SeverityLevel | WinUI
+
+
+
+
+
+
+
+
+
+
+Info
+
+一般信息。
+
+
+
+Warning
+
+警告信息。
+
+
+
+Error
+
+错误信息。
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/SuspendStateOption/index.html b/docs/enums/SuspendStateOption/index.html
new file mode 100644
index 00000000..20104cf4
--- /dev/null
+++ b/docs/enums/SuspendStateOption/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+SuspendStateOption | WinUI
+
+
+
+
+
+
+
+
+
+
+注销。
+
+
+
+重启。
+
+
+
+关机。
+
+
+
+休眠
+
+
+
\ No newline at end of file
diff --git a/docs/enums/ThresholdTypes/index.html b/docs/enums/ThresholdTypes/index.html
new file mode 100644
index 00000000..aca271e0
--- /dev/null
+++ b/docs/enums/ThresholdTypes/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ThresholdTypes | WinUI
+
+
+
+
+
+
+
+
+
+
+如果像素强度大于设置的阈值,值设置为 255,否则设置为 0(黑色)
+
+
+BINARY_INV
+
+BINARY 的反转或相反情况
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/Visibility/index.html b/docs/enums/Visibility/index.html
new file mode 100644
index 00000000..da6465ec
--- /dev/null
+++ b/docs/enums/Visibility/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+Visibility | WinUI
+
+
+
+
+
+
+
+
+
+Default
+Visible
+Invisible
+
+
+
\ No newline at end of file
diff --git a/docs/enums/WebKey/index.html b/docs/enums/WebKey/index.html
new file mode 100644
index 00000000..f3e46f7e
--- /dev/null
+++ b/docs/enums/WebKey/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+WebKey | WinUI
+
+
+
+
+
+
+
+
+
+Null
+Cancel
+Shift
+Enter
+Return
+
+
+
\ No newline at end of file
diff --git a/docs/enums/WebLocated/index.html b/docs/enums/WebLocated/index.html
new file mode 100644
index 00000000..ceb71d4f
--- /dev/null
+++ b/docs/enums/WebLocated/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+WebLocatedMode | WinUI
+
+
+
+
+
+
+
+
+
+
+ONE
+
+
+ANY
+
+
+ALL
+
+
+
+
\ No newline at end of file
diff --git a/docs/enums/WindowHandle/index.html b/docs/enums/WindowHandle/index.html
new file mode 100644
index 00000000..9d878191
--- /dev/null
+++ b/docs/enums/WindowHandle/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+WindowHandle | WinUI
+
+
+
+
+
+
+
+
+
+WH_BOTTOM
+WH_NOTOPMOST
+WH_TOP
+WH_TOPMOST
+
+
+
\ No newline at end of file
diff --git a/docs/enums/WindowSortDirection/index.html b/docs/enums/WindowSortDirection/index.html
new file mode 100644
index 00000000..7c5dc6cc
--- /dev/null
+++ b/docs/enums/WindowSortDirection/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+WindowSortDirection | WinUI
+
+
+
+
+
+
+
+
+
+
+窗口的 z 顺序指示窗口在重叠窗口堆栈中的位置。该窗口堆栈沿假想轴(即 z 轴)定向,从屏幕垂直向外延伸,用户可以通过激活不同的窗口来更改 z 顺序。因此按照该方式排序,窗口顺序每次会不同。
+
+
+
+优先沿屏幕 X (水平) 方向排序。 如果窗口的 X 坐标相同,则进行 Y (垂直)方向排序 。
+
+
+
+优先沿屏幕 Y (垂直) 方向排序。 如果窗口的 Y 坐标相同,则进行 X (水平)方向排序 。
+
+
+
\ No newline at end of file
diff --git a/docs/enums/WorkState/index.html b/docs/enums/WorkState/index.html
new file mode 100644
index 00000000..d9029ca1
--- /dev/null
+++ b/docs/enums/WorkState/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+WorkState | WinUI
+
+
+
+
+
+
+
+
+
+
+自动,线程或者定时器的状态自动切换 运行 或者 停止 。对于 WinEvent ,对信号自动重置,
+
+
+
+启动 线程 或者 定时器 ,对于 WhenEvent 动作,可以让 WhenEvent 执行子流程。
+
+
+
+停止线程 或者 定时器 ,对于 WhenEvent 动作,则会让 WhenEvent 动作处于等待状态。
+
+
+
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 00000000..fd455f51
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+首页 | WinUI
+
+
+
+
+
+
+
+欢迎来到 WinUI 文档(迁移自 Docsify) 。
+
+文档目录在 /(已自动生成侧边栏)。
+若需要精确映射原 _sidebar.md,请回复“精确 sidebar”。
+
+开始查看文档:/
+
+
\ No newline at end of file
diff --git a/docs/introduction/android/uiautomatorviewer/index.html b/docs/introduction/android/uiautomatorviewer/index.html
new file mode 100644
index 00000000..064b57bd
--- /dev/null
+++ b/docs/introduction/android/uiautomatorviewer/index.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+如何下载并安装 UIAutomatorViewer | WinUI
+
+
+
+
+
+
+
+系统配置要求 android 如何下载并安装 UIAutomatorViewer 本页总览
如何下载并安装 UIAutomatorViewer
+
UIAutomatorViewer 是一个用来扫描和分析 Android 应用程序UI 组件的GUI 工具,使用UIAutomatorViewer ,可以检查安卓应用程序的UI ,找出层次结构,并查看不同的元素属性(id、文本)。
+
UiautomatorViewer 是 Android SDK Manager 的一部分,一旦您安装 SDK Manager ,就可以使用。
+
1、安装 Java
+
在这里可以在官方下载 Java ,需要登录 Oracle 账号,比较麻烦。或者使用本站提供的jdk-17_windows-x64_bin.msi ,下载安装。
+
+
目前官网上已经没有单独的SDK下载安装包了,目前官网推荐的是下载包含有 Android SDK 的 Android Studio 。而我们只需要用到 SDK 工具。点击这里下载:https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip 。解压并找到名为uiautomatorviewer.bat 批处理文件运行。
+
+
!> 在运行\sdkmanager.bat的时候可能会报以下错误,主要是安装的JAVA 版本不对引起的。
+
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/baeldung/MajorMinorApp has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
+
+
Java 版本对照表
+
+45 = Java 1.1
+46 = Java 1.2
+47 = Java 1.3
+48 = Java 1.4
+49 = Java 5
+50 = Java 6
+51 = Java 7
+52 = Java 8
+53 = Java 9
+54 = Java 10
+55 = Java 11
+56 = Java 12
+57 = Java 13
+58 = Java 14
+59 = Java 15
+60 = Java 16
+61 = Java 17
+62 = Java 18
+63 = Java 19
+64 = Java 20
+65 = Java 21
+66 = Java 22
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/index.html b/docs/introduction/index.html
new file mode 100644
index 00000000..09303797
--- /dev/null
+++ b/docs/introduction/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+系统配置要求 | WinUI
+
+
+
+
+
+
+
+
+
最低系统要求 推荐
操作系統 Windows® 10 64-bit 1809 以上 Windows® 11 64-bit 处理器 - - 显卡 - - 内存 1 GB RAM - 存储空间 10GB - 网络 非必要 有网络的环境下使用 分辨率 1024X768 -
+
+
注册版 & 试用版
+
+
购买 小友+ 版序列号
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/installation/installed_by_exe/index.html b/docs/introduction/installation/installed_by_exe/index.html
new file mode 100644
index 00000000..179bd52c
--- /dev/null
+++ b/docs/introduction/installation/installed_by_exe/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+安装包安装 | WinUI
+
+
+
+
+
+
+
+
+
通过常见的Exe格式, 此方式最简单方便。打开https://winui.net , 点击英文Download下载最新版本的Exe格式的安装包。
+
+为避免安装第三方修改过的安装包(通常包含各大厂商的全家桶或浏览器主页绑定),非此网站下载的安装包,请认准数字签名。
+
+
+
+双击下载的安装包
+
+
+
+弹出User Account Control 窗口,点击是,这里需要注意安装包签名。
+
+
+
+接下来,点击 Install 进行安装。
+
+
+
+接下来,等待安装完成。
+
+
+
+安装完成后,点击Finish,结束安装。此窗口如果勾选Run 小友+,点击Finish 之后 ,便会启动小友+;
+
+
+
+在桌面 双击小友+快捷方式,即可启动小友+;
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/installation/installed_by_msix/index.html b/docs/introduction/installation/installed_by_msix/index.html
new file mode 100644
index 00000000..d7764724
--- /dev/null
+++ b/docs/introduction/installation/installed_by_msix/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+微软商店安装 | WinUI
+
+
+
+
+
+
+
+
+
微软商店安装,需要注册相应的微软商店账号,相对麻烦,并且版本更新较慢,版本较旧。
+
+打开微软商店
+
+
+
+输入小友+ 搜索
+
+
+
+点击搜索出来的小友+
+
+
+
+在新的界面,点击 install进行安装
+
+
+
!> 点击直达微软商店页面,获取小友+
+
+
\ No newline at end of file
diff --git a/docs/introduction/installation/question/quest1/index.html b/docs/introduction/installation/question/quest1/index.html
new file mode 100644
index 00000000..4a5827b7
--- /dev/null
+++ b/docs/introduction/installation/question/quest1/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+quest1 | WinUI
+
+
+
+
+
+
+
+系统配置要求 installation question quest1 本页总览
[Deprecated] 事件日志
+
+
+按 Windows + R 打开运行框,输入 eventvwr.msc 打开事件日志。
+
+
+
+双击 Windows日志 ,展开日志来源列表。
+
+
+
+选择 应用程序 。
+
+
+
+点击 筛选当前日志... , 或者在 应用程序 右键点击选择 清除日志 ,不略过 步骤 [4 ~ 5]。
+
+
+
+输入 筛选条件 Simple simple event source ,点击 确定 。
+
+
+
+在桌面右键点击 小友+ , 使用 管理员方身份运行 。
+
+
+
+在事件查看器中,右键点击 应用程序 ,选择 刷新 ,查看日志详情。
+
+
+
+
日志文件
+
在资源管理器地址栏输入 %LOCALAPPDATA%\Simple\Logs,打开该目录,打开文件**-error.log*,查看日志文件。如果仍无法解决,加入群聊,联系开发人员。
+
+
\ No newline at end of file
diff --git a/docs/introduction/installation/question/quest2/index.html b/docs/introduction/installation/question/quest2/index.html
new file mode 100644
index 00000000..f02f4ef0
--- /dev/null
+++ b/docs/introduction/installation/question/quest2/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+覆盖安装无法启动 | WinUI
+
+
+
+
+
+
+
+系统配置要求 installation question 覆盖安装无法启动
+
关闭 小友+ , 在资源管理器地址栏输入 %LOCALAPPDATA%\Simple,打开该目录,清空该目录下面的所有文件,重启 小友+ 。
+
+
\ No newline at end of file
diff --git a/docs/introduction/mixed/CUDA/index.html b/docs/introduction/mixed/CUDA/index.html
new file mode 100644
index 00000000..fe40d132
--- /dev/null
+++ b/docs/introduction/mixed/CUDA/index.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+CUDA | WinUI
+
+
+
+
+
+
+
+本页总览
在 Windows 系统上安装 CUDA 的详细步骤:
+
1. 确认显卡支持
+
+要保证你的 NVIDIA 显卡支持 CUDA,你可以访问 NVIDIA 官方 CUDA GPU 支持列表 来确认显卡型号是否在支持范围内。
+可以通过以下操作查看显卡型号:在桌面上右键点击,选择“显示设置”,接着点击“显示”选项卡下的“高级显示设置”,再点击“显示适配器属性”,在弹出窗口中就能看到显卡的具体型号。
+
+
+
+访问 NVIDIA CUDA Toolkit 下载页面 。
+在页面中进行如下选择:
+
+操作系统 :选择 “Windows”。
+版本 :根据你的 Windows 系统版本选择,如 Windows 10 或 Windows 11。
+架构 :一般选择 “x86_64”。
+安装类型 :可选择 “exe(local)”。
+
+
+点击 “下载” 按钮,等待下载完成。
+
+
3. 运行安装程序
+
+找到下载好的 .exe 安装文件并双击运行。
+在安装向导中,阅读并接受许可协议。
+选择安装类型,推荐选择 “自定义”,这样你可以根据需求决定安装哪些组件。一般来说,CUDA 核心组件是必须安装的,NVIDIA Nsight Compute 等工具可按需选择。
+选择安装路径,建议使用默认路径,这样能避免一些潜在的路径相关问题。
+点击 “安装” 按钮,等待安装过程完成,这可能需要一些时间。
+
+
4. 安装过程中可能遇到的问题及解决办法
+
+驱动程序冲突 :如果系统中已经安装了旧版本的 NVIDIA 显卡驱动,安装过程中可能会提示冲突。此时可以选择先卸载旧驱动,再进行 CUDA 安装;或者在安装 CUDA 时,让安装程序自动更新显卡驱动。
+空间不足 :确保安装磁盘有足够的空间,安装 CUDA 可能需要数 GB 的磁盘空间。
+
+
5. 配置环境变量
+
+安装完成后,需要配置系统环境变量,以确保系统能够找到 CUDA 相关的可执行文件和库文件。
+右键点击 “此电脑”,选择 “属性”。
+点击 “高级系统设置”,在弹出的窗口中点击 “环境变量”。
+在 “系统变量” 中找到 Path 变量,点击 “编辑”。
+点击 “新建”,添加以下两个路径(其中 vXX.X 是你安装的 CUDA 版本号):
+
+C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X\bin
+C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X\libnvvp
+
+
+点击 “确定” 保存设置。
+
+
6. 验证安装
+
+打开命令提示符(按下 Win + R 组合键,输入 cmd 并回车)。
+在命令提示符中输入以下命令查看 CUDA 版本:
+
+
+
如果能正常显示 CUDA 版本信息,说明安装成功。
+
+还可以运行 CUDA 自带的示例程序来进一步验证。进入 CUDA 示例程序的安装目录(通常为 C:\ProgramData\NVIDIA Corporation\CUDA Samples\vXX.X),找到并编译运行一些示例,如 deviceQuery。在命令提示符中进入该示例的目录,然后执行以下命令:
+
+
nvcc -o deviceQuery deviceQuery.cpp deviceQuery.exe
+
如果程序能够正常运行并输出显卡信息等内容,说明 CUDA 安装和配置都正常。
+
通过以上步骤,你就可以在 Windows 系统上成功安装 CUDA。
+
+
\ No newline at end of file
diff --git a/docs/introduction/mixed/cuDNN/index.html b/docs/introduction/mixed/cuDNN/index.html
new file mode 100644
index 00000000..3d4b27e5
--- /dev/null
+++ b/docs/introduction/mixed/cuDNN/index.html
@@ -0,0 +1,105 @@
+
+
+
+
+
+cuDNN 和 CUDA 版本对应关系 | WinUI
+
+
+
+
+
+
+
+系统配置要求 mixed cuDNN 和 CUDA 版本对应关系 本页总览
+
cuDNN 和 CUDA 的版本对应关系需要根据具体的软件版本和硬件环境进行匹配,以下是基于证据的详细总结:
+
1. 官方兼容性说明(NVIDIA文档)
+
+主版本对应 :
+cuDNN 的版本通常对应 CUDA 的主版本(如 12.x 或 11.x)。例如:
+cuDNN 8.9.1 分为两个分支:
+cuDNN 8.9.1 for CUDA 12.x:支持 CUDA 12.0、12.1 等次版本 。
+
+cuDNN 8.9.1 for CUDA 11.x:支持 CUDA 11.7、11.8 等次版本 。
+cuDNN 8.9.4 同样支持 CUDA 12.x 系列的所有次版本(如 12.0、12.1、12.2)。
+
+
+CUDA 12.x 版本的 cuDNN 支持静态链接,而 CUDA 11.x 版本不支持 。
+不同 CUDA 主版本支持的 NVIDIA 硬件架构不同(如 CUDA 12.x 支持 Hopper 架构,CUDA 11.x 支持 Turing 架构)。
+
+
2. 第三方框架的兼容性(TensorFlow/PyTorch/ONNX Runtime)
+
+TensorFlow :
+
+不同 TensorFlow 版本对 CUDA 和 cuDNN 有明确要求。例如:
+TensorFlow 1.11.0 需要 CUDA 9.0 和 cuDNN 7.1.2 。
+TensorFlow 2.1 需要 CUDA 10.1 和 cuDNN 7.6 。
+需参考 TensorFlow官方文档 获取最新对应关系 。
+
+
+PyTorch :
+需根据 PyTorch 版本选择兼容的 CUDA 和 cuDNN 组合。例如,PyTorch 2.0 通常需要 CUDA 11.7/11.8 和 cuDNN 8.x 。
+ONNX Runtime ,具体参考:CUDA Execution Provider :
+
+ONNX Runtime 1.17.x :对应 CUDA 12.2,cuDNN 8.9.2.26。
+ONNX Runtime 1.15.x - 1.16.x :对应 CUDA 11.8,cuDNN 8.2.4(Linux)/8.5.0.96(Windows)。
+ONNX Runtime 1.13.x - 1.14.x :对应 CUDA 11.6,cuDNN 8.2.4(Linux)/8.5.0.96(Windows)。
+ONNX Runtime 1.11.x - 1.12.x :对应 CUDA 11.4,cuDNN 8.2.4(Linux)/8.2.2.26(Windows)。
+ONNX Runtime 1.9.x - 1.10.x :对应 CUDA 11.4,cuDNN 8.2.4(Linux)/8.2.2.26(Windows)。
+ONNX Runtime 1.7.x - 1.8.x :对应 CUDA 11.0.3,cuDNN 8.0.4(Linux)/8.0.2.39(Windows)。
+
+
+
+
cuDNN和CUDA有较为明确的版本对应关系,以下是一些常见的对应版本:
+
+CUDA 10.0 :对应 cuDNN 7.4。
+CUDA 10.1 :对应 cuDNN 7.6。
+CUDA 10.2 :对应 cuDNN 7.6。
+CUDA 11.0 :对应 cuDNN 8.0。
+CUDA 11.1 :对应 cuDNN 8.0。
+CUDA 11.2 :对应 cuDNN 8.1。
+
+
一般来说,cuDNN的版本可能会有向前兼容性,即较新版本的cuDNN也可以与较旧版本的CUDA一起使用,但不保证所有功能都能正常工作。在实际应用中,为了确保深度学习框架能够正常运行并获得最佳性能,建议按照官方文档的要求来选择匹配的CUDA和cuDNN版本。
+
3. 版本查询与验证方法
+
+查看 CUDA 版本 :
+命令行输入 nvcc --version 或 nvidia-smi(显示驱动支持的最高 CUDA 版本)。
+
+
+检查 CUDA 安装目录下的 cudnn.h 文件(Windows/Linux均适用)。例如:
+
+
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # Linux
+
或打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\include\cudnn.h(Windows)。
+
4. 关键注意事项
+
+驱动版本要求 :
+CUDA 和 cuDNN 的安装需满足 NVIDIA 驱动的最低版本。例如:
+CUDA 12.x 要求 Linux 驱动 ≥525.60.13,Windows 驱动 ≥527.41 。
+CUDA 11.x 要求 Linux 驱动 ≥450.80.02,Windows 驱动 ≥452.39 。
+
+
+CUDA 驱动向下兼容,但 cuDNN 必须与 CUDA 主版本严格匹配。例如,CUDA 12.1 需使用 cuDNN for CUDA 12.x,而非 11.x 。
+
+
+旧版本对应关系(仅供参考,可能已过时):
+CUDA 10.0 → cuDNN 7.4 ;CUDA 9.0 → cuDNN 7.5 ;CUDA 8.0 → cuDNN 5.0 。
+
+
5. 推荐操作流程
+
+步骤 1 :根据深度学习框架(如 TensorFlow/PyTorch)的版本要求,确定所需的 CUDA 版本 。
+步骤 2 :在 NVIDIA cuDNN Support Matrix 中查找对应 CUDA 主版本的 cuDNN 版本 。
+步骤 3 :确保 NVIDIA 驱动版本满足 CUDA 的最低要求(通过 nvidia-smi 查看)。
+
+
总结表格(部分示例)
+
CUDA 主版本 兼容的 cuDNN 版本 备注 12.x cuDNN 8.9.1、8.9.4 支持 Hopper 架构 11.x cuDNN 8.9.1(仅限 11.7+) 支持 Turing 架构 10.x cuDNN 7.6.5 需参考旧版文档
+
建议始终参考 NVIDIA 官方支持矩阵 和框架文档以获取最新信息 。
+
+
\ No newline at end of file
diff --git a/docs/introduction/mixed/glob/index.html b/docs/introduction/mixed/glob/index.html
new file mode 100644
index 00000000..556247b7
--- /dev/null
+++ b/docs/introduction/mixed/glob/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Glob模式 | WinUI
+
+
+
+
+
+
+
+本页总览
+
在编程中匹配字符最常见的工具是正则表达式,此外还有一种 glob 模式经常用于匹配文件路径,glob 模式在某些方面与正则表达式功能相同,但是他们各自有着不同的语法和约定。
+
+
*要抑制任何[]*?!-的特殊语法意义并精确匹配该字符,请在其前面添加反斜杠。
+
+
通配符
描述 示例 匹配 不匹配 * 匹配0个或多个字符,包含空串 Law* Law, Laws和Lawer La, aw ? 匹配1个字符 ?at cat, bat at [abc] 匹配括号内字符集合中的单个字符 [cb]at cat, bat at, bcat [a-z] 匹配括号内字符范围中的单个字符 [a-z]ata at, bat, zat at, bcat, Bat [^abc]或[!abc] 匹配非括号内字符集合中的单个字符 [!CB]at cat, bat Cat, Bat [^a-z]或[!a-z] 匹配非括号内字符范围中的单个字符 [!A-Z]at aat, bat, zat Aat, Bat, Zat
+
+
\ No newline at end of file
diff --git a/docs/introduction/mixed/paddle2onnx/index.html b/docs/introduction/mixed/paddle2onnx/index.html
new file mode 100644
index 00000000..47ab5ee6
--- /dev/null
+++ b/docs/introduction/mixed/paddle2onnx/index.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+Paddle2ONNX模型转化与预测 | WinUI
+
+
+
+
+
+
+
+本页总览
+
本章节介绍 PaddleOCR 模型如何转化为 ONNX 模型,并在 小友+ 中使用。
+
1. 环境准备
+
需要准备 Python、Paddle、 PaddleOCR、Paddle2ONNX 模型转化环境,和 ONNXRuntime 预测环境。
+
Python
+
+下载 Python 安装包,本章节使用 3.12.9 版本,下载链接:https://www.python.org/ftp/python/3.12.9/python-3.12.9-amd64.exe 。
+
+
+打开 Python 官方下载页面 https://www.python.org/downloads/ 。
+页面会根据你的系统自动推荐合适的 Python 版本。通常建议选择最新的稳定版本,在页面中找到“Download Python x.x.x”(x.x.x 代表具体版本号)按钮并点击。若你的 Windows 系统是 64 位,下载 64 - bit 的安装包;若为 32 位系统,则下载 32 - bit 的安装包。
+
+
+运行安装程序
+
+
+找到下载好的 .exe 格式的安装文件,双击运行。
+在弹出的安装界面中,注意勾选“Add Python x.x to PATH”选项,这个操作能自动将 Python 可执行文件路径添加到系统的环境变量中,之后你就能在命令提示符里直接使用 Python 命令。
+你可以选择“Install Now”进行默认安装,也能点击“Customize installation”来自定义安装路径和组件。若不确定如何选择,建议直接点击“Install Now”。
+等待安装过程完成,这可能需要一些时间,取决于你的系统性能。
+
+
+验证 Python 安装
+
+
+按下 Win + R 组合键,打开“运行”对话框,输入 cmd 并回车,以此打开命令提示符窗口。
+在命令提示符中输入 python --version 并回车。若安装成功,会显示所安装的 Python 版本号,例如 Python 3.11.5。
+
+
+
+验证 pip 安装
+pip 是 Python 的包管理工具,一般会随 Python 一起安装。在命令提示符中输入 pip --version 并回车,若安装成功,会显示 pip 的版本信息以及对应的 Python 版本,例如 pip 23.3.1 from C:\Python311\Lib\site-packages\pip (python 3.11)。
+
+
+更新 pip(可选)
+为保证能使用 pip 的最新特性和修复已知问题,可在命令提示符中运行以下命令来更新 pip:
+
+
+
python -m pip install --upgrade pip
+
虚拟环境
+
在 Python 开发中,虚拟环境是一个非常有用的工具,它可以为每个项目创建独立的 Python 运行环境,避免不同项目之间的依赖冲突。
+
使用 venv 模块(Python 标准库自带)
+
venv 是 Python 3.3 及以上版本标准库中自带的虚拟环境创建工具,使用起来简单方便。
+
+
+打开命令行工具 :在 Windows 系统中可以使用命令提示符(CMD)或 PowerShell。
+创建虚拟环境 :在命令行中进入你想要创建虚拟环境的目录,然后运行以下命令:
+
+
cd d:\onnx python -m venv myenv # PowerShell .\myenv\Scripts\Activate.ps1 # CMD # .\myenv\Scripts\activate.bat
+
其中 myenv 是你要创建的虚拟环境的名称,你可以根据需要进行修改。
+
+激活虚拟环境 :
+
+
+
+
myenv\Scripts\activate.bat
+
+
myenv\Scripts\Activate.ps1
+
激活虚拟环境后,命令行提示符前面会显示虚拟环境的名称,表明你已经成功进入该虚拟环境。
+
+安装依赖包 :在虚拟环境中,你可以使用 pip 安装项目所需的依赖包,例如:
+
+
+
+退出虚拟环境 :当你完成开发工作后,可以在命令行中运行以下命令退出虚拟环境:
+
+
+
Paddle
+
在使用 pip install paddlepaddle 安装 PaddlePaddle(以下简称 Paddle)时,有一些要点需要注意,下面为你详细介绍不同环境下的安装步骤和注意事项。
+
1. 选择合适的 Paddle 版本
+
Paddle 有 CPU 版本和 GPU 版本,你需要根据自己的硬件情况选择合适的版本。
+
+CPU 版本 :如果你的计算机没有 NVIDIA GPU 或者不需要使用 GPU 进行计算,那么选择 CPU 版本即可。
+GPU 版本 :如果你的计算机配备了 NVIDIA GPU,并且想利用 GPU 的计算能力加速训练和推理,那么需要安装 GPU 版本。同时,你还需要安装对应的 CUDA 和 cuDNN 库。
+
+
2. 安装 Paddle
+
CPU 版本安装(推荐)
+
在命令行中运行以下命令安装 CPU 版本的 Paddle:
+
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
+
这里 -i https://mirror.baidu.com/pypi/simple 是指定使用百度的 PyPI 镜像源,这样可以加快下载速度。
+
GPU 版本安装
+
如果你要安装 GPU 版本,需要先确认你的 CUDA 和 cuDNN 版本,通过执行命令 nvidia-smi.exe 查看 CUDA 版本, 查看输出:
+
nvidia-smi.exe Mon Apr 21 14:18:12 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 576.02 Driver Version: 576.02 CUDA Version: 12.9 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4060 ... WDDM | 00000000:01:00.0 Off | N/A | | N/A 48C P0 13W / 140W | 0MiB / 8188MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
+
CUDA 参考 Windows 系统上安装 CUDA 安装,检查相应的C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin 路径是否加入到环境变量PATH中。
+
对应的cuDNN 版本下载:https://developer.nvidia.com/cudnn-archive 。解压之后 ,同样设置环境变量PATH。
+
$env:PATH = "D:\onnx\cudnn-windows-x86_64-8.9.7.29_cuda12-archive\bin;$env:PATH;"
+
然后根据版本选择合适的安装命令。例如,如果你使用的是 CUDA 12.0 和 cuDNN 9.8,可以运行以下命令:
+
pip install paddlepaddle-gpu==3.1.0.post120 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
+
其中 2.6.1.post120 表示 Paddle 的版本,120 代表 CUDA 12.0。你可以根据自己的实际情况调整版本号。
+
4. 验证安装
+
安装完成后,你可以在 Python 环境中验证 Paddle 是否安装成功。打开 Python 解释器,输入以下代码:
+
import paddle paddle . utils . run_check ( )
+
如果输出类似 PaddlePaddle is installed successfully! 的信息,说明 Paddle 已经成功安装。
+
5. 错误
+
当你遇到 No module named 'setuptools' 错误,意味着 Python 环境里没有安装 setuptools 模块。
+
+
PaddleOCR
+
克隆PaddleOCR的仓库,使用 main 分支,并进行安装,由于 PaddleOCR 仓库比较大,git clone 速度比较慢,或使用国内镜像站点下载。
+
使用虚拟环境:(myenv) PS D:\onnx>。
+
git clone -b main https://github.com/PaddlePaddle/PaddleOCR.git cd PaddleOCR python -m pip install -e .
+
Paddle2ONNX
+
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,算子目前稳定支持导出 ONNX Opset 9~18,部分Paddle算子支持更低的ONNX Opset转换。
+更多细节可参考 Paddle2ONNX 。
+使用虚拟环境:(myenv) PS D:\onnx>。
+
+
python -m pip install paddle2onnx==2.0.2rc3
+
+
python -m pip install onnxruntime
+
2. 模型转换
+
+
在 模型列表 中下载PaddleOCR提供的预测模型。目前包含 5 种模型,
+
文档图像方向分类模块(可选): 模型 模型下载链接 Top-1 Acc(%) GPU推理耗时(ms) [常规模式 / 高性能模式] CPU推理耗时(ms) [常规模式 / 高性能模式] 模型存储大小(MB) 介绍 PP-LCNet_x1_0_doc_ori 推理模型 /训练模型 99.06 2.62 / 0.59 3.24 / 1.19 7 基于PP-LCNet_x1_0的文档图像分类模型,含有四个类别,即0度,90度,180度,270度
+
文本图像矫正模块(可选): 模型 模型下载链接 CER GPU推理耗时(ms) [常规模式 / 高性能模式] CPU推理耗时(ms) [常规模式 / 高性能模式] 模型存储大小(MB) 介绍 UVDoc 推理模型 /训练模型 0.179 19.05 / 19.05 - / 869.82 30.3 高精度文本图像矫正模型
+
文本行方向分类模块(可选): 模型 模型下载链接 Top-1 Acc(%) GPU推理耗时(ms) CPU推理耗时 (ms) 模型存储大小(MB) 介绍 PP-LCNet_x0_25_textline_ori 推理模型 /训练模型 98.85 2.16 / 0.41 2.37 / 0.73 0.96 基于PP-LCNet_x0_25的文本行分类模型,含有两个类别,即0度,180度 PP-LCNet_x1_0_textline_ori 推理模型 /训练模型 99.42 - / - 2.98 / 2.98 6.5 基于PP-LCNet_x1_0的文本行分类模型,含有两个类别,即0度,180度
+
文本检测模块: 模型 模型下载链接 检测Hmean(%) GPU推理耗时(ms) [常规模式 / 高性能模式] CPU推理耗时(ms) [常规模式 / 高性能模式] 模型存储大小(MB) 介绍 PP-OCRv5_server_det 推理模型 /训练模型 83.8 89.55 / 70.19 383.15 / 383.15 84.3 PP-OCRv5 的服务端文本检测模型,精度更高,适合在性能较好的服务器上部署 PP-OCRv5_mobile_det 推理模型 /训练模型 79.0 10.67 / 6.36 57.77 / 28.15 4.7 PP-OCRv5 的移动端文本检测模型,效率更高,适合在端侧设备部署
+
文本识别模块: 模型 模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms) [常规模式 / 高性能模式] CPU推理耗时(ms) [常规模式 / 高性能模式] 模型存储大小(MB) 介绍 PP-OCRv5_server_rec 推理模型 /训练模型 86.38 8.46 / 2.36 31.21 / 31.21 81 PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 PP-OCRv5_mobile_rec 推理模型 /训练模型 81.29 5.43 / 1.46 21.20 / 5.32 16
+
小友+ 中集成了 v5 版本的 Mobile 模型,如果您更注重模型的精度,请选择精度较高的模型。
+
+文档图像方向分类模块( a.oonx)
+文本图像矫正模块 b.onnx
+文本行方向分类模块 c.onnx
+文本检测模块> d.onxx
+文本识别模块> e.onnx
+
+
tar xf PP-LCNet_x1_0_doc_ori_infer.tar tar xf UVDoc_infer.tar tar xf PP-OCRv5_mobile_det_infer.tar tar xf PP-LCNet_x1_0_textline_ori_infer.tar tar xf PP-OCRv5_mobile_rec_infer
+
使用 Paddle2ONNX 将Paddle静态图模型转换为ONNX模型格式:
+
cd PP-LCNet_x1_0_doc_ori_infer paddle2onnx --model_dir . ` --model_filename inference.json ` --params_filename inference.pdiparams ` --save_file ./model.onnx ` --opset_version 18 ` --enable_onnx_checker True ` --optimize_tool polygraphy cd UVDoc_infer paddle2onnx --model_dir . ` --model_filename inference.json ` --params_filename inference.pdiparams ` --save_file ./model.onnx ` --opset_version 18 ` --enable_auto_update_opset True ` --enable_onnx_checker True ` --optimize_tool polygraphy cd PP-OCRv5_mobile_det_infer paddle2onnx --model_dir . ` --model_filename inference.json ` --params_filename inference.pdiparams ` --save_file ./model.onnx ` --opset_version 18 ` --enable_onnx_checker True ` --optimize_tool polygraphy cd PP-LCNet_x1_0_textline_ori_infer paddle2onnx --model_dir . ` --model_filename inference.json ` --params_filename inference.pdiparams ` --save_file ./model.onnx ` --opset_version 18 ` --enable_onnx_checker True ` --optimize_tool onnxoptimizer cd PP-OCRv5_mobile_rec_infer paddle2onnx --model_dir . ` --model_filename inference.json ` --params_filename inference.pdiparams ` --save_file ./model.onnx ` --opset_version 18 ` --enable_onnx_checker True ` --optimize_tool onnxoptimizer
+
+
+注意:对于OCR模型,转化过程中必须采用动态shape的形式,否则预测结果可能与直接使用Paddle预测有细微不同。
+另外,以下几个模型暂不支持转换为 ONNX 模型:
+NRTR、SAR、RARE、SRN
+
+
+注意:当前Paddle2ONNX版本(v1.2.3) 现已默认支持动态shape,即 float32[p2o.DynamicDimension.0,3,p2o.DynamicDimension.1,p2o.DynamicDimension.2],选项 --input_shape_dict 已废弃。如果有shape调整需求可使用如下命令进行Paddle模型输入shape调整。
+python3 -m paddle2onnx.optimize --input_model inference/det_onnx/model.onnx ` --output_model inference/det_onnx/model.onnx ` --input_shape_dict "{'x': [-1,3,-1,-1]}"
+
+
+
+
如你对导出的 ONNX 模型有优化的需求,推荐使用 onnxslim 对模型进行优化:
+
pip install onnxslim onnxslim input.onnx model.onnx
+
3. 推理预测
+
需要先安装 opencv、shapely、pyclipper等依赖包, 以中文OCR模型为例,使用 ONNXRuntime 预测可执行如下命令:
+
pip install opencv-python pip install shapely pip install pyclipper pip install scikit-image pip install albumentations pip install lmdb
+
cd PaddleOCR python ./tools/infer/predict_system.py --use_gpu=False --use_onnx=True ` --det_model_dir=../model/c.onnx ` --rec_model_dir=../model/e.onnx ` --cls_model_dir=../model/d.onnx ` --image_dir=./deploy/lite/imgs/lite_demo.png
+
以中文OCR模型为例,使用 Paddle Inference 预测可执行如下命令:
+
cd PaddleOCR python ./tools/infer/predict_system.py --use_gpu=False ` --rec_image_shape=3,48,320 ` --cls_model_dir=../model/ch_ppocr_mobile_v2.0_cls_infer ` --rec_model_dir=../model/ch_PP-OCRv5_rec_infer ` --det_model_dir=../model/ch_PP-OCRv5_det_infer ` --image_dir=./deploy/lite/imgs/lite_demo.png
+
执行命令后在终端会打印出预测的识别信息,并在 ./inference_results/ 下保存可视化结果。
+
ONNXRuntime 执行效果:
+
+
Paddle Inference 执行效果:
+
+
Q1: 小友+ ONXX 模型支持的 最大 IR VERSION ?
+
+
+
+Paddle2ONNX使用了最新的ONNX协议,导出的模型在使用低版本ONNX Runtime加载时,会出现此问题,可通过如下代码修改模型IR VERSION解决,重新加载新保存的new_model.onnx即可。
+
+
import onnx model = onnx.load("model.onnx") model.ir_version = 9 onnx.save(model, "new_model.onnx")
+
+
\ No newline at end of file
diff --git a/docs/introduction/mixed/wildcard/index.html b/docs/introduction/mixed/wildcard/index.html
new file mode 100644
index 00000000..2bc236a2
--- /dev/null
+++ b/docs/introduction/mixed/wildcard/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+通配符 | WinUI
+
+
+
+
+
+
+
+本页总览
+
通配符示例
+
当您想要查找特定项目却不能准确记得如何拼写时,请尝试在查询中使用通配符。
+
通配符是文本值中代替未知字符的特殊字符,可方便使用类似但不相同的数据查找多个项目。 通配符也有助于获得基于特定模式匹配的数据。
+
字符
说明 示例 * 匹配任意字符数。 您可以在字符串中使用星号 (*)。 "wh*" 将找到 what、white 和 why,但找不到 awhile 或 watch。 ? 在特定位置中匹配单个字母。 "b?ll"可以找到 ball、bell 和 bill。 [ ] 匹配方括号中的字符。 “b[ae]ll”将找到 ball 和 bell,但找不到 bill。 ! 在方括号中排除字符。 “b[!ae]ll”将找到 bill 和 bull,但找不到 ball 或 bell。“Like “[!a]*””将找到不以字母 a 开头的所有项目。 - 匹配一个范围内的字符。 记住以升序指定字符(A 到 Z,而不是 Z 到 A)。 “b[a-c]d”将找到 bad、bbd 和 bcd。 # 匹配任意单个数字字符。 “1#3”将找到 103、113 和 123。
+
要匹配特殊字符,如问号 (?)、井号 (#) 和星号 ( ),将其置于方括号中。*
+
匹配表达式的通配符模式示例
+
字 符 用于匹配 ? 或 _(下划线) 任何单字符 * 或 % 零个或多个字符 # 任意一位数字 (0 — 9) [charlist] 字符列表中的任意单字符 [!charlist] 不在字符列表中的任意单字符 [a-zA-Z0-9] 任意字母数字字符 [A-Z] 从 A 到 Z 范围内的任意大写字母。 注意: 当您指定字符区域时,字符必须以升序排序出现。 例如,[Z-A] 不是有效模式。
+
+
\ No newline at end of file
diff --git a/docs/introduction/setting/action_group_setting/index.html b/docs/introduction/setting/action_group_setting/index.html
new file mode 100644
index 00000000..cf7e2333
--- /dev/null
+++ b/docs/introduction/setting/action_group_setting/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+action_group_setting | WinUI
+
+
+
+
+
+
+
+系统配置要求 setting action_group_setting 本页总览
动作分组隐藏设置
+
+
+该界面控制动作列表中的分组是否显示。
+
+
+
+
+默认所有的动作分组都会显示,如果想控制某个不常用的分组及动作不显示,可以在此界面取消勾选相应的分组。
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/setting/workflow/index.html b/docs/introduction/setting/workflow/index.html
new file mode 100644
index 00000000..b32df751
--- /dev/null
+++ b/docs/introduction/setting/workflow/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+工作流设置 | WinUI
+
+
+
+
+
+
+
+
+
+
+启用当前选项,会安装鼠标/键盘驱动(需要管理员权限)。安装完成之后需要重启操作系统才能生效。
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/tesseract/Data-Files/index.html b/docs/introduction/tesseract/Data-Files/index.html
new file mode 100644
index 00000000..c75d2a8b
--- /dev/null
+++ b/docs/introduction/tesseract/Data-Files/index.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+Data-Files | WinUI
+
+
+
+
+
+
+
+本页总览
训练数据文件
+
我们有三套由谷歌训练的官方 .traineddata 文件,适用于 tesseract 4.00 及更高版本。这些文件分别存放在三个不同的代码仓库中。
+
+tessdata_fast (2017 年 9 月)在速度与准确性之间具有最佳的 “性价比”,采用 Integer(整数)模型。
+tessdata_best (2017 年 9 月)在谷歌的评估数据上能取得最佳结果,速度较慢,采用 Float(浮点数)模型。这些是唯一可以用作微调训练基础的模型。
+tessdata (2016 年 11 月和 2017 年 9 月)这些包含 2016 年的旧版 Tesseract 模型。长短期记忆(LSTM)模型已使用 tessdata_best 长短期记忆模型的整数版本进行了更新。(基于 Cube 的印地语、阿拉伯语等旧版 Tesseract 模型已被删除)。
+
+
当使用来自 tessdata_best 和 tessdata_fast 代码仓库的训练数据文件时,仅支持基于新的长短期记忆(LSTM)的光学字符识别(OCR)引擎(--oem 1)。这些文件不支持旧版 Tesseract 引擎(--oem 0),所以 Tesseract 的 oem 模式 '0' 和 '2' 对它们不起作用。
+
特殊数据文件
+
+
注意 :这两个数据文件与旧版本的 Tesseract 兼容。osd 与 3.01 及更高版本兼容,equ 与 3.02 及更高版本兼容。
+
更新后的数据文件(2017 年 9 月 15 日)
+
我们在 GitHub 上的三个不同代码仓库中有三套 .traineddata 文件。这些文件与 Tesseract 4.0x + 和 5.0.0.Alpha 兼容。
+
训练模型 速度 准确性 支持旧版识别器 可重新训练 tessdata 旧版 + 长短期记忆(LSTM)(整数化的 tessdata_best 模型) 比 tessdata_best 快 准确性略低于 tessdata_best 是 否 tessdata_best 仅长短期记忆(LSTM)(基于 langdata ) 最慢 最准确 否 是 tessdata_fast 比 tessdata_best 网络更小的整数化长短期记忆(LSTM)模型 最快 最不准确 否 否
+
大多数用户会需要 tessdata_fast,并且它将作为 Linux 发行版的一部分发布。
+
tessdata_best 适合那些愿意牺牲大量速度以换取稍高准确性的用户。对于高级用户,它也是唯一一套可用于某些重新训练场景的文件。
+
tessdata 中的第三套文件是唯一支持旧版识别器的。2016 年 11 月的 4.00 文件同时包含旧版和较旧的长短期记忆(LSTM)模型。tessdata 中的当前文件集包含旧版模型和较新的长短期记忆(LSTM)模型(tessdata_best 中 4.00.00 alpha 模型的整数版本)。
+
注意 :当使用 tessdata_best 和 tessdata_fast 代码仓库中的新模型时,仅支持基于新的长短期记忆(LSTM)的光学字符识别(OCR)引擎。这些文件不支持旧版引擎,所以 Tesseract 的 oem 模式 '0' 和 '2' 对它们不起作用。
+
4.00 版本的数据文件(2016 年 11 月 29 日)
+
tessdata 标记为 4.0.0 包含 2017 年 9 月的模型,这些模型已使用 tessdata_best 长短期记忆(LSTM)模型的 Integer(整数)版本进行了更新。这套训练数据文件支持使用 --oem 0 的旧版识别器以及使用 --oem 1 的长短期记忆(LSTM)模型。
+
tessdata 标记为 4.00 包含 2016 年的模型。各个语言文件的链接列在下面的表格中。
+
注意 :kur 数据文件自 3.04 版本后未更新。对于哥特体(Fraktur),请使用来自 tessdata_fast 或 tessdata_best 代码仓库的较新数据文件。
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/tesseract/Languages_Scripts/index.html b/docs/introduction/tesseract/Languages_Scripts/index.html
new file mode 100644
index 00000000..f26e78a4
--- /dev/null
+++ b/docs/introduction/tesseract/Languages_Scripts/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+Languages/Scripts supported Tesseract OCR | WinUI
+
+
+
+
+
+
+
+系统配置要求 tesseract Languages/Scripts supported Tesseract OCR 本页总览
Languages/Scripts supported Tesseract OCR
+
Languages
+
LangCode Language 4.00 4.0.0 4.0.0 4.0.0 Nov. 2016 tessdata tessdata_best tessdata_fast afr Afrikaans x x x x amh Amharic x x x x ara Arabic x x x x asm Assamese x x x x aze Azerbaijani x x x x aze_cyrl Azerbaijani - Cyrilic x x x x bel Belarusian x x x x ben Bengali x x x x bod Tibetan x x x x bos Bosnian x x x x bre Breton x x x x bul Bulgarian x x x x cat Catalan; Valencian x x x x ceb Cebuano x x x x ces Czech x x x x chi_sim Chinese - Simplified x x x x chi_tra Chinese - Traditional x x x x chr Cherokee x x x x cos Corsican x x x cym Welsh x x x x dan Danish x x x x dan_frak Danish - Fraktur (contrib) deu German x x x x deu_frak German - Fraktur (contrib) deu_latf German (Fraktur Latin) x x x x dzo Dzongkha x x x x ell Greek, Modern (1453-) x x x x eng English x x x x enm English, Middle (1100-1500) x x x x epo Esperanto x x x x equ Math / equation detection module x x x est Estonian x x x x eus Basque x x x x fao Faroese x x x fas Persian x x x x fil Filipino (old - Tagalog) x x x fin Finnish x x x x fra French x x x x frk German - Fraktur (now deu_latf) x x x x frm French, Middle (ca.1400-1600) x x x x fry Western Frisian x x x gla Scottish Gaelic x x x gle Irish x x x x glg Galician x x x x grc Greek, Ancient (to 1453) (contrib) x x x x guj Gujarati x x x x hat Haitian; Haitian Creole x x x x heb Hebrew x x x x hin Hindi x x x x hrv Croatian x x x x hun Hungarian x x x x hye Armenian x x x iku Inuktitut x x x x ind Indonesian x x x x isl Icelandic x x x x ita Italian x x x x ita_old Italian - Old x x x x jav Javanese x x x x jpn Japanese x x x x kan Kannada x x x x kat Georgian x x x x kat_old Georgian - Old x x x x kaz Kazakh x x x x khm Central Khmer x x x x kir Kirghiz; Kyrgyz x x x x kmr Kurmanji (Kurdish - Latin Script) x x x x kor Korean x x x x kor_vert Korean (vertical) x x x x kur Kurdish (Arabic Script) lao Lao x x x x lat Latin x x x x lav Latvian x x x x lit Lithuanian x x x x ltz Luxembourgish x x x x mal Malayalam x x x x mar Marathi x x x x mkd Macedonian x x x x mlt Maltese x x x x mon Mongolian x x x x mri Maori x x x x msa Malay x x x x mya Burmese x x x x nep Nepali x x x x nld Dutch; Flemish x x x x nor Norwegian x x x x oci Occitan (post 1500) x x x x ori Oriya x x x x osd Orientation and script detection module x x x x pan Panjabi; Punjabi x x x x pol Polish x x x x por Portuguese x x x x pus Pushto; Pashto x x x x que Quechua x x x x ron Romanian; Moldavian; Moldovan x x x x rus Russian x x x x san Sanskrit x x x x sin Sinhala; Sinhalese x x x x slk Slovak x x x x slk_frak Slovak - Fraktur (contrib) slv Slovenian x x x x snd Sindhi x x x x spa Spanish; Castilian x x x x spa_old Spanish; Castilian - Old x x x x sqi Albanian x x x x srp Serbian x x x x srp_latn Serbian - Latin x x x x sun Sundanese x x x x swa Swahili x x x x swe Swedish x x x x syr Syriac x x x x tam Tamil x x x x tat Tatar x x x x tel Telugu x x x x tgk Tajik x x x x tgl Tagalog (new - Filipino) x tha Thai x x x x tir Tigrinya x x x x ton Tonga x x x x tur Turkish x x x x uig Uighur; Uyghur x x x x ukr Ukrainian x x x x urd Urdu x x x x uzb Uzbek x x x x uzb_cyrl Uzbek - Cyrilic x x x x vie Vietnamese x x x x yid Yiddish x x x x yor Yoruba x x x x
+
Scripts
+
Script 4.00 4.0.0 4.0.0 4.0.0 Nov 2016 tessdata tessdata_best tessdata_fast arab Arabic x x x armn Armenian x x x beng Bengali x x x cans Canadian_Aboriginal x x x cher Cherokee x x x cyrl Cyrillic x x x deva Devanagari x x x ethi Ethiopic x x x frak Fraktur x x x geor Georgian x x x grek Greek x x x gujr Gujarati x x x guru Gurmukhi x x x hans HanS (Han simplified) x x x hans-vert HanS_vert (Han simplified vertical) x x x hant HanT (Han traditional) x x x hant-vert HanT_vert (Han traditional vertical) x x x hang Hangul x x x hang-vert Hangul_vert (Hangul vertical) x x x hebr Hebrew x x x jpan Japanese x x x jpan-vert Japanese_vert (Japanese vertical) x x x knda Kannada x x x khmr Khmer x x x laoo Lao x x x latn Latin x x x mlym Malayalam x x x mymr Myanmar x x x orya Oriya(Odia) x x x sinh Sinhala x x x syrc Syriac x x x taml Tamil x x x telu Telugu x x x thaa Thaana x x x thai Thai x x x tibt Tibetan x x x viet Vietnamese x x x
+
+
\ No newline at end of file
diff --git a/docs/introduction/tesseract/tesstrain/index.html b/docs/introduction/tesseract/tesstrain/index.html
new file mode 100644
index 00000000..f03ef296
--- /dev/null
+++ b/docs/introduction/tesseract/tesstrain/index.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+Tesseract 5 的训练 | WinUI
+
+
+
+
+
+
+
+系统配置要求 tesseract Tesseract 5 的训练 本页总览
+
使用 tesseract-ocr/tesstrain 来训练字体,可按以下步骤操作:
+
1. 环境准备
+
首先,要确保你的系统已安装 Tesseract OCR 及其相关的开发库。同时,需要安装一些必要的工具,像 Python、make、imagemagick 等。以 Ubuntu 为例,可以使用下面的命令进行安装:
+
sudo apt-get update sudo apt-get install tesseract-ocr tesseract-ocr-dev python3 make imagemagick
+
2. 克隆 tesstrain 仓库
+
把 tesseract-ocr/tesstrain 仓库克隆到本地:
+
git clone https://github.com/tesseract-ocr/tesstrain.git cd tesstrain
+
3. 准备训练数据
+
训练数据主要包含图像文件和对应的标注文本文件。图像文件应当是包含文本的图像,标注文本文件则要包含图像中的准确文本内容。文件名要保持一致,例如 image_001.tif 对应的标注文件为 image_001.gt.txt。
+
你可以手动创建这些文件,也能借助一些工具来生成。以下是一个简单的示例,展示如何生成训练数据:
+
# 创建一个包含文本的图像 convert -background white -fill black -font Arial -pointsize 30 label:"Hello, World!" image_001.tif # 创建对应的标注文件 echo "Hello, World!" > image_001.gt.txt
+
4. 配置训练参数
+
在 tesstrain 目录下,你可以对 Makefile 进行编辑,来配置训练参数。主要的参数如下:
+
+LANG:要训练的语言代码,比如 eng 代表英语。
+TESSDATA:Tesseract 的数据目录,默认是 ../tessdata。
+GROUND_TRUTH_DIR:训练数据的目录。
+MODEL_NAME:训练后模型的名称。
+
+
示例配置如下:
+
LANG = eng TESSDATA = ../tessdata GROUND_TRUTH_DIR = ./data MODEL_NAME = my_custom_model
+
5. 开始训练
+
配置好参数之后,就可以使用 make 命令开始训练:
+
+
6. 监控训练进度
+
训练过程可能会持续较长时间,你可以通过查看日志文件来监控训练进度:
+
tail -f data/logs/$(LANG).log
+
7. 评估训练结果
+
训练完成后,你可以使用测试数据来评估训练结果:
+
+
8. 导出训练好的模型
+
训练完成且评估通过后,你可以把训练好的模型导出为 .traineddata 文件:
+
+
完整示例脚本
+
下面是一个完整的示例脚本,展示了如何使用 tesstrain 训练自定义字体:
+
#!/bin/bash # 克隆 tesstrain 仓库 git clone https://github.com/tesseract-ocr/tesstrain.git cd tesstrain # 准备训练数据 mkdir -p data convert -background white -fill black -font Arial -pointsize 30 label:"Hello, World!" data/image_001.tif echo "Hello, World!" > data/image_001.gt.txt # 配置训练参数 cat << EOF > Makefile.local LANG = eng TESSDATA = ../tessdata GROUND_TRUTH_DIR = ./data MODEL_NAME = my_custom_model EOF # 开始训练 make training # 评估训练结果 make evaluate # 导出训练好的模型 make traineddata
+
把上述脚本保存为 train_font.sh,然后赋予执行权限并运行:
+
chmod +x train_font.sh ./train_font.sh
+
通过以上步骤,你就能使用 tesseract-ocr/tesstrain 训练自定义字体了。
+
关键注意事项和技巧:
+
+高质量的训练数据: 训练数据的质量直接影响模型的准确率。确保你的训练数据包含足够多的字符、不同的文本模式和清晰的图像。
+足够的数据量: 对于复杂的字体,你需要大量的训练数据才能获得好的结果。
+字体变体: 如果你的字体有不同的样式(例如粗体、斜体),你需要为每种样式分别准备训练数据或考虑训练一个能够识别多种样式的模型。
+字符覆盖率: 确保你的训练数据覆盖了你希望 Tesseract 能够识别的所有字符。
+迭代次数: 训练需要一定的迭代次数才能收敛。你需要根据实际情况调整迭代次数。
+学习率和其他超参数: 高级的用户可能需要调整训练的学习率和其他超参数来优化模型性能。
+
+
这是一个高层次的概述。实际操作中,你需要仔细阅读 tesstrain 的文档,了解每个步骤的具体细节和参数。根据你的具体需求和字体特点,可能需要进行多次尝试和调整才能获得满意的结果。
+
+
\ No newline at end of file
diff --git a/docs/introduction/webdriver/browser_directory/index.html b/docs/introduction/webdriver/browser_directory/index.html
new file mode 100644
index 00000000..3991d106
--- /dev/null
+++ b/docs/introduction/webdriver/browser_directory/index.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+浏览器配置目录 | WinUI
+
+
+
+
+
+
+
+本页总览
+
浏览器的用户目录当谈到浏览器的数据存储时,profile-directory 和 user-data-dir 是两个密切相关的概念,尤其是在 Chromium 浏览器(如 Chrome、Edge)中。理解它们的区别和联系对于管理浏览器数据至关重要。
+
+
user-data-dir (用户数据目录)
+
user-data-dir 是一个更广泛、更顶层的概念。它指的是浏览器存储所有与用户相关数据的主目录。这个目录包含了浏览器所有用户配置文件的数据,以及一些全局性或非特定于某个配置文件的信息。
+
user-data-dir 通常包含:
+
+所有的 profile-directory: 每一个用户配置文件都会在这个目录下有一个独立的子文件夹。
+全局设置: 一些不属于任何特定用户配置文件,而是应用于整个浏览器安装的设置。
+本地状态文件: 浏览器启动时需要的一些内部状态文件。
+
+
用途: 如果你想完整地备份或迁移一个浏览器安装的所有用户数据(包括所有用户配置文件),你就需要复制整个 user-data-dir。
+
举例 (Windows): C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data
+
+
profile-directory (配置文件目录)
+
profile-directory 是 user-data-dir 下的一个子目录。每个独立的 用户配置文件 (例如你为工作、个人、测试等创建的不同浏览器身份)都有自己的 profile-directory。这个目录包含了该特定用户配置文件的所有数据和设置。
+
profile-directory 通常包含:
+
+书签
+浏览历史
+Cookie 和网站数据
+缓存文件
+保存的密码
+扩展程序及其数据
+该配置文件的所有个性化设置和偏好
+
+
用途: 如果你只想备份或管理某个特定的浏览器用户配置文件,你只需要关注对应的 profile-directory。当你创建一个新的浏览器用户时,浏览器就会在 user-data-dir 下创建一个新的 profile-directory。
+
举例 (Windows,默认配置文件): C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data\Default
+
+
关系与区别总结
+
+user-data-dir 是父目录 ,包含了所有与浏览器用户数据相关的内容。
+profile-directory 是 user-data-dir 的子目录 ,对应于浏览器中的一个具体用户配置文件。
+一个 user-data-dir 可以包含 多个 profile-directory 。默认情况下,通常会有一个名为 Default 的 profile-directory。
+
+
你可以把它们想象成:
+
+user-data-dir 就像一个 文件柜 ,里面放着你所有的重要文件。
+profile-directory 就像文件柜里的 每一个抽屉 ,每个抽屉都属于一个特定的项目或类别(一个用户配置文件),里面放着该项目的所有相关文件(书签、历史、设置等)。
+
+
+
如何在浏览器中查找这些目录
+
对于 Chromium 浏览器 (Chrome, Edge 等):
+
+在地址栏输入 chrome://version (或 edge://version)。
+查找 "用户数据目录 (User Data Directory)"。这个路径就是 user-data-dir 。
+查找 "个人资料路径 (Profile Path)"。这个路径就是当前正在使用的 profile-directory 。你会看到它是用户数据目录下的一个子目录(例如 /Default 或 /Profile 1)。
+
+
对于 Firefox (略有不同,但概念相似):
+
+在地址栏输入 about:profiles。
+你会看到一个或多个配置文件列表。每个配置文件都有一个 "根目录 (Root Directory)",这就是该配置文件的 profile-directory 。
+Firefox 没有一个直接显示的 user-data-dir 概念,但所有的配置文件通常都位于 ~/.mozilla/firefox/ (Linux), ~/Library/Application Support/Firefox/Profiles/ (macOS), 或 %APPDATA%\Mozilla\Firefox\Profiles\ (Windows) 这个更上层的目录下。
+
+
了解这两个概念能帮助你更好地管理浏览器的宝贵数据。
+
+
\ No newline at end of file
diff --git a/docs/introduction/webdriver/download/index.html b/docs/introduction/webdriver/download/index.html
new file mode 100644
index 00000000..9921da97
--- /dev/null
+++ b/docs/introduction/webdriver/download/index.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+浏览器 WebDriver 驱动 | WinUI
+
+
+
+
+
+
+
+系统配置要求 webdriver 浏览器 WebDriver 驱动 本页总览
+
使用 Selenium WebDriver 进行浏览器自动化测试时,你需要为不同的浏览器下载对应的 WebDriver 驱动。每个驱动都是一个独立的、可执行的程序,它充当 Selenium 脚本和实际浏览器之间的桥梁。
+
重要提示:
+
+版本匹配是关键! 你下载的 WebDriver 驱动版本必须与你本地安装的浏览器版本兼容。如果版本不匹配,你的自动化脚本很可能会报错。
+Selenium Manager: Selenium 4.6 及更高版本引入了 Selenium Manager,它通常可以自动检测你的浏览器版本并下载相应的 WebDriver。这意味着在很多情况下,你可能不再需要手动下载和管理这些驱动了。然而,了解手动下载的方法仍然很有用,尤其是在离线环境或遇到自动下载问题时。
+
+
+
1. Google Chrome (ChromeDriver)
+
ChromeDriver 是 Google Chrome 浏览器的 WebDriver 驱动。
+
+
+检查 Chrome 版本:
+
+打开 Chrome 浏览器。
+在地址栏输入 chrome://version 并回车。
+记下你的 Chrome 版本号(例如:126.0.6478.127)。
+
+
+
+下载 ChromeDriver:
+
+访问 Chrome for Testing availability dashboard :https://googlechromelabs.github.io/chrome-for-testing/
+
+对于 Chrome 115 及更高版本: Google 采用了新的发布机制,你需要在这个页面上找到与你的 Chrome 版本最接近的 Stable (稳定版) 、Beta (测试版) 、Dev (开发版) 或 Canary (金丝雀版) 的 ChromeDriver 下载链接。通常,你会选择稳定版。找到对应的版本后,点击其下方的 JSON 文件链接,或者直接复制下载链接。
+对于 Chrome 114 及更低版本: 你可以在旧的 ChromeDriver 下载页面找到它们:https://chromedriver.chromium.org/downloads。
+
+
+根据你的操作系统(Windows, macOS, Linux)和架构(x64, arm64, win32),下载对应的 chromedriver.zip 文件。
+解压下载的 chromedriver.zip 文件,你会得到一个 chromedriver.exe (Windows) 或 chromedriver (macOS/Linux) 可执行文件。
+
+
+
+
+
2. Mozilla Firefox (GeckoDriver)
+
GeckoDriver 是 Mozilla Firefox 浏览器的 WebDriver 驱动。
+
+
+检查 Firefox 版本:
+
+打开 Firefox 浏览器。
+在地址栏输入 about:support 并回车。
+查找 "应用程序基础" (Application Basics) 部分下的 "版本" (Version) 号。
+
+
+
+下载 GeckoDriver:
+
+访问 GeckoDriver GitHub 发布页面 :https://github.com/mozilla/geckodriver/releases
+通常,你需要下载最新稳定版本的 GeckoDriver。向下滚动页面,找到最新发布的版本(例如:v0.34.0)。
+在 "Assets" (资产) 部分,根据你的操作系统(Windows, macOS, Linux)和架构(x64, x86)选择对应的 geckodriver.zip 或 geckodriver.tar.gz 文件下载。
+解压下载的文件,你会得到一个 geckodriver.exe (Windows) 或 geckodriver (macOS/Linux) 可执行文件。
+
+
+
+
+
3. Microsoft Edge (MSEdgeDriver)
+
MSEdgeDriver 是 Microsoft Edge (基于 Chromium 的新版 Edge) 浏览器的 WebDriver 驱动。
+
+
+检查 Edge 版本:
+
+打开 Microsoft Edge 浏览器。
+在地址栏输入 edge://version 并回车。
+记下你的 Microsoft Edge 版本号。
+
+
+
+下载 MSEdgeDriver:
+
+访问 Microsoft Edge Developer WebDriver 页面 :https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/
+在这个页面,你会看到不同 Edge 通道(稳定版、测试版、开发版、Canary 版)对应的 WebDriver 版本。务必选择与你的 Edge 浏览器版本完全匹配的 WebDriver。
+根据你的操作系统(Windows, macOS, Linux)和架构(x64, x86, ARM64),下载对应的 msedgedriver.zip 文件。
+解压下载的文件,你会得到一个 msedgedriver.exe (Windows) 或 msedgedriver (macOS/Linux) 可执行文件。
+
+
+
+
+
下载后的处理
+
下载并解压 WebDriver 驱动后,你需要将这些可执行文件放置在你的系统 PATH 环境变量 中包含的某个目录里,或者在你的自动化脚本中明确指定它们的路径。将它们放在 PATH 中是最方便的做法,这样 Selenium 就可以直接找到并使用它们。
+
+
\ No newline at end of file
diff --git a/docs/introduction/webdriver/locators/index.html b/docs/introduction/webdriver/locators/index.html
new file mode 100644
index 00000000..c655d8c2
--- /dev/null
+++ b/docs/introduction/webdriver/locators/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+定位策略 | WinUI
+
+
+
+
+
+
+
+
+
识别 DOM 中一个或多个特定元素的方法。
+
在 WebDriver 中提供了对这 8 种传统定位策略的支持:
+
Locator Description ID 定位 ID 属性与搜索值匹配的元素 XPATH 定位与 XPath 表达式匹配的元素 LINK_TEXT 定位其可见文本与搜索值匹配的锚元素 PARTIAL_LINK_TEXT 定位其可见文本包含搜索值的锚元素。如果匹配多个元素,则只会选择第一个。 NAME 定位 NAME 属性与搜索值匹配的元素 TAG_NAME 定位标签名称与搜索值匹配的元素 CLASS_NAME 定位类名包含搜索值的元素(不允许使用复合类名) CSS_SELECTOR 定位与 CSS 选择器匹配的元素
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/action/index.html b/docs/introduction/workflow/action/index.html
new file mode 100644
index 00000000..f80f570e
--- /dev/null
+++ b/docs/introduction/workflow/action/index.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+动作 | WinUI
+
+
+
+
+
+
+
+本页总览
+
运行时参数
+
右边的菜单项,如下图所示:
+
+
+
+复制包含运行参数的图像。
+
+
+
+包含运行参数的图像保存到本地磁盘。
+
+
+
+脚本编辑器,设置运行时参数。
+
+
+
+用来解决 某些动作反复执行时,由于内置对象的初始化比较耗,导致不必要的时间开销。但是动作在执行后会保持内存占用。
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/features/index.html b/docs/introduction/workflow/features/index.html
new file mode 100644
index 00000000..792a3490
--- /dev/null
+++ b/docs/introduction/workflow/features/index.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+流程操作技巧 | WinUI
+
+
+
+
+
+
+
+
+
+
+复制
+在流程标题栏点击右键,会弹出以下右键菜单。点击复制即可复制流程。
+
+
+
+
+
+重命名
+在流程标题栏双击左键即可打开以下窗口。输入新的流程名称,点击确定即可。
+
+
+
+
3 动作视图
+
按下鼠标右键可拖动视图位置。
+
+
+支持的快捷键
+Alt + Del 删除出口连接线
+Ctrl + C 复制动作
+Ctrl + V 粘贴动作
+Delete 删除动作
+Esc 关闭打开的窗口
+Space 恢复动作视图
+
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/logic/index.html b/docs/introduction/workflow/logic/index.html
new file mode 100644
index 00000000..bf1f9dca
--- /dev/null
+++ b/docs/introduction/workflow/logic/index.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+logic | WinUI
+
+
+
+
+
+
+
+本页总览
动作使用逻辑
+
+
+将动作添加到视图上。
+
+
+设置每个动作的运行时参数。
+
+
+将动作用线连接起来形成流程。
+
+
+每个动作基本上都有运行时参数(输入参数)和输出。
+
+
+从属性面板中设置运行时参数。
+
+
+其中判断 等动作有两个分支,其它动作通常只有一个分支,左侧分支表示成功运行,右侧分支表示非成功执行。
+
+
+有些动作支持子动作
+
+
+动作可以隐藏,在流程执行的过程中会忽略
+
+
+大多数动作都支持预览运行结果,可以打开预览窗口查看运行执行结果。
+
+
+每个动作的运行时参数基本上都支持 Python 表达式或者选择已有的前置动作。
+
+
+单个流程,都是从Start 动作开始执行。
+
+
+流程中所有连接的动作执行完毕后,流程默认不退出,主要是为了处理康诸如 **鼠标键盘监听 **、线程 之类的异步动作。
+
+
+项目中单个流程可以单独运行,并且最后一个动作执行完毕后退出流程。
+
+
+
动作作用域
+
动作的作用域通常包括动作本身、兄弟动作所在的流程范围及子动作所在的流程范围,但不包括父动作所在的流程。
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/property/index.html b/docs/introduction/workflow/property/index.html
new file mode 100644
index 00000000..0481bceb
--- /dev/null
+++ b/docs/introduction/workflow/property/index.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+项目属性 | WinUI
+
+
+
+
+
+
+
+
+
每个项目都有几个固定的属性,用来控制项目流程执行时的行为。如果没有动作被选择的时候会显示此项目属性。参考下面的界面的右侧部分。
+
+
+
+名称
+项目名称
+
+
+运行时隐藏窗口
+在开始运行流程的时候隐藏 小友+ 的主窗口,这样可以不影响鼠标或者是截图等相关的操作。
+
+
+主流程
+项目的入口流程。一个项目是可以包含多个流程,这里可以选择项目一开始所执行的流程。
+
+
+描述信息
+项目相关的一些备注信息。
+
+
+
动作 * 通用属性
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/record/index.html b/docs/introduction/workflow/record/index.html
new file mode 100644
index 00000000..89986096
--- /dev/null
+++ b/docs/introduction/workflow/record/index.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+鼠标/键盘宏录制 | WinUI
+
+
+
+
+
+
+
+
+
录制功能可以记录鼠标和键盘的操作,比如: 移动、点击、双击等、 并可借助流程中的相应动作 键盘/鼠标宏重放 反复执行。操作方式如下 :
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/resources/index.html b/docs/introduction/workflow/resources/index.html
new file mode 100644
index 00000000..738777e8
--- /dev/null
+++ b/docs/introduction/workflow/resources/index.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+资源 | WinUI
+
+
+
+
+
+
+
+本页总览
+
流程在分发的时候,往往会碰到缺少资源问题,比如图片、文件等,导致流程在其它电脑上无法执行。要解决此种问题,可以把相应的资源或者文件嵌入流程当中使用,这样可以避免依赖本地资源文件。
+
+
+
+添加本地资源。
+
+
+
+删除已经存在资源。
+
+
右键菜单
+
+
+
+删除
+
+
+添加文件
+
+
+重命名
+
+
+替换
+
+
+
+从本地文件替换当前选中的图像。
+
+
+
+从剪切板替换当前选中的图像。
+
+
+
+从剪切板粘贴图像。
+
+
+
\ No newline at end of file
diff --git a/docs/introduction/workflow/variable/index.html b/docs/introduction/workflow/variable/index.html
new file mode 100644
index 00000000..89a3993b
--- /dev/null
+++ b/docs/introduction/workflow/variable/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+变量 | WinUI
+
+
+
+
+
+
+
+
+
变量必须符合Python的变量定义规则,变量可以扩展流程的功能。变量的界面如下图:
+
+
+添加
+
+点击添加 按钮即可打开添加变量窗口, 输入变量的 名称 和变量的 值 ,点击确定 即可添加变量。类似于 Python 的赋值语句。如:
+
+
+
+
+
+
+
变量一旦创建无法修改。如果修改变量,只能删除,然后重新添加。
+
+
\ No newline at end of file
diff --git a/docs/network/openwrt_dns/index.html b/docs/network/openwrt_dns/index.html
new file mode 100644
index 00000000..8246c61c
--- /dev/null
+++ b/docs/network/openwrt_dns/index.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+openwrt_dns | WinUI
+
+
+
+
+
+
+
+本页总览
在 OpenWrt 中设置 DNS 有两种主要方法,具体取决于您想要达到的目的。
+
方法一:更改 OpenWrt 路由器本身的 DNS 服务器
+
这种方法让 OpenWrt 路由器作为 DNS 代理服务器,将您网络中所有设备的 DNS 请求转发到您指定的外部 DNS 服务器。这是最常见、最简单的设置方式。
+
+登录 OpenWrt 的 LuCI Web 界面(通常是 http://192.168.1.1)。
+导航到 网络 (Network) -> 接口 (Interfaces) 。
+找到并编辑您的 WAN 接口(通常是连接到互联网的接口)。
+在 高级设置 (Advanced Settings) 选项卡下,取消勾选 “使用路由器提供的 DNS 服务器 (Use DNS servers advertised by peer)” 。
+在下方出现的 “使用自定义 DNS 服务器 (Use custom DNS servers)” 框中,输入您想要使用的 DNS 服务器 IP 地址,例如 Cloudflare 的 1.1.1.1 或 Google 的 8.8.8.8。您可以添加多个以空格分隔。
+点击 保存 (Save) 并 应用 (Apply) 。
+
+
+
方法二:让客户端直接使用自定义 DNS 服务器
+
这种方法可以让 OpenWrt 的 DHCP 服务器告诉您网络中的设备(如电脑、手机)直接使用您指定的 DNS 服务器,而不是路由器本身。这适用于您希望某些设备绕过路由器的 DNS 代理功能,或使用特定 DNS 功能(如广告拦截或内容过滤)。
+
+登录 OpenWrt 的 LuCI Web 界面。
+导航到 网络 (Network) -> DHCP/DNS 。
+在 DHCP 选项卡下的 “高级设置 (Advanced Settings)” 中,找到 “DHCP 选项 (DHCP-Options)” 字段。
+在其中输入 6,DNS1,DNS2 的格式。例如,如果您想使用 Cloudflare 的 DNS,可以输入 6,1.1.1.1,1.0.0.1。
+点击 保存 (Save) 并 应用 (Apply) 。
+
+
两种方法的区别
+
+方法一 (WAN) :路由器自己使用指定的 DNS,而您的设备仍然会从路由器获得 DNS 地址(通常是 192.168.1.1)。然后,路由器会将您的设备的 DNS 请求转发到您在 WAN 接口上设置的 DNS 服务器。这种方法可以方便地实现全网广告拦截或内容过滤。
+方法二 (DHCP) :路由器直接将指定的 DNS 服务器地址推送给网络中的所有设备。设备会直接向该 DNS 服务器发送请求,而不会经过路由器。
+
+
通常,方法一 是大多数用户的首选,因为它更简单,并且可以更好地利用 OpenWrt 的其他功能(如广告拦截)。
+
如果您有更复杂的 DNS 需求,比如需要配置 DNS over HTTPS (DoH) 或 DNS over TLS (DoT) 以加密您的 DNS 查询,则需要安装额外的软件包(如 https-dns-proxy)并进行更高级的配置。
+
+
\ No newline at end of file
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
new file mode 100644
index 00000000..ae31d2e6
--- /dev/null
+++ b/docs/sitemap.xml
@@ -0,0 +1 @@
+https://your-domain.com/ weekly 0.5 https://your-domain.com/actions/ weekly 0.5 https://your-domain.com/actions/ai/BarcodeDetector weekly 0.5 https://your-domain.com/actions/ai/DocumentOrientation weekly 0.5 https://your-domain.com/actions/ai/ImageClassification weekly 0.5 https://your-domain.com/actions/ai/ObjectDetection weekly 0.5 https://your-domain.com/actions/ai/QRCode weekly 0.5 https://your-domain.com/actions/ai/TextDetection weekly 0.5 https://your-domain.com/actions/ai/TextExtract weekly 0.5 https://your-domain.com/actions/ai/TextlineOrientation weekly 0.5 https://your-domain.com/actions/ai/TextRecognition weekly 0.5 https://your-domain.com/actions/ai/TextUnwarping weekly 0.5 https://your-domain.com/actions/algorithm/AccessArray weekly 0.5 https://your-domain.com/actions/algorithm/AccessKey weekly 0.5 https://your-domain.com/actions/algorithm/ArraySize weekly 0.5 https://your-domain.com/actions/algorithm/CalculateCenter weekly 0.5 https://your-domain.com/actions/algorithm/ColorPercentage weekly 0.5 https://your-domain.com/actions/algorithm/ConvertPoint weekly 0.5 https://your-domain.com/actions/algorithm/FilterArea weekly 0.5 https://your-domain.com/actions/algorithm/FilterEllipse weekly 0.5 https://your-domain.com/actions/algorithm/FilterPerimeter weekly 0.5 https://your-domain.com/actions/algorithm/FilterText weekly 0.5 https://your-domain.com/actions/algorithm/FilterVertex weekly 0.5 https://your-domain.com/actions/algorithm/ImageDifference weekly 0.5 https://your-domain.com/actions/algorithm/JoinString weekly 0.5 https://your-domain.com/actions/algorithm/PopBack weekly 0.5 https://your-domain.com/actions/algorithm/PushBack weekly 0.5 https://your-domain.com/actions/algorithm/RandomNumber weekly 0.5 https://your-domain.com/actions/algorithm/RandomPoint weekly 0.5 https://your-domain.com/actions/algorithm/SplitString weekly 0.5 https://your-domain.com/actions/algorithm/SubString weekly 0.5 https://your-domain.com/actions/android/AdbClearText weekly 0.5 https://your-domain.com/actions/android/AdbConnect weekly 0.5 https://your-domain.com/actions/android/AdbDevices weekly 0.5 https://your-domain.com/actions/android/AdbForward weekly 0.5 https://your-domain.com/actions/android/AdbInput weekly 0.5 https://your-domain.com/actions/android/AdbInstall weekly 0.5 https://your-domain.com/actions/android/AdbIsInstalled weekly 0.5 https://your-domain.com/actions/android/AdbKey weekly 0.5 https://your-domain.com/actions/android/Adbkeyboard weekly 0.5 https://your-domain.com/actions/android/AdbLs weekly 0.5 https://your-domain.com/actions/android/AdbMove weekly 0.5 https://your-domain.com/actions/android/AdbPackages weekly 0.5 https://your-domain.com/actions/android/AdbPull weekly 0.5 https://your-domain.com/actions/android/AdbPush weekly 0.5 https://your-domain.com/actions/android/AdbScreenCap weekly 0.5 https://your-domain.com/actions/android/AdbStartApp weekly 0.5 https://your-domain.com/actions/android/AdbStartServer weekly 0.5 https://your-domain.com/actions/android/AdbSwipe weekly 0.5 https://your-domain.com/actions/android/AdbTap weekly 0.5 https://your-domain.com/actions/asynchronous/WhenEvent weekly 0.5 https://your-domain.com/actions/asynchronous/WorkBegin weekly 0.5 https://your-domain.com/actions/asynchronous/WorkExit weekly 0.5 https://your-domain.com/actions/asynchronous/WorkReset weekly 0.5 https://your-domain.com/actions/asynchronous/WorkTask weekly 0.5 https://your-domain.com/actions/asynchronous/WorkThread weekly 0.5 https://your-domain.com/actions/asynchronous/WorkTimer weekly 0.5 https://your-domain.com/actions/asynchronous/WorkWait weekly 0.5 https://your-domain.com/actions/cloud/BaiduTranslate weekly 0.5 https://your-domain.com/actions/control/ActionAlias weekly 0.5 https://your-domain.com/actions/control/ArithmeticCalculate weekly 0.5 https://your-domain.com/actions/control/Break weekly 0.5 https://your-domain.com/actions/control/Code weekly 0.5 https://your-domain.com/actions/control/CodeExpression weekly 0.5 https://your-domain.com/actions/control/Exit weekly 0.5 https://your-domain.com/actions/control/For weekly 0.5 https://your-domain.com/actions/control/GroupAction weekly 0.5 https://your-domain.com/actions/control/If weekly 0.5 https://your-domain.com/actions/control/Invoke weekly 0.5 https://your-domain.com/actions/control/IsEmpty weekly 0.5 https://your-domain.com/actions/control/LoggingControl weekly 0.5 https://your-domain.com/actions/control/LogicalOperator weekly 0.5 https://your-domain.com/actions/control/NameAlias weekly 0.5 https://your-domain.com/actions/control/Param weekly 0.5 https://your-domain.com/actions/control/RelationalOperator weekly 0.5 https://your-domain.com/actions/control/SoftwareTrigger weekly 0.5 https://your-domain.com/actions/detection/BlobDetect weekly 0.5 https://your-domain.com/actions/detection/EllipseDetection weekly 0.5 https://your-domain.com/actions/detection/FeatureDetect weekly 0.5 https://your-domain.com/actions/detection/FindContours weekly 0.5 https://your-domain.com/actions/detection/ImageColorDiscrimination weekly 0.5 https://your-domain.com/actions/detection/LineDetection weekly 0.5 https://your-domain.com/actions/detection/MatchImage weekly 0.5 https://your-domain.com/actions/detection/MatchShapes weekly 0.5 https://your-domain.com/actions/detection/MatchTemplate weekly 0.5 https://your-domain.com/actions/detection/ShapeDetection weekly 0.5 https://your-domain.com/actions/draw/BarcodeCreate weekly 0.5 https://your-domain.com/actions/draw/DrawImage weekly 0.5 https://your-domain.com/actions/draw/DrawRect weekly 0.5 https://your-domain.com/actions/draw/DrawText weekly 0.5 https://your-domain.com/actions/draw/FillColor weekly 0.5 https://your-domain.com/actions/filesystem/CopyFile weekly 0.5 https://your-domain.com/actions/filesystem/DirectoryIterator weekly 0.5 https://your-domain.com/actions/filesystem/FileQuery weekly 0.5 https://your-domain.com/actions/filesystem/FileRead weekly 0.5 https://your-domain.com/actions/filesystem/FileWrite weekly 0.5 https://your-domain.com/actions/filesystem/ImageLoad weekly 0.5 https://your-domain.com/actions/filesystem/ImageSave weekly 0.5 https://your-domain.com/actions/filesystem/ReadLines weekly 0.5 https://your-domain.com/actions/filesystem/StandardPath weekly 0.5 https://your-domain.com/actions/image/AdaptiveThreshold weekly 0.5 https://your-domain.com/actions/image/CenterCropImage weekly 0.5 https://your-domain.com/actions/image/ConnectedComponents weekly 0.5 https://your-domain.com/actions/image/CropImage weekly 0.5 https://your-domain.com/actions/image/CvtColor weekly 0.5 https://your-domain.com/actions/image/ImageBlur weekly 0.5 https://your-domain.com/actions/image/ImageCanny weekly 0.5 https://your-domain.com/actions/image/ImageInRange weekly 0.5 https://your-domain.com/actions/image/ImageMarkRelativeROI weekly 0.5 https://your-domain.com/actions/image/ImageMarkROI weekly 0.5 https://your-domain.com/actions/image/ImageMean weekly 0.5 https://your-domain.com/actions/image/ImageMorphological weekly 0.5 https://your-domain.com/actions/image/ImageNormalize weekly 0.5 https://your-domain.com/actions/image/ImageRotate weekly 0.5 https://your-domain.com/actions/image/ImageScale weekly 0.5 https://your-domain.com/actions/image/ImageStd weekly 0.5 https://your-domain.com/actions/image/ImageThreshold weekly 0.5 https://your-domain.com/actions/image/ResizeImage weekly 0.5 https://your-domain.com/actions/keyboard/ListenKeyboard weekly 0.5 https://your-domain.com/actions/keyboard/PressAndReleaseKey weekly 0.5 https://your-domain.com/actions/keyboard/PressKey weekly 0.5 https://your-domain.com/actions/keyboard/ReleaseKey weekly 0.5 https://your-domain.com/actions/keyboard/SendKey weekly 0.5 https://your-domain.com/actions/keyboard/SendText weekly 0.5 https://your-domain.com/actions/keyboard/WaitKey weekly 0.5 https://your-domain.com/actions/media/CaptureActiveWindow weekly 0.5 https://your-domain.com/actions/media/CaptureScreen weekly 0.5 https://your-domain.com/actions/media/CaptureWindow weekly 0.5 https://your-domain.com/actions/media/MediaPlay weekly 0.5 https://your-domain.com/actions/media/PixelPoint weekly 0.5 https://your-domain.com/actions/media/PlayRecord weekly 0.5 https://your-domain.com/actions/media/VideoFrame weekly 0.5 https://your-domain.com/actions/method/SubString weekly 0.5 https://your-domain.com/actions/mouse/CellClick weekly 0.5 https://your-domain.com/actions/mouse/CellMove weekly 0.5 https://your-domain.com/actions/mouse/Click weekly 0.5 https://your-domain.com/actions/mouse/DoubleClick weekly 0.5 https://your-domain.com/actions/mouse/DragPointer weekly 0.5 https://your-domain.com/actions/mouse/ListenMouse weekly 0.5 https://your-domain.com/actions/mouse/MoveClick weekly 0.5 https://your-domain.com/actions/mouse/MoveDoubleClick weekly 0.5 https://your-domain.com/actions/mouse/MoveOffset weekly 0.5 https://your-domain.com/actions/mouse/MovePointer weekly 0.5 https://your-domain.com/actions/mouse/RightClick weekly 0.5 https://your-domain.com/actions/mouse/WheelMouse weekly 0.5 https://your-domain.com/actions/network/DomainQuery weekly 0.5 https://your-domain.com/actions/network/HttpDownload weekly 0.5 https://your-domain.com/actions/network/HttpGet weekly 0.5 https://your-domain.com/actions/network/HttpHead weekly 0.5 https://your-domain.com/actions/network/HttpPost weekly 0.5 https://your-domain.com/actions/network/NetworkConnect weekly 0.5 https://your-domain.com/actions/network/NetworkListen weekly 0.5 https://your-domain.com/actions/network/NetworkReceive weekly 0.5 https://your-domain.com/actions/network/NetworkSend weekly 0.5 https://your-domain.com/actions/network/ReceiveInput weekly 0.5 https://your-domain.com/actions/network/SendInput weekly 0.5 https://your-domain.com/actions/network/VideoDownload weekly 0.5 https://your-domain.com/actions/pandas/DataFrameQuery weekly 0.5 https://your-domain.com/actions/pandas/IndexLoc weekly 0.5 https://your-domain.com/actions/pandas/IterRow weekly 0.5 https://your-domain.com/actions/pandas/LoadDocument weekly 0.5 https://your-domain.com/actions/pandas/NameLoc weekly 0.5 https://your-domain.com/actions/pandas/RowsCount weekly 0.5 https://your-domain.com/actions/pandas/SaveDocument weekly 0.5 https://your-domain.com/actions/system/AttachProcess weekly 0.5 https://your-domain.com/actions/system/CallMethod weekly 0.5 https://your-domain.com/actions/system/ClipboardValue weekly 0.5 https://your-domain.com/actions/system/CloseHandle weekly 0.5 https://your-domain.com/actions/system/CreateObject weekly 0.5 https://your-domain.com/actions/system/ExistProcess weekly 0.5 https://your-domain.com/actions/system/KillProcess weekly 0.5 https://your-domain.com/actions/system/LaunchFile weekly 0.5 https://your-domain.com/actions/system/OpenApplication weekly 0.5 https://your-domain.com/actions/system/OpenUrl weekly 0.5 https://your-domain.com/actions/system/PrintMessage weekly 0.5 https://your-domain.com/actions/system/ReadMemory weekly 0.5 https://your-domain.com/actions/system/Runas weekly 0.5 https://your-domain.com/actions/system/StartProcess weekly 0.5 https://your-domain.com/actions/system/SuspendSystem weekly 0.5 https://your-domain.com/actions/system/UserAdd weekly 0.5 https://your-domain.com/actions/system/Wait weekly 0.5 https://your-domain.com/actions/system/WriteMemory weekly 0.5 https://your-domain.com/actions/type/TypeBoolean weekly 0.5 https://your-domain.com/actions/type/TypeCamera weekly 0.5 https://your-domain.com/actions/type/TypeColor weekly 0.5 https://your-domain.com/actions/type/TypeDict weekly 0.5 https://your-domain.com/actions/type/TypeEvent weekly 0.5 https://your-domain.com/actions/type/TypeFile weekly 0.5 https://your-domain.com/actions/type/TypeHostAddress weekly 0.5 https://your-domain.com/actions/type/TypeJson weekly 0.5 https://your-domain.com/actions/type/TypeList weekly 0.5 https://your-domain.com/actions/type/TypeModel weekly 0.5 https://your-domain.com/actions/type/TypeNumber weekly 0.5 https://your-domain.com/actions/type/TypePassword weekly 0.5 https://your-domain.com/actions/type/TypePath weekly 0.5 https://your-domain.com/actions/type/TypePoint weekly 0.5 https://your-domain.com/actions/type/TypePtr weekly 0.5 https://your-domain.com/actions/type/TypeRect weekly 0.5 https://your-domain.com/actions/type/TypeResource weekly 0.5 https://your-domain.com/actions/type/TypeScalar weekly 0.5 https://your-domain.com/actions/type/TypeShortcut weekly 0.5 https://your-domain.com/actions/type/TypeSlice weekly 0.5 https://your-domain.com/actions/type/TypeString weekly 0.5 https://your-domain.com/actions/type/TypeStrings weekly 0.5 https://your-domain.com/actions/type/TypeTuple weekly 0.5 https://your-domain.com/actions/type/TypeUrl weekly 0.5 https://your-domain.com/actions/web/WebActionChainsPerform weekly 0.5 https://your-domain.com/actions/web/WebActionClick weekly 0.5 https://your-domain.com/actions/web/WebActionClickHold weekly 0.5 https://your-domain.com/actions/web/WebActionDoubleClick weekly 0.5 https://your-domain.com/actions/web/WebActionDragDrop weekly 0.5 https://your-domain.com/actions/web/WebActionKeyDown weekly 0.5 https://your-domain.com/actions/web/WebActionKeyUp weekly 0.5 https://your-domain.com/actions/web/WebActionMoveTo weekly 0.5 https://your-domain.com/actions/web/WebActionPause weekly 0.5 https://your-domain.com/actions/web/WebActionRelease weekly 0.5 https://your-domain.com/actions/web/WebActionSendText weekly 0.5 https://your-domain.com/actions/web/WebCookies weekly 0.5 https://your-domain.com/actions/web/WebElementAttribute weekly 0.5 https://your-domain.com/actions/web/WebElementClear weekly 0.5 https://your-domain.com/actions/web/WebElementClick weekly 0.5 https://your-domain.com/actions/web/WebElementSelected weekly 0.5 https://your-domain.com/actions/web/WebElementSendKey weekly 0.5 https://your-domain.com/actions/web/WebElementSendText weekly 0.5 https://your-domain.com/actions/web/WebElementSubmit weekly 0.5 https://your-domain.com/actions/web/WebExecute weekly 0.5 https://your-domain.com/actions/web/WebFocusFrameDefault weekly 0.5 https://your-domain.com/actions/web/WebGetElement weekly 0.5 https://your-domain.com/actions/web/WebOpen weekly 0.5 https://your-domain.com/actions/web/WebScreenshot weekly 0.5 https://your-domain.com/actions/web/WebSwitchToFrame weekly 0.5 https://your-domain.com/actions/web/WebWaitAlert weekly 0.5 https://your-domain.com/actions/web/WebWaitClickable weekly 0.5 https://your-domain.com/actions/web/WebWaitFrameAvailable weekly 0.5 https://your-domain.com/actions/web/WebWaitPresence weekly 0.5 https://your-domain.com/actions/web/WebWaitTitle weekly 0.5 https://your-domain.com/actions/web/WebWaitVisibilityByElement weekly 0.5 https://your-domain.com/actions/web/WebWaitVisibilityByLocator weekly 0.5 https://your-domain.com/actions/window/ActiveWindow weekly 0.5 https://your-domain.com/actions/window/CloseWindow weekly 0.5 https://your-domain.com/actions/window/EnumWindows weekly 0.5 https://your-domain.com/actions/window/FindWindow weekly 0.5 https://your-domain.com/actions/window/FlashWindow weekly 0.5 https://your-domain.com/actions/window/MessageBox weekly 0.5 https://your-domain.com/actions/window/PositionWindow weekly 0.5 https://your-domain.com/actions/window/SpecialWindow weekly 0.5 https://your-domain.com/actions/window/WindowAncestor weekly 0.5 https://your-domain.com/actions/window/WindowCaption weekly 0.5 https://your-domain.com/actions/window/WindowPoint weekly 0.5 https://your-domain.com/actions/window/WindowSize weekly 0.5 https://your-domain.com/actions/window/WindowVisible weekly 0.5 https://your-domain.com/actions/window/WindowXy weekly 0.5 https://your-domain.com/actions/window/WinRun weekly 0.5 https://your-domain.com/CHANGELOG weekly 0.5 https://your-domain.com/enums/AncestorWindow weekly 0.5 https://your-domain.com/enums/BARCODE_Encoding weekly 0.5 https://your-domain.com/enums/BlurOperation weekly 0.5 https://your-domain.com/enums/CameraTriggerActivation weekly 0.5 https://your-domain.com/enums/CameraTriggerSource weekly 0.5 https://your-domain.com/enums/CameraType weekly 0.5 https://your-domain.com/enums/ColorConversionCodes weekly 0.5 https://your-domain.com/enums/Colors weekly 0.5 https://your-domain.com/enums/ContourApproximationMode weekly 0.5 https://your-domain.com/enums/ContourShape weekly 0.5 https://your-domain.com/enums/CookiesFormat weekly 0.5 https://your-domain.com/enums/Directions weekly 0.5 https://your-domain.com/enums/FeatureAlgorithm weekly 0.5 https://your-domain.com/enums/FileExtension weekly 0.5 https://your-domain.com/enums/GlobOptions weekly 0.5 https://your-domain.com/enums/HandleType weekly 0.5 https://your-domain.com/enums/KnownFolder weekly 0.5 https://your-domain.com/enums/KnownWindow weekly 0.5 https://your-domain.com/enums/LogicalOperators weekly 0.5 https://your-domain.com/enums/LogStatus weekly 0.5 https://your-domain.com/enums/MessageBoxFlags weekly 0.5 https://your-domain.com/enums/MessagePlaceMode weekly 0.5 https://your-domain.com/enums/ModuleOption weekly 0.5 https://your-domain.com/enums/MorphologicalOperations weekly 0.5 https://your-domain.com/enums/MouseButtons weekly 0.5 https://your-domain.com/enums/MouseMessage weekly 0.5 https://your-domain.com/enums/Operations weekly 0.5 https://your-domain.com/enums/Orientation weekly 0.5 https://your-domain.com/enums/PageSegMode weekly 0.5 https://your-domain.com/enums/PointConvertMethod weekly 0.5 https://your-domain.com/enums/RelationalOperators weekly 0.5 https://your-domain.com/enums/RelativePosition weekly 0.5 https://your-domain.com/enums/RetrievalModes weekly 0.5 https://your-domain.com/enums/SeverityLevel weekly 0.5 https://your-domain.com/enums/SuspendStateOption weekly 0.5 https://your-domain.com/enums/ThresholdTypes weekly 0.5 https://your-domain.com/enums/Visibility weekly 0.5 https://your-domain.com/enums/WebKey weekly 0.5 https://your-domain.com/enums/WebLocated weekly 0.5 https://your-domain.com/enums/WindowHandle weekly 0.5 https://your-domain.com/enums/WindowSortDirection weekly 0.5 https://your-domain.com/enums/WorkState weekly 0.5 https://your-domain.com/introduction/ weekly 0.5 https://your-domain.com/introduction/android/uiautomatorviewer weekly 0.5 https://your-domain.com/introduction/installation/installed_by_exe weekly 0.5 https://your-domain.com/introduction/installation/installed_by_msix weekly 0.5 https://your-domain.com/introduction/installation/question/quest1 weekly 0.5 https://your-domain.com/introduction/installation/question/quest2 weekly 0.5 https://your-domain.com/introduction/mixed/CUDA weekly 0.5 https://your-domain.com/introduction/mixed/cuDNN weekly 0.5 https://your-domain.com/introduction/mixed/glob weekly 0.5 https://your-domain.com/introduction/mixed/paddle2onnx weekly 0.5 https://your-domain.com/introduction/mixed/wildcard weekly 0.5 https://your-domain.com/introduction/setting/action_group_setting weekly 0.5 https://your-domain.com/introduction/setting/workflow weekly 0.5 https://your-domain.com/introduction/tesseract/Data-Files weekly 0.5 https://your-domain.com/introduction/tesseract/Languages_Scripts weekly 0.5 https://your-domain.com/introduction/tesseract/tesstrain weekly 0.5 https://your-domain.com/introduction/webdriver/browser_directory weekly 0.5 https://your-domain.com/introduction/webdriver/download weekly 0.5 https://your-domain.com/introduction/webdriver/locators weekly 0.5 https://your-domain.com/introduction/workflow/action weekly 0.5 https://your-domain.com/introduction/workflow/features weekly 0.5 https://your-domain.com/introduction/workflow/logic weekly 0.5 https://your-domain.com/introduction/workflow/property weekly 0.5 https://your-domain.com/introduction/workflow/record weekly 0.5 https://your-domain.com/introduction/workflow/resources weekly 0.5 https://your-domain.com/introduction/workflow/variable weekly 0.5 https://your-domain.com/network/openwrt_dns weekly 0.5 https://your-domain.com/types/ActionChains weekly 0.5 https://your-domain.com/types/Boolean weekly 0.5 https://your-domain.com/types/Bytes weekly 0.5 https://your-domain.com/types/ClassificationResult weekly 0.5 https://your-domain.com/types/Color weekly 0.5 https://your-domain.com/types/Contour weekly 0.5 https://your-domain.com/types/DateTime weekly 0.5 https://your-domain.com/types/DetectionResult weekly 0.5 https://your-domain.com/types/Dict weekly 0.5 https://your-domain.com/types/Ellipse weekly 0.5 https://your-domain.com/types/File weekly 0.5 https://your-domain.com/types/HostAddress weekly 0.5 https://your-domain.com/types/Image weekly 0.5 https://your-domain.com/types/IOContext weekly 0.5 https://your-domain.com/types/JsonArray weekly 0.5 https://your-domain.com/types/JsonValue weekly 0.5 https://your-domain.com/types/Keyboard weekly 0.5 https://your-domain.com/types/KeySequence weekly 0.5 https://your-domain.com/types/Line weekly 0.5 https://your-domain.com/types/List weekly 0.5 https://your-domain.com/types/ModelSession weekly 0.5 https://your-domain.com/types/Number weekly 0.5 https://your-domain.com/types/Object weekly 0.5 https://your-domain.com/types/Path weekly 0.5 https://your-domain.com/types/Point weekly 0.5 https://your-domain.com/types/Ptr weekly 0.5 https://your-domain.com/types/Range weekly 0.5 https://your-domain.com/types/RecognitionResult weekly 0.5 https://your-domain.com/types/Rect weekly 0.5 https://your-domain.com/types/RotatedRect weekly 0.5 https://your-domain.com/types/Scalar weekly 0.5 https://your-domain.com/types/Size weekly 0.5 https://your-domain.com/types/Slice weekly 0.5 https://your-domain.com/types/String weekly 0.5 https://your-domain.com/types/TCPServer weekly 0.5 https://your-domain.com/types/TCPSocket weekly 0.5 https://your-domain.com/types/Thread weekly 0.5 https://your-domain.com/types/Timer weekly 0.5 https://your-domain.com/types/TimeSpan weekly 0.5 https://your-domain.com/types/Tuple weekly 0.5 https://your-domain.com/types/UDPSocket weekly 0.5 https://your-domain.com/types/Url weekly 0.5 https://your-domain.com/types/VideoCapture weekly 0.5 https://your-domain.com/types/WebDriver weekly 0.5 https://your-domain.com/types/WebElement weekly 0.5 https://your-domain.com/types/WinEvent weekly 0.5 https://your-domain.com/types/WinInput weekly 0.5 https://your-domain.com/types/Wnd weekly 0.5 https://your-domain.com/ weekly 0.5
\ No newline at end of file
diff --git a/docs/types/ActionChains/index.html b/docs/types/ActionChains/index.html
new file mode 100644
index 00000000..fbd0dd68
--- /dev/null
+++ b/docs/types/ActionChains/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+ActionChains | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class ActionChains. 动作链
+
+
+
\ No newline at end of file
diff --git a/docs/types/Boolean/index.html b/docs/types/Boolean/index.html
new file mode 100644
index 00000000..dcf80b8e
--- /dev/null
+++ b/docs/types/Boolean/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+Boolean | WinUI
+
+
+
+
+
+
+
+
+
在编程中,您经常需要知道表达式是否为 Trueor False。
+
您可以计算 Python 中的任何表达式,并获得两个答案之一, True或False.
+
当你比较两个值时,表达式被计算并且 Python 返回布尔答案:
+
+
+
\ No newline at end of file
diff --git a/docs/types/Bytes/index.html b/docs/types/Bytes/index.html
new file mode 100644
index 00000000..f0910297
--- /dev/null
+++ b/docs/types/Bytes/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+Bytes | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/ClassificationResult/index.html b/docs/types/ClassificationResult/index.html
new file mode 100644
index 00000000..dcc304d2
--- /dev/null
+++ b/docs/types/ClassificationResult/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ClassificationResult | WinUI
+
+
+
+
+
+
+
+types ClassificationResult 本页总览
+
Class ClassificationResult 分类结果
+
+
+
+id :Number
+
+分类索引
+
+
+
+label :String
+
+分类或者识别出来的文本
+
+
+
+confidence: Number
+
+置信度
+
+
+
+
ClassificationResults
+
Class ClassificationResults,包含多个分类结果。
+
+
\ No newline at end of file
diff --git a/docs/types/Color/index.html b/docs/types/Color/index.html
new file mode 100644
index 00000000..f3c08b59
--- /dev/null
+++ b/docs/types/Color/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+Color | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Contour/index.html b/docs/types/Contour/index.html
new file mode 100644
index 00000000..72c18827
--- /dev/null
+++ b/docs/types/Contour/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+Contour | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Contour 轮廓
+
+
Contours
+
Class Contours 轮廓容器
+
+
\ No newline at end of file
diff --git a/docs/types/DateTime/index.html b/docs/types/DateTime/index.html
new file mode 100644
index 00000000..4346bb7c
--- /dev/null
+++ b/docs/types/DateTime/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+DateTime | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/DetectionResult/index.html b/docs/types/DetectionResult/index.html
new file mode 100644
index 00000000..17965bfb
--- /dev/null
+++ b/docs/types/DetectionResult/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+DetectionResult | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class DetectionResult 对象检测结果
+
+
+confidence :Number
+
+
+置信度
+
+
+
+rect :RotatedRect
+
+位置框
+
+
+
+
DetectionResults
+
Class DetectionResults,包含多条检测结果。
+
+
\ No newline at end of file
diff --git a/docs/types/Dict/index.html b/docs/types/Dict/index.html
new file mode 100644
index 00000000..eb59b282
--- /dev/null
+++ b/docs/types/Dict/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Dict | WinUI
+
+
+
+
+
+
+
+本页总览
+
字典是另一种可变容器模型,且可存储任意类型对象。
+
+
常用方式
+
字典的每个键值 key:value 对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ,格式如下所示:
+
tel = { 'jack' : 4098 , 'sape' : 4139 }
+
+
\ No newline at end of file
diff --git a/docs/types/Ellipse/index.html b/docs/types/Ellipse/index.html
new file mode 100644
index 00000000..7536cead
--- /dev/null
+++ b/docs/types/Ellipse/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Ellipse | WinUI
+
+
+
+
+
+
+
+
+
Class Ellipse, 圆或者椭圆。
+
Ellipses
+
+
\ No newline at end of file
diff --git a/docs/types/File/index.html b/docs/types/File/index.html
new file mode 100644
index 00000000..349babb3
--- /dev/null
+++ b/docs/types/File/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+File | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/HostAddress/index.html b/docs/types/HostAddress/index.html
new file mode 100644
index 00000000..6efc92e8
--- /dev/null
+++ b/docs/types/HostAddress/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+HostAddress | WinUI
+
+
+
+
+
+
+
+
+
Class HostAddress, 代表 Internet(IP)端点/套接字地址。该地址可以属于IPv4或IPv6地址家族,由主机地址和端口号组成。
+
+
\ No newline at end of file
diff --git a/docs/types/IOContext/index.html b/docs/types/IOContext/index.html
new file mode 100644
index 00000000..446d1a2a
--- /dev/null
+++ b/docs/types/IOContext/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+IOContext | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Image/index.html b/docs/types/Image/index.html
new file mode 100644
index 00000000..2df9b53d
--- /dev/null
+++ b/docs/types/Image/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Image | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/JsonArray/index.html b/docs/types/JsonArray/index.html
new file mode 100644
index 00000000..9b738fa7
--- /dev/null
+++ b/docs/types/JsonArray/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+JsonArray | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class JsonArray, json 数组
+
+
+
\ No newline at end of file
diff --git a/docs/types/JsonValue/index.html b/docs/types/JsonValue/index.html
new file mode 100644
index 00000000..5202c243
--- /dev/null
+++ b/docs/types/JsonValue/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+JsonValue | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class JsonValue, JsonValue 对象可以表示 Boolean、Number 和 String 三种原始的 JSON 值类型,也可以通过提供访问方式来表示 Array 和 Object 的复杂值类型。
+
+
+
\ No newline at end of file
diff --git a/docs/types/KeySequence/index.html b/docs/types/KeySequence/index.html
new file mode 100644
index 00000000..8989a86b
--- /dev/null
+++ b/docs/types/KeySequence/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+KeySequence | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Keyboard/index.html b/docs/types/Keyboard/index.html
new file mode 100644
index 00000000..10c2b925
--- /dev/null
+++ b/docs/types/Keyboard/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+Keyboard | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Line/index.html b/docs/types/Line/index.html
new file mode 100644
index 00000000..53c225c1
--- /dev/null
+++ b/docs/types/Line/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+Line | WinUI
+
+
+
+
+
+
+
+
+
Class Line, 线段。
+
Lines
+
Class Lines, 包含多条线段的容器。
+
+
\ No newline at end of file
diff --git a/docs/types/List/index.html b/docs/types/List/index.html
new file mode 100644
index 00000000..bdbad22e
--- /dev/null
+++ b/docs/types/List/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+List | WinUI
+
+
+
+
+
+
+
+
+
Python 列表可以存储不同类型的项目或元素的有序集合。它们通常用于将多个项目编译为单个可变变量,这有助于快速检索项目、指定输出或执行计算。列表也是 Python 中的一种内置数据结构(与元组、集合和字典一起),它是一种存储和格式化数据的特定方式。
+
要在 Python 中创建列表,请在方括号 ([]) 内写入一组项目,并用逗号分隔每个项目。列表中的项目可以是 Python 中的任何基本对象类型,包括整数、字符串、浮点值或布尔值。
+
例如,要创建一个名为“z”的列表,其中包含整数 3、7、4 和 2,您可以写道:
+
+
+
\ No newline at end of file
diff --git a/docs/types/ModelSession/index.html b/docs/types/ModelSession/index.html
new file mode 100644
index 00000000..1e8b2f73
--- /dev/null
+++ b/docs/types/ModelSession/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+ModelSession | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Number/index.html b/docs/types/Number/index.html
new file mode 100644
index 00000000..9e40d51f
--- /dev/null
+++ b/docs/types/Number/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Number | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Object/index.html b/docs/types/Object/index.html
new file mode 100644
index 00000000..c47cacfb
--- /dev/null
+++ b/docs/types/Object/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Object | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Object, 对象,通用导出类型。
+
+
+
\ No newline at end of file
diff --git a/docs/types/Path/index.html b/docs/types/Path/index.html
new file mode 100644
index 00000000..4cf478eb
--- /dev/null
+++ b/docs/types/Path/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+Path | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Point/index.html b/docs/types/Point/index.html
new file mode 100644
index 00000000..aa8e2781
--- /dev/null
+++ b/docs/types/Point/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Point | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Point, 坐标位置
+
+
+
+x: Number
+x 坐标
+
+
+y: Number
+y 坐标
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Ptr/index.html b/docs/types/Ptr/index.html
new file mode 100644
index 00000000..627c7823
--- /dev/null
+++ b/docs/types/Ptr/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Ptr | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Range/index.html b/docs/types/Range/index.html
new file mode 100644
index 00000000..2d812daa
--- /dev/null
+++ b/docs/types/Range/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+Range | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Range, 数值范围
+
+
+Range(Number min, Number max)
+
+
+
+
import simple range = simple . Range ( 10 , 100 )
+
+
\ No newline at end of file
diff --git a/docs/types/RecognitionResult/index.html b/docs/types/RecognitionResult/index.html
new file mode 100644
index 00000000..249f9dc5
--- /dev/null
+++ b/docs/types/RecognitionResult/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+RecognitionResult | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Rect/index.html b/docs/types/Rect/index.html
new file mode 100644
index 00000000..cee0572c
--- /dev/null
+++ b/docs/types/Rect/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+Rect | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Rect, 表示一个矩形框
+
+
+
+x :Number
+左上角 x 坐标
+
+
+y :Number
+左上角 y 坐标
+
+
+width :Number
+宽度
+
+
+height :Number
+高度
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/RotatedRect/index.html b/docs/types/RotatedRect/index.html
new file mode 100644
index 00000000..c5096bc6
--- /dev/null
+++ b/docs/types/RotatedRect/index.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+RotatedRect | WinUI
+
+
+
+
+
+
+
+本页总览
+
class RotatedRect, 表示一个带角度的旋转矩形。
+
+
+
+center :Point
+中心坐标
+
+
+
RotatedRect
+
class RotatedRects
+
+
\ No newline at end of file
diff --git a/docs/types/Scalar/index.html b/docs/types/Scalar/index.html
new file mode 100644
index 00000000..317fac38
--- /dev/null
+++ b/docs/types/Scalar/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Scalar | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Size/index.html b/docs/types/Size/index.html
new file mode 100644
index 00000000..2a4051d4
--- /dev/null
+++ b/docs/types/Size/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Size | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Size, 尺寸、大小
+
+
+
+width: Number
+宽
+
+
+height: Number
+长
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Slice/index.html b/docs/types/Slice/index.html
new file mode 100644
index 00000000..9f1a9eb8
--- /dev/null
+++ b/docs/types/Slice/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+Slice | WinUI
+
+
+
+
+
+
+
+
+
Python 内置函数 slice() 返回一个切片对象,用于切取任何序列(字符串、元组、列表、range 或字节序列)等。
+
text = 'Hello, 小友+!' sliced = slice ( 3 ) print ( sliced ) print ( type ( sliced ) ) print ( text [ sliced ] )
+
+start -- 切片开始位置。如果未提供,则默认为 None。
+stop -- 结束位置,切片在索引 stop - 1(最后一个元素)处停止。
+step -- 步长,用于确定切片的每个索引之间的增量。如果未提供,则默认为 None。
+
+
因此,slice 对象有以上三个信息,没有指定的会为 None。如果 start 为 None,则从 0 开始。如果 step 为 None ,步长缺省为 1。
+
+
\ No newline at end of file
diff --git a/docs/types/String/index.html b/docs/types/String/index.html
new file mode 100644
index 00000000..537d77af
--- /dev/null
+++ b/docs/types/String/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+String | WinUI
+
+
+
+
+
+
+
+
+
字符串是最常用的数据类型。小友+ 字符串类型和 Python 中的字符串类型保持一致, 我们可以使用引号 ( ' 或 " ) 来创建字符串。
+
创建字符串很简单,只要为变量分配一个值即可。例如:
+
var1 = 'Hello World!' var2 = "小友+"
+
Strings
+
字符串数组
+
+
\ No newline at end of file
diff --git a/docs/types/TCPServer/index.html b/docs/types/TCPServer/index.html
new file mode 100644
index 00000000..76278f82
--- /dev/null
+++ b/docs/types/TCPServer/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+TCPServer | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/TCPSocket/index.html b/docs/types/TCPSocket/index.html
new file mode 100644
index 00000000..f5633de4
--- /dev/null
+++ b/docs/types/TCPSocket/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+TCPSocket | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Thread/index.html b/docs/types/Thread/index.html
new file mode 100644
index 00000000..da5fd3aa
--- /dev/null
+++ b/docs/types/Thread/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+Thread | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/TimeSpan/index.html b/docs/types/TimeSpan/index.html
new file mode 100644
index 00000000..6070d2de
--- /dev/null
+++ b/docs/types/TimeSpan/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+TimeSpan | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Timer/index.html b/docs/types/Timer/index.html
new file mode 100644
index 00000000..a9e9be17
--- /dev/null
+++ b/docs/types/Timer/index.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+Timer | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Timer, 定时器
+
+
+
+
+start()
+
+开始
+
+
+stop()
+
+停止。停止之后,可以调用restart重启
+
+
+restart()
+
+
+重启
+
+
+
+关闭
+
+
+
\ No newline at end of file
diff --git a/docs/types/Tuple/index.html b/docs/types/Tuple/index.html
new file mode 100644
index 00000000..7cc7a4fc
--- /dev/null
+++ b/docs/types/Tuple/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+Tuple | WinUI
+
+
+
+
+
+
+
+
+
元组(tuple)是不可变的 Python 对象。元组是一种序列,就像列表一样,都可以描述一组数据的集合,它们都是容器,是一系列组合的对象。元组和列表之间的主要区别是元组不能像列表那样改变元素的值,可以简单地理解为 "只读列表"。 元组使用小括号: (),而列表使用方括号:[] 。
+
num = ( 7 , 14 , 21 , 28 , 35 )
+
+
\ No newline at end of file
diff --git a/docs/types/UDPSocket/index.html b/docs/types/UDPSocket/index.html
new file mode 100644
index 00000000..970b4fca
--- /dev/null
+++ b/docs/types/UDPSocket/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+UDPSocket | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Url/index.html b/docs/types/Url/index.html
new file mode 100644
index 00000000..ea3bffe6
--- /dev/null
+++ b/docs/types/Url/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+Url | WinUI
+
+
+
+
+
+
+
+本页总览
+
Class Url, 定义表示统一资源标识符 (URL) 值的对象,简称:网址。
+
+
+
此示例创建一个 Url 对象,该对象表示使用http协议访问网站 。
+
url = Url ( "http://www.winui.net" )
+
+
\ No newline at end of file
diff --git a/docs/types/VideoCapture/index.html b/docs/types/VideoCapture/index.html
new file mode 100644
index 00000000..f81b3b0c
--- /dev/null
+++ b/docs/types/VideoCapture/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+VideoCapture | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/WebDriver/index.html b/docs/types/WebDriver/index.html
new file mode 100644
index 00000000..6b8aecdb
--- /dev/null
+++ b/docs/types/WebDriver/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+WebDriver | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/WebElement/index.html b/docs/types/WebElement/index.html
new file mode 100644
index 00000000..387a7992
--- /dev/null
+++ b/docs/types/WebElement/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+WebElement | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/WinEvent/index.html b/docs/types/WinEvent/index.html
new file mode 100644
index 00000000..2a031e54
--- /dev/null
+++ b/docs/types/WinEvent/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+WinEvent | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/WinInput/index.html b/docs/types/WinInput/index.html
new file mode 100644
index 00000000..3f879cb0
--- /dev/null
+++ b/docs/types/WinInput/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+WinInput | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/types/Wnd/index.html b/docs/types/Wnd/index.html
new file mode 100644
index 00000000..1d242b94
--- /dev/null
+++ b/docs/types/Wnd/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+Wnd | WinUI
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docusaurus.config.js b/docusaurus.config.js
new file mode 100644
index 00000000..932ba678
--- /dev/null
+++ b/docusaurus.config.js
@@ -0,0 +1,65 @@
+const { themes } = require('prism-react-renderer');
+
+module.exports = {
+ title: '小友+',
+ tagline: '轻量快速的计算机自动化工具',
+ url: 'https://winui.net',
+ baseUrl: '/winui/',
+ onBrokenLinks: 'warn',
+ onBrokenMarkdownLinks: 'warn',
+ favicon: 'favicon.ico',
+
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ path: 'docx', // 文档源文件在 docx 目录
+ routeBasePath: 'docs', // 访问路径为 /docs
+ sidebarPath: require.resolve('./sidebars.js'), // 确保文件名一致
+ editUrl: 'https://github.com/your/repo/edit/main/docx/',
+ },
+ blog: false,
+ theme: {
+ customCss: require.resolve('./src/css/custom.css'),
+ },
+ },
+ ],
+ ],
+ themeConfig: {
+ navbar: {
+ title: '小友+',
+ logo: {
+ alt: 'logo',
+ src: 'favicon.ico', // 对应 static/favicon.ico
+ },
+ items: [
+ {
+ type: 'docSidebar', // 推荐用法:直接绑定侧边栏
+ sidebarId: 'sidebar', // 对应 sidebars.js 里的导出的 key 名
+ position: 'left',
+ label: '文档',
+ },
+ {
+ href: 'https://shelllet.github.io/winui/#/',
+ label: '开发版',
+ position: 'right',
+ },
+ {
+ href: 'https://winui.net/#/',
+ label: '发布版',
+ position: 'right',
+ },
+ {
+ to: 'docs/CHANGELOG', // 如果 CHANGELOG 在 docx 目录下,路径应加 docs/ 前缀
+ label: '更新日志',
+ position: 'right',
+ },
+ ],
+ },
+ prism: {
+ theme: themes.github,
+ darkTheme: themes.dracula,
+ },
+ },
+};
diff --git a/docx/CHANGELOG.md b/docx/CHANGELOG.md
index fb1de87f..0743e150 100644
--- a/docx/CHANGELOG.md
+++ b/docx/CHANGELOG.md
@@ -1,112 +1,415 @@
-# [0.21](https://github.com/shelllet/winui/compare/main...dev) (2023-06-10)
-### Features
-1. *过滤字符串*动作支持字符串数组,解决 *或* 的问题
-2. 添加 *WindowSize* 动作,用来调整或获取窗口大小
-3. *WindowRect* 动作,支持调整窗口位置和尺寸
-4. 添加 *RandomPoint* 随机坐标动作
-5. *Wait* 动作等待时间随机化
-6. 优化异步操作:线程,定时器等
-7. 截图相关动作增加 ROI 参数
-
-### Fixed
-
-1. 修复 *矩形中心* 动作计算问题
-2. 修复复制工作流崩溃问题
-3. 修复变量添加崩溃问题
-4. 修复带引号路径启动程序崩溃问题
-
-
-### Deprecated
-1. 删除 *ProcessID* 动作。
-
-### 备注
+# [0.49](https://github.com/shelllet/winui/compare/main...dev) (2026-xx-xx)
-1. 直接从https://winui.net/ 下载即可下载最新版本
+### Changed:
+1. [ ] 界面重构。
+2. [ ] 大模型模型在线下载,解决安装包过大问题。
+3. [ ] 加入Ai 功能。
-## [0.20](https://github.com/shelllet/winui/compare/main...dev) (2023-05-20)
-### Features
+### Note
-1. 添加 *移动并双击* 动作
-2. 添加 *窗口标题* 动作
-3. 添加 *WindowRect* 动作,获取窗口矩形
-4. 支持多语言切换
-5. 使用 *Acrylic*( 亚克力背景),提高视觉层次结构。
+1. 下载(安装包):Feature developing...
-### Fixed
+## [0.48.3](https://github.com/shelllet/winui/compare/main...dev) (2025-02-27)
-1. 修复一些崩溃问题。
-2. 优化多个动作及动作参数,更容易使用
-3. 修复重命名流程崩溃问题
-4. 修复右键菜单透明问题
+### Changed:
+1. 更新接口。
+2. 更新内部SDK。
+### Note
-### Deprecated
-
-
-### 备注
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`(未来版本中优化)。
+3. 下载(安装包):https://download.winui.net/小友+0.48.3-setup.x64.exe
-1. 直接从https://winui.net/ 下载即可下载最新版本
+## [0.48.2](https://github.com/shelllet/winui/compare/main...dev) (2025-11-26)
-## [0.19](https://github.com/shelllet/winui/compare/main...dev) (2023-04-16)
-### Features
+### Changed:
+1. 修复动作运行时参数,如果引用其他动作无法保存的问题。
-1. 添加 *随机数* 动作。
-2. *打开程序* 动作添加用户名和密码参数。
-3. 添加 [*引用动作*](./actions/control/NameAlias.md),可以通过名称来引用动作。
+### Note
-### Fixed
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`(未来版本中优化)。
+3. 下载(安装包):https://winui.net/_media/simple/小友+0.48.2-setup.x64.exe
-1. 修复一些崩溃问题。
-2. 优化*Web* 自动化测试相关动作
+## [0.48.1](https://github.com/shelllet/winui/compare/main...dev) (2025-11-26)
+### Changed:
+1. 鼠标键盘的模拟支持驱动模式,参考[工作流设置](./introduction/setting/workflow.md)。
-### Break
+### Note
-1. *RunAsUser* 动作删除,请使用*打开程序*动作。
-2. 合并 *屏幕坐标转窗口坐标* 和 *窗口坐标转屏幕坐标* 为 *坐标转换* 动作。
-3. *模型* 移动至 *类型* 分组中。
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`(未来版本中优化)。
+3. 下载(安装包):https://winui.net/_media/simple/小友+0.48.1-setup.x64.exe
-### Deprecated
-### 备注
+## [0.48](https://github.com/shelllet/winui/compare/main...dev) (2025-11-11)
+
+### Changed:
+1. [查找窗口](./actions/window/FindWindow.md) 支持从多个相同标题或类名的窗口中选择需要处理的窗口。
+2. [窗口截图](./actions/media/CaptureWindow.md), 添加参数支持仅截图窗口。
+2. 修复搜索动作时,输入特殊字符崩溃问题。
+3. 支持插件功能
+4. 网络相关动作支持`QUIC`协议
+5. 添加[发送输入](./actions/network/SendInput.md),和[接收输入](./actions/network/ReceiveInput.md) 两个动作,可以同步多台电脑鼠标键盘操作。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`(未来版本中优化)。
+3. 下载(安装包):https://winui.net/_media/simple/小友+0.48.0-setup.x64.exe
+
+
+## [0.47.2](https://github.com/shelllet/winui/compare/main...dev) (2025-10-13)
+
+### Changed:
+1. 修复管理员权限运行时,文件保存打开窗口无法弹出问题。
+2. 优化快捷 *添加动作* 弹框功能。
+3. 修复管理员权限运行时,无法拖放动作的问题。
+4. 修复[键盘/鼠标宏重放](./actions/media/PlayRecord.md) 执行时无法退出流程问题。
+5. 修复模拟鼠标点击在手游客户端有时无作用问题。
+6. [窗口截图](./actions/media/CaptureWindow.md) 动作增加一个参数,方便仅保存窗口图像。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`。
+3. 下载(安装包):https://winui.net/_media/simple/小友+0.47.2-setup.x64.exe
+
+
+## [0.47.1](https://github.com/shelllet/winui/compare/main...dev) (2025-10-09)
+
+### Changed:
+1. 修复打开低版本创建的档案时,复制、粘贴动作出现的错误。
+2. 修复 [打开浏览器](./actions/web/WebOpen.md) 动作的错误。
+3. 开启用户相关界面功能(实验性)。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`。
+3. 下载(安装包):https://winui.net/_media/simple/小友+0.47.1-setup.x64.exe
+
+
+## [0.47.0](https://github.com/shelllet/winui/compare/main...dev) (2025-09-22)
+
+### Changed:
+1. 优化文字识别动作,文字识别结果已经更改为从上至下的顺序。
+2. 支持鼠标右键拖动动作视图。
+3. 修复另存时,项目未进入快速启动列表中。
+4. 关机动作更新为 [SuspendSystem](./actions/system/SuspendSystem.md), 并且支持休眠。
+5. 支持运行当前的工作流。
+6. [退出流程] 动作更名,参考: [退出流程](./actions/control/Exit.md)。
+7. 增加 [域名查询](./actions/network/DomainQuery.md) 动作。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 该版本由于内置了一些文字处理相关的模型,安装包大小已经超过 `300M`。
+3. 下载(压缩包,解压覆盖本地文件):https://winui.net/_media/simple/小友+0.47.0.zip
+4. 下载(安装包):https://winui.net/_media/simple/小友+0.47.0-setup.x64.exe
+
+## [0.46.0](https://github.com/shelllet/winui/compare/main...dev) (2025-07-22)
+
+### Changed:
+1. [枚举窗口](./actions/window/EnumWindows.md) 动作不再支持异步处理。
+2. 优化绘图动作运行时参数。
+3. 优化 `Web` 测试 [打开浏览器](./actions/web/WebOpen.md)动作。
+4. 优化 浏览器 [获取 Cookies](./actions/web/WebCookies.md) 动作。
+5. 优化 [视频下载](./actions/network/VideoDownload.md) 动作。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.46.0-setup.x64.exe
+
+## [0.45.0](https://github.com/shelllet/winui/compare/main...dev) (2025-06-13)
+
+### Changed:
+1. 添加最近打开窗口,方便打开流程。
+2. 更新动作预览功能(现在会从流程入口开始执行到该动作执行完结束)。
+3. 保存图像动作,支持把图像保存为*PDF*文件(文件名称以 `.pdf` 结尾)。
+4. 截图动作中的*ROI* *中心位置* 更改为图像 *左上角*。
+5. *窗口截图* 动作输出图像大小调整为窗口所在屏幕大小。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 此版本会清空缓存目录:`%LOCALAPPDATA%/Simple`。
+3. 64位下载(x64):https://winui.net/_media/simple/小友+0.45.0-setup.x64.exe
+
+## [0.44.0](https://github.com/shelllet/winui/compare/main...dev) (2025-05-03)
+
+### Changed:
+1. [相机类型](./actions/type/TypeCamera.md) 动作支持工业 USB3/GIGE 接口相机,比如海康相机。
+2. 更新 [文字识别](./actions/ai/TextRecognition.md) 动作,运行加载其它语言模型,用来识别中英文以外的文字。
+3. 更新 [文字识别(Tesseract)](./actions/ai/TextExtract.md) 动作, 支持基于 *Tesseract* (常用来识别特殊字体)的文字识别。
+4. 添加动作菜单*缓存对象*。 用来解决 某些动作反复执行时,由于内置对象的初始化比较耗,导致不必要的时间开销。
+5. 动作支持借助脚本更新运行时参数,详情参考动作说明。
+6. 修复导入其它流程崩溃问题。
+7. 修复 Web 自动化浏览器无正常退出问题。
+8. 修复 [图像匹配](./actions/detection/MatchImage.md) 不显示另 `Else` 连接点。
+9. 修复 打开流程后,按 *Enter* 键崩溃问题。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.44.0-setup.x64.exe
+
+
+## [0.43.0](https://github.com/shelllet/winui/compare/main...dev) (2025-04-07)
+
+### Changed:
+1. 增加[图像匹配](./actions/detection/MatchImage.md) 动作。
+2. 增加[条码识别](./actions/ai/BarcodeDetector.md) 动作。
+3. [打印日志](./actions/system/PrintMessage.md) 支持输出图片。
+4. 修复 [条码生成](./actions/draw/BarcodeCreate.md) 动作崩溃问题
+5. 完善文档。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.43.0-setup.x64.exe
+
+
+## [0.42.4](https://github.com/shelllet/winui/compare/main...dev) (2025-03-30)
+
+### Changed:
+1. 修复预览图片在小屏幕无法显示问题。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.42.4-setup.x64.exe
+
+
+## [0.42.1](https://github.com/shelllet/winui/compare/main...dev) (2025-02-26)
+
+### Changed:
+1. 修复[剪切板](./actions/system/ClipboardValue.md)动作设置剪切板内容时崩溃问题。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.42.1-setup.x64.exe
+
+
+## [0.42.0](https://github.com/shelllet/winui/compare/main...dev) (2025-01-20)
+
+### Changed:
+1. 修复一些异步动作执行问题。
+2. [视频下载](./actions/network/VideoDownload.md) 添加 选择 Cookies 文件参数, 解决登录验证问题。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://winui.net/_media/simple/小友+0.42.0-setup.x64.exe
+
+## [0.41.0](https://github.com/shelllet/winui/compare/main...dev) (2024-12-14)
+
+### Changed:
+1. 修复一些问题。
+2. 添加内存读写动作:[ReadMemory](./actions/system/ReadMemory.md)、[WriteMemory](./actions/system/WriteMemory.md)、`DLL`注入:[AttachProcess](./actions/system/AttachProcess.md)。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.41.0-setup.x64.exe
+
+## [0.40.1](https://github.com/shelllet/winui/compare/main...dev) (2024-11-06)
+
+### Changed:
+1. 修复动作参数数字无法输入问题。
+2. 运行时,禁用流程打开按钮。
-1. 直接从https://winui.net/ 下载即可下载最新版本
-2. 如果无法启动,请卸载之前版本,重新安装
+### Note
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.40.1-setup.x64.exe
-## [0.18](https://github.com/shelllet/winui/compare/main...dev) (2023-03-26)
+## [0.40](https://github.com/shelllet/winui/compare/main...dev) (2024-11-04)
-### Features
+### Changed:
+1. 更新注册机制。
+2. 修复一些其它崩溃问题。
-1. 增加发布功能
-2. 比较操作符动作增加 != 号判断。
-3. 增加逻辑运算操作符
-4. 增加*模板匹配*,用于查找确定简单的的图片
-5. 增加图片*ROI标记*功能(比如找图,只会从标记的区域查找)
-6. 增加定位动作功能,可以在左侧动作列表中显示当前的动作。
-7. 添加'字符串' 类型动作。
+### Note
-8. 窗口标题随机化
-9. *查找图片*和*模板匹配*动作支持**else**分支
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.40.0-setup.x64.exe
-### Fixed
+## [0.39](https://github.com/shelllet/winui/compare/main...dev) (2024-09-30)
-1. 修复调整图片大小动作崩溃问题
-2. 修复 *判断* 动作中 == 空 问题成立的问题
-3. 修复高DPI取得全局坐标出现错的问题
-4. 修复打开浏览器动作崩溃的问题
-5. 修复单击变双击的问题
+### Changed:
+1. 修复动作分组隐藏问题。
+2. 修复一些其它崩溃问题。
+3. 调整部分 *UI* 界面。
+4. [颜色统计](./actions/algorithm/ColorPercentage.md),运行时参数 *差值* 变更为 *HSV* 三个分量的差值。
-### Break
+### Note
-1. *判断* 动作不再支持比较运算符,直接对条件进行判断,如果需要进行比较,请使用比较运行符
-2. *When* 动作,不再支持比较运算符,直接对条件进行判断 ,如果需要进行比较,请使用比较运行符
-3. 删除*Tail*动作,如果需要退出流程,请使用*退出*动作
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.39.0-setup.x64.exe
-### Deprecated
-1. *等待图片*动作即将移除
+## [0.38](https://github.com/shelllet/winui/compare/main...dev) (2024-09-06)
+
+### Changed:
+1. 增加鼠标[滚动动作](./actions/mouse/WheelMouse.md)。
+2. 动作分组可以在设置中设置隐藏或者显示。
+3. 修复编辑器无法编辑问题。
+
+### Note
+
+1. 使用管理员权限运行 *小友+*, 无法显示 *动作* 的拖动效果(已知问题)。
+2. 更换默认安装目录为 *ProgramData*,全新安装 *小友+* 时, 不再需要 *管理员* 权限。如果覆盖安装,目录不会做变更。
+
+3. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.38.0-setup.x64.exe
+
+
+## [0.37](https://github.com/shelllet/winui/compare/main...dev) (2024-08-16)
+
+### Changed:
+1. 重命动作: [*退出流程*](./actions/control/Quit.md)。
+2. 增加 [关闭窗口](./actions/window/CloseWindow.md)动作。
+3. 系统分类增加两个动作: [创建对象]() 和 [方法调用]()。支持调用*dll* 或调用系统已注册的 *COM* 组件。
+4. 修复 [调用](./actions/control/Invoke.md) 动作执行崩溃问题。
+5. 修复 *变量* 注册问题。
+6. [点击 * 网格](./actions/mouse/CellClick.md) 支持设置 *停顿时间*。
+7. 修复流程启动/停止时机率崩溃问题。
+
+### Note
+
+1. 64位下载(x64):https://bitbucket.org/winui-release/version/downloads/winui0.37.0-setup.x64.exe
+
+
+## [0.36.1](https://github.com/shelllet/winui/compare/main...dev) (2024-07-07)
+
+### Changed:
+1. 修复新建流程时,无默认流程。
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.36.1-setup.x64.exe
+
+## [0.36](https://github.com/shelllet/winui/compare/main...dev) (2024-07-06)
+
+### Changed:
+1. 添加图像旋转动作。
+2. 修复 安卓中文文字输入时崩溃问题。
+3. 优化 [视频下载](./actions/network/VideoDownload.md)动作。
+4. 修复其它一些问题。
+
+### Deprecated:
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.36.0-setup.x64.exe
+
+## [0.35](https://github.com/shelllet/winui/compare/main...dev) (2024-06-05)
+
+### Changed:
+
+1. 修复 [`Runas`](./actions/system/Runas.md),使用当前账号启动程序问题。
+
+2. 增加远程主机部署功能。
+
+3. 修复一些其它错误。
+
+### Deprecated:
+1. 移除分享功能。
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.35.0-setup.x64.exe
+
+## [0.34](https://github.com/shelllet/winui/compare/main...dev) (2024-4-27)
+
+### Changed:
+
+1. 改进预览和调试功能。
+2. 发送按键支持 Alt + Tab 。
+3. 关机动作优化,增加注销和重启功能。
+4. 图像相对位置标记支持 左中,右中,上中,下中。
+5. 变量支持备注。
+6. `登录应用` 动作更名为 [`Runas`](./actions/system/Runas.md),并修因提高权限导致的启动错误
+7. [`查找元素`](./actions/web/WebGetElement.md) 动作支持查找元素的子节点。
+8. 添加[`等待按键`](./actions/keyboard/WaitKey.md) 动作。
+
+### Deprecated:
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.34.0-setup.x64.exe
+
+## [0.33.2](https://github.com/shelllet/winui/compare/main...dev) (2024-3-20)
+
+### Changed:
+
+1. 修复 [#60](https://github.com/shelllet/winui/issues/60) : 管理员运行小友+,无法拖拽动作到视图上。
+2. 修复动作日志保存问题。
+
+### Deprecated:
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.33.2-setup.x64.exe
+
+
+## [0.33](https://github.com/shelllet/winui/compare/main...dev) (2024-2-24)
+
+### Changed:
+
+1. 添加 [点击 * 网格](./actions/mouse/CellClick.md)。
+2. [参数](./actions/control/Param.md) 动作添加索引参数。
+3. 安卓操作添加[*键盘输入*](./actions/android/Adbkeyboard.md),支持中文输入。
+4. 修复:删除有多个入口动作时崩溃问题。
+5. 监听鼠标键盘动作忽略由动作本身发出的键盘鼠标模拟。
+6. 修复[判空](./actions/control/IsEmpty.md) 动作逻辑错误。
+
+### Deprecated:
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.33.0-setup.x64.exe
+
+## [0.32](https://github.com/shelllet/winui/compare/main...dev) (2024-1-19)
+
+### Changed:
+
+1. 移动鼠标动作支持多显示器。
+2. 优化统计分析模块。
+3. 优化浏览器操作
+4. 恢复 *For*(循环)动作名称。
+5. *访问数组* 中的索引参数,去掉数字类型,使用表达式,同时支持字典访问。
+5. 恢复 *前置窗口截图*,重命名为:[CaptureActiveWindow(活动窗口截取)](./actions/media/CaptureActiveWindow.md)。
+
+### Deprecated:
+
+### Note
+
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.32.0-setup.x64.exe
+
+
+## [0.31](https://github.com/shelllet/winui/compare/main...dev) (2023-12-22)
+
+### Changed:
+
+1. *工作线程* 动作支持选择是否立即运行。
+2. *监听鼠标* 动作支持鼠标侧键。
+3. *For*(循环)动作名称变更为 *Iterate*(迭代)动作,功能不变。
+4. *IterParam*(迭代参数)动作名称变更为 *Param*(参数)动作,并支持设置默认参数,功能不变。
+5. 增加 *StandardPath*(标准路径)动作,用来表示系统常用路径。
+5. 增加 *FlashWindow*(闪烁窗口)动作,用来闪烁窗口,定位多个相同名称/类名的窗口。
+6. 优化网络相关动作
+
+### Deprecated:
+
+1. *前置窗口截图* 动作弃用,请使用 [*窗口截图*](./actions/media/CaptureWindow.md) 动作。
+1. *窗口筛选* 动作弃用,请使用 [*EnumWindows*](./actions/window/EnumWindows.md) 动作。
### 备注
-1. 直接从https://winui.net/ 下载即可下载最新版本
+1. 下载:https://bitbucket.org/winui-release/version/downloads/winui0.31.1-setup.x64.exe
+
diff --git a/docx/README.md b/docx/README.md
index 00a40910..c7b62d89 100644
--- a/docx/README.md
+++ b/docx/README.md
@@ -1,10 +1,14 @@
-# WinUi++
+# 小友+
-一个简单的 *RPA* 工具 ,它可以使用图形化的界面,方便地设计出各种自动化的流程,然后在各个 *Windows* 的平台执行。例如可以通过图像识别,并借助鼠标键盘模拟帮你完成各种各样的繁复操作。无论是打游戏还是工作当中,都是不可缺少的一款辅助工具。
+一个简单的 _自动化_ 工具 ,它可以使用图形化的界面,不用编程就可以方便地设计出各种自动化的流程,然后自动执行重复性的手动任务,从而节省了企业的时间、员工工作量,并减少了麻烦。例如可以通过图像识别,并借助鼠标键盘模拟帮你完成各种各样的繁复操作。
-不同于其它大多数*RPA*软件(又大又慢),*WinUi++* 是基于微软最新的 *WindowsAppSDK / WinUI 3*,用 *C++* 进行开发,充分考虑了性能和执行效率和流程设计的方便性。 *WinUi++* 小、快而简单。并且界面使用Windows WinUI 库(最新的Windows 10 原生控件和 Fluent 样式),使 *WinUi++* 更美观和现代化。
+即有传统 *RPA* 的功能,又有视觉图像处理的能力,还可以对接 _USB_相机或者工业相机。
-*WinUi++* 绝对不会嵌入任何广告、捆绑任何软件。也不会像国内某大厂一样耍流氓!比如安装的时候,加入各种捆绑,一不小心就装了某家的全家桶。在卸载的时候还要弄个脑筋急转弯,让你怀疑智商,甚至怀疑人生。
+_小友+_ 充分考虑了性能和执行效率和流程设计的方便性。 _小友+_ 小、快而简单。并且界面更美观和现代化。
+
+_小友+_ 绝对不会嵌入任何广告、捆绑任何软件。也不会像国内某大厂一样耍流氓!比如安装的时候,加入各种捆绑,一不小心就装了某家的全家桶。在卸载的时候还要弄个脑筋急转弯,让你怀疑智商,甚至怀疑人生。
+
+无论是游玩还是工作当中,*小友+* 都是不可缺少的一款辅助工具。
### 主要功能
@@ -12,51 +16,24 @@
2. 进程管理
3. 窗口操作和截图
4. 文件操作
-5. 图像处理
+5. 图像处理,检测
6. 模型推理
-7. *Web*自动化
-8. *Python*脚本
+7. *Web* 自动化
+8. *Python*脚本扩展
9. 安卓模拟器
10. 网络操作
11. 云接口调用
-12. *xml*、 *json* 等格式解读
-13. ...
-
+12. 数据统计分析
+13. *Dll* 及 *COM* 接口调用。
+14. ......
#### [截图](https://winui.net/)
-
-
-* 开发版文档:https://shelllet.github.io/winui/#/
-
-* 示例流程:https://github.com/shelllet/winui
-
-* 最新版本下载:[https://winui.net/](https://winui.net/)
-
-* B 站:[https://space.bilibili.com/652005178/channel/collectiondetail?sid=84951](https://space.bilibili.com/652005178/channel/collectiondetail?sid=84951)
-
-* 油管: [https://www.youtube.com/playlist?list=UULFs1P87PQvBDJAuJfkKRLqMQ](https://www.youtube.com/playlist?list=UULFs1P87PQvBDJAuJfkKRLqMQ)
-
-* 加入 [Discord](https://discord.gg/b4MeYbJrfk) 讨论
-
-!> 加入微信群讨论
-
-
-
+
-
\ No newline at end of file
+- 如果你有 *Discord*, 加入 [Discord](https://discord.gg/b4MeYbJrfk) 讨论。
diff --git a/docx/_coverpage.md b/docx/_coverpage.md
index 98f5bfaf..d2b542ff 100644
--- a/docx/_coverpage.md
+++ b/docx/_coverpage.md
@@ -1,10 +1,13 @@
-# WinUi++
+
-> 💪WinUi++ is the most simple clean, small and fast Robotic Process Automation (RPA) tool.
+# 小友+
-- Right now support down to build 17763 (version 1809/October 2018 Update) of Windows 10.
+> This lightweight and fast-running computer automation tool empowers users with its intuitive graphical interface, making it incredibly easy to design and implement a wide array of automation processes without the need for any programming knowledge. It's designed for anyone, from beginners to experienced professionals, to streamline their workflows effortlessly.
-[微软商店](https://apps.microsoft.com/store/detail/XP9BRHTXN0Z3V7)
-[下载](https://api.winui.net/simple/download?v=0.2)
+
+- Right now support down to build 17763 (version 1809/October 2018 Update) of Windows 10..
+
+[微软商店](https://apps.microsoft.com/detail/xp9lv7v0p6s74z?hl=en-US&gl=CN)
+[下载](https://api.winui.net/simple/v5/download_latest ':id=simple')
diff --git a/docx/_media/favicon.ico b/docx/_media/favicon.ico
deleted file mode 100644
index 54a19efc..00000000
Binary files a/docx/_media/favicon.ico and /dev/null differ
diff --git a/docx/_navbar.md b/docx/_navbar.md
index 35ea330d..49fd3666 100644
--- a/docx/_navbar.md
+++ b/docx/_navbar.md
@@ -1,6 +1,6 @@
* 文档
- * [介绍](./intro/README.md.md)
+ * [介绍](./introduction/README.md.md)
* [开发版](https://shelllet.github.io/winui/#/ ':id=dev')
* [发布版](https://winui.net/#/ ':id=rel')
* [更新日志](./CHANGELOG.md)
diff --git a/docx/_sidebar.md b/docx/_sidebar.md
index 976a56cf..fc7a2b11 100644
--- a/docx/_sidebar.md
+++ b/docx/_sidebar.md
@@ -1,43 +1,79 @@
-- [WinUi++](/)
- - [简介](./intro/README.md)
- - 安装
- - [直接安装](./intro/installation/installed_by_exe.md)
- - [微软商店安装](./intro/installation/installed_by_msix.md)
- - 流程
- - [项目属性](./intro/workflow/property.md)
- - [使用逻辑](./intro/workflow/logic.md)
- - [鼠标/键盘录制](./intro/workflow/record.md)
- - [变量](./intro/workflow/variable.md)
- - [流程操作技巧](./intro/workflow/skill.md)
- - [通配符匹配](./intro/workflow/wildcard.md)
+- [小友+](/)
+ - [使用需知](./introduction/README.md)
+ - 软件安装
+ - [直接安装](./introduction/installation/installed_by_exe.md)
+ - [微软商店安装](./introduction/installation/installed_by_msix.md)
+ - 安装问题
+ - [新安装无法启动](./introduction/installation/question/quest1.md)
+ - [覆盖安装无法启动](./introduction/installation/question/quest2.md)
+ - 设置
+ - [动作分组隐藏](./introduction/setting/action_group_setting.md)
+ - [工作流设置](./introduction/setting/workflow.md)
+
+ - 流程介绍
+ - [项目属性](./introduction/workflow/property.md)
+ - [使用逻辑](./introduction/workflow/logic.md)
+ - [鼠标/键盘宏录制](./introduction/workflow/record)
+ - [变量](./introduction/workflow/variable.md)
+ - [资源](./introduction/workflow/resources.md)
+ - [动作](./introduction/workflow/action.md)
+ - [内置功能](./introduction/workflow/features.md)
+ - 浏览器
+ - [Web 定位策略](./introduction/webdriver/locators.md)
+ - [WebDriver 下载](./introduction/webdriver/download.md)
+ - [浏览器配置目录](./introduction/webdriver/browser_directory.md)
+ - [UIAutomatorViewer 工具](./introduction/android/uiautomatorviewer.md)
+
+ - 字符匹配
+ - [Glob模式](./introduction/mixed/glob.md)
+ - [通配符](./introduction/mixed/wildcard.md)
+
+ - AI
+ - [Tesseract 支持的语言](./introduction/tesseract/Languages_Scripts.md)
+ - [Tesseract 数据文件](./introduction/tesseract/Data-Files.md)
+ - [Tesseract 5 的训练](./introduction/tesseract/tesstrain.md)
+ - [安装 CUDA](./introduction/mixed/CUDA.md)
+ - [cuDNN 和 CUDA 版本对应关系](./introduction/mixed/cuDNN.md)
+ - [Paddle2ONNX模型转化](./introduction/mixed/paddle2onnx.md)
- [动作](./actions/README.md)
- 系统
- [等待](./actions/system/Wait.md)
- - [启动应用程序](./actions/system/StartProcess.md)
+ - [启动应用](./actions/system/StartProcess.md)
- [添加用户](./actions/system/UserAdd.md)
- [打开应用](./actions/system/OpenApplication.md)
- [打开文件](./actions/system/LaunchFile.md)
- - [打开链接](./actions/system/OpenUri.md)
- - [终止进程](./actions/system/KillProcess.md)
- - [关机](./actions/system/ShutdownSystem.md)
+ - [打开链接](./actions/system/OpenUrl.md)
+ - [退出系统](./actions/system/SuspendSystem.md)
- [关闭句柄](./actions/system/CloseHandle.md)
- - [登录应用](./actions/system/LoginApplication.md)
+ - [检测进程](./actions/system/ExistProcess.md)
+ - [终止进程](./actions/system/KillProcess.md)
+ - [登录应用](./actions/system/Runas.md)
+ - [剪切板](./actions/system/ClipboardValue.md)
+ - [打印日志](./actions/system/PrintMessage.md)
+ - [创建对象](./actions/system/CreateObject.md)
+ - [调用方法](./actions/system/CallMethod.md)
+ - [读内存](./actions/system/ReadMemory.md)
+ - [写内存](./actions/system/WriteMemory.md)
+ - [附加进程](./actions/system/AttachProcess.md)
- 异步操作
- - [定时器](./actions/async/WorkTimer.md)
- - [定时任务](./actions/async/TimedTask.md)
- - [线程](./actions/async/WorkThread.md)
- - [结束](./actions/async/WorkExit.md)
- - [启动](./actions/async/WorkBegin.md)
- - [当...成立](./actions/async/When.md)
- - 文件
+ - [定时器](./actions/asynchronous/WorkTimer.md)
+ - [定时任务](./actions/asynchronous/WorkTask.md)
+ - [工作线程](./actions/asynchronous/WorkThread.md)
+ - [异步结束](./actions/asynchronous/WorkExit.md)
+ - [异步启动](./actions/asynchronous/WorkBegin.md)
+ - [状态切换](./actions/asynchronous/WorkReset.md)
+ - [等待事件](./actions/asynchronous/WhenEvent.md)
+ - [异步等待](./actions/asynchronous/WorkWait.md)
+ - 文件系统
- [读取文件](./actions/filesystem/FileRead.md)
- [文件写入](./actions/filesystem/FileWrite.md)
- - [读取多行文件](./actions/filesystem/ReadLines.md)
+ - [按行读取](./actions/filesystem/ReadLines.md)
- [保存图片](./actions/filesystem/ImageSave.md)
- [加载图像](./actions/filesystem/ImageLoad.md)
- [搜索文件](./actions/filesystem/FileQuery.md)
- - [遍历文件夹](./actions/filesystem/DirectoryIterator.md)
- - [复制文件](./actions/filesystem/CopyFile.md)
+ - [遍历文件](./actions/filesystem/DirectoryIterator.md)
+ - [文件复制](./actions/filesystem/CopyFile.md)
+ - [标准路径](./actions/filesystem/StandardPath.md)
- 键盘
- [发送按键](./actions/keyboard/SendKey.md)
- [发送文本](./actions/keyboard/SendText.md)
@@ -45,6 +81,7 @@
- [释放按键](./actions/keyboard/ReleaseKey.md)
- [监听键盘](./actions/keyboard/ListenKeyboard.md)
- [按下并释放](./actions/keyboard/PressAndReleaseKey.md)
+ - [等待按键](./actions/keyboard/WaitKey.md)
- 鼠标
- [移动鼠标](./actions/mouse/MovePointer.md)
- [点击](./actions/mouse/Click.md)
@@ -52,176 +89,221 @@
- [移动并双击](./actions/mouse/MoveDoubleClick.md)
- [双击](./actions/mouse/DoubleClick.md)
- [右键点击](./actions/mouse/RightClick.md)
- - [拖动](./actions/mouse/DragPointer.md)
+ - [拖拽](./actions/mouse/DragPointer.md)
- [监听鼠标](./actions/mouse/ListenMouse.md)
- [偏移移动](./actions/mouse/MoveOffset.md)
+ - [点击*网格](./actions/mouse/CellClick.md)
+ - [移动*网格](./actions/mouse/CellMove.md)
+ - [滚动鼠标](./actions/mouse/WheelMouse.md)
- 窗口
- [查找窗口](./actions/window/FindWindow.md)
- [特定窗口](./actions/window/SpecialWindow.md)
- - [发送键盘消息](./actions/window/SendKeyMessage.md)
- - [提示框](./actions/window/ShowMessageBox.md)
- - [发送鼠标消息](./actions/window/SendMouseClick.md)
- - [前置窗口](./actions/window/SetForegroundWindow.md)
- - [运行对话框](./actions/window/WinRun.md)
+ - [消息框](./actions/window/MessageBox.md)
+ - [激活窗口](./actions/window/ActiveWindow.md)
+ - [祖先窗口](./actions/window/WindowAncestor.md)
+ - [窗口置顶](./actions/window/PositionWindow.md)
+ - [运行框](./actions/window/WinRun.md)
- [窗口可视](./actions/window/WindowVisible.md)
- [枚举窗口](./actions/window/EnumWindows.md)
- - [窗口标题](./actions/window/WindowTitle.md)
- - [窗口矩形](./actions/window/WindowRect.md)
- - [窗口尺寸](./actions/window/WindowSize.md)
+ - [窗口标题](./actions/window/WindowCaption.md)
+ - [窗口位置](./actions/window/WindowXy.md)
+ - [窗口大小](./actions/window/WindowSize.md)
+ - [窗口坐标](./actions/window/WindowPoint.md)
+ - [闪烁窗口](./actions/window/FlashWindow.md)
+ - [关闭窗口](./actions/window/CloseWindow.md)
- 图像处理
- [颜色转换](./actions/image/CvtColor.md)
- [裁切图片](./actions/image/CropImage.md)
- [调整尺寸](./actions/image/ResizeImage.md)
- - [裁切图片](./actions/image/CenterCropImage.md)
+ - [图像旋转](./actions/image/ImageRotate.md)
+ - [图像缩放](./actions/image/ImageScale.md)
+ - [中心裁切](./actions/image/CenterCropImage.md)
- [边缘检测](./actions/image/ImageCanny.md)
- - [阈值](./actions/image/ImageThreshold.md)
+ - [阈值操作](./actions/image/ImageThreshold.md)
- [颜色筛选](./actions/image/ImageInRange.md)
- [形态学操作](./actions/image/ImageMorphological.md)
- [自适应阈值](./actions/image/AdaptiveThreshold.md)
- - [标记ROI](./actions/image/ImageMarkROI.md)
+ - [平滑/模糊](./actions/image/ImageBlur.md)
+ - [标记区域](./actions/image/ImageMarkROI.md)
+ - [标记相对区域](./actions/image/ImageMarkRelativeROI.md)
+ - [连通域分析](./actions/image/ConnectedComponents.md)
+ - [均值](./actions/image/ImageMean.md)
+ - [标准差](./actions/image/ImageStd.md)
+ - [像素归一化](./actions/image/ImageNormalize.md)
- 图像检测
- - [线段检测](./actions/detection/EdgeLineDetection.md)
- - [快速直线检查找](./actions/detection/FastLineDetection.md)
+ - [直线检测](./actions/detection/LineDetection.md)
- [椭圆检测](./actions/detection/EllipseDetection.md)
+ - [斑点检测](./actions/detection/BlobDetect.md)
+ - [形状查找](./actions/detection/ShapeDetection.md)
- [形状匹配](./actions/detection/MatchShapes.md)
- - [图像查找](./actions/detection/FeatureDetect.md)
- - [Blob 查找](./actions/detection/BlobDetect.md)
- - [查找轮廓](./actions/detection/FindContours.md)
- - [近似轮廓](./actions/detection/ApproxPolyDP.md)
- - [连通域分析](./actions/detection/ConnectedComponents.md)
- - [颜色统计](./actions/detection/ColorPercentage.md)
+ - [特征匹配](./actions/detection/FeatureDetect.md)
- [模板匹配](./actions/detection/MatchTemplate.md)
+ - [图像匹配](./actions/detection/MatchImage.md)
+ - [查找轮廓](./actions/detection/FindContours.md)
+ - [颜色辨识](./actions/detection/ImageColorDiscrimination.md)
- 绘图
- - [绘制检测结果](./actions/drawing/DrawDetectionResult.md)
+ - [绘制矩形](./actions/draw/DrawRect.md)
+ - [填充颜色](./actions/draw/FillColor.md)
+ - [条码生成](./actions/draw/BarcodeCreate.md)
+ - [文字绘制](./actions/draw/DrawText.md)
+ - [图像绘制](./actions/draw/DrawImage.md)
- 深度学习
- - [目标分类](./actions/dnn/ONNXClassification.md)
- - [目标检测](./actions/dnn/ONNXDetection.md)
- - [中文识别](./actions/dnn/TextChinese.md)
- - [文本块检测](./actions/dnn/TextDetection.md)
+ - [目标分类](./actions/ai/ImageClassification.md)
+ - [对象检测](./actions/ai/ObjectDetection.md)
+ - [文字图像方向矫正](./actions/ai/DocumentOrientation.md)
+ - [文字图像矫正](./actions/ai/TextUnwarping.md)
+ - [文字区域检测](./actions/ai/TextDetection.md)
+ - [文字角度纠正](./actions/ai/TextlineOrientation.md)
+ - [文字识别](./actions/ai/TextRecognition.md)
+ - [二维码识别](./actions/ai/QRCode.md)
+ - [条码识别](./actions/ai/BarcodeDetector.md)
+ - [文本提取](./actions/ai/TextExtract.md)
+ - 媒体
+ - [窗口截图](./actions/media/CaptureWindow.md)
+ - [全屏截图](./actions/media/CaptureScreen.md)
+ - [活动窗口截图](./actions/media/CaptureActiveWindow.md)
+ - [声音播放](./actions/media/MediaPlay.md)
+ - [键盘/鼠标宏重放](./actions/media/PlayRecord.md)
+ - [相机图像](./actions/media/VideoFrame.md)
+ - [屏幕取色](./actions/media/PixelPoint.md)
- 网络
- - [下载](./actions/network/HttpDownload.md)
- - [视频下载](./actions/network/YoutubeDownload.md)
- - [Head](./actions/network/HttpHead.md)
- - [Get](./actions/network/HttpGet.md)
- - [Post](./actions/network/HttpPost.md)
- - [监听](./actions/network/TcpListen.md)
- - [发送](./actions/network/TcpSend.md)
- - [接收](./actions/network/TcpReceive.md)
- - [连接](./actions/network/TcpConnect.md)
+ - [文件下载](./actions/network/HttpDownload.md)
+ - [视频下载](./actions/network/VideoDownload.md)
+ - [HEAD 请求](./actions/network/HttpHead.md)
+ - [GET 请求](./actions/network/HttpGet.md)
+ - [POST 请求](./actions/network/HttpPost.md)
+ - [网络服务](./actions/network/NetworkListen.md)
+ - [数据发送](./actions/network/NetworkSend.md)
+ - [数据接收](./actions/network/NetworkReceive.md)
+ - [服务连接](./actions/network/NetworkConnect.md)
+ - [域名查询](./actions/network/DomainQuery.md)
+ - [发送输入](./actions/network/SendInput.md)
+ - [接收输入](./actions/network/ReceiveInput.md)
+ - 统计分析
+ - [加载文档](./actions/pandas/LoadDocument.md)
+ - [查询](./actions/pandas/DataFrameQuery.md)
+ - [统计行数](./actions/pandas/RowsCount.md)
+ - [行列选择 * 标签](./actions/pandas/NameLoc.md)
+ - [行列选择 * 索引](./actions/pandas/IndexLoc.md)
+ - [迭代行](./actions/pandas/IterRow.md)
+ - [保存文档](./actions/pandas/SaveDocument.md)
+ - 云
+ - [百度翻译](./actions/cloud/BaiduTranslate.md)
- Web
- [打开浏览器](./actions/web/WebOpen.md)
- [查找元素](./actions/web/WebGetElement.md)
- [点击](./actions/web/WebElementClick.md)
- [表单提交](./actions/web/WebElementSubmit.md)
- [清除文本](./actions/web/WebElementClear.md)
- - [选中检查](./actions/web/WebElementIsSelect.md)
+ - [选中检查](./actions/web/WebElementSelected.md)
- [发送按键](./actions/web/WebElementSendKey.md)
- - [发送文本](./actions/web/WebElementSendText.md)
+ - [设置文本](./actions/web/WebElementSendText.md)
- [获取属性](./actions/web/WebElementAttribute.md)
- [等待*警告框](./actions/web/WebWaitAlert.md)
- [等待*元素呈现](./actions/web/WebWaitPresence.md)
- - [等待*框架可切换](./actions/web/WebWaitFrameAvailable.md)
+ - [等待*框架](./actions/web/WebWaitFrameAvailable.md)
- [等待*标题](./actions/web/WebWaitTitle.md)
- [等待*可见](./actions/web/WebWaitVisibilityByElement.md)
- - [等待*可见(定位器)](./actions/web/WebWaitVisibilityByLocator.md)
+ - [等待*可见(定位)](./actions/web/WebWaitVisibilityByLocator.md)
+ - [等待*可点击](./actions/web/WebWaitClickable.md)
- [切换框架](./actions/web/WebSwitchToFrame.md)
- - [框架*设置焦点](./actions/web/WebFocusFrameDefault.md)
+ - [重置框架](./actions/web/WebFocusFrameDefault.md)
- [元素截图](./actions/web/WebScreenshot.md)
- - [动作链*创建](./actions/web/WebActionChainsCreated.md)
+ - [获取 Cookies](./actions/web/WebCookies.md)
+ - [执行脚本](./actions/web/WebExecute.md)
- [动作链*执行](./actions/web/WebActionChainsPerform.md)
- [动作链.点击](./actions/web/WebActionClick.md)
- [动作链.点按](./actions/web/WebActionClickHold.md)
- [动作链.双击](./actions/web/WebActionDoubleClick.md)
- [动作链.拖放](./actions/web/WebActionDragDrop.md)
- [动作链.移动](./actions/web/WebActionMoveTo.md)
- - [动作链.释放](./actions/web/WebActionRelease.md)
- - [动作链.按键](./actions/web/WebActionKeyDown.md)
- - [动作链.释放按键](./actions/web/WebActionKeyUp.md)
- - [动作链.移动(偏移)](./actions/web/WebActionMoveOffset.md)
+ - [动作链.释放鼠标键](./actions/web/WebActionRelease.md)
+ - [动作链.按下修饰键](./actions/web/WebActionKeyDown.md)
+ - [动作链.释放修饰键](./actions/web/WebActionKeyUp.md)
- [动作链.发送文本](./actions/web/WebActionSendText.md)
- - [获取 Cookies](./actions/web/WebCookies.md)
- - 媒体
- - [窗口截图](./actions/media/WindowCapture.md)
- - [声音播放](./actions/media/MediaPlay.md)
- - [播放录制](./actions/media/PlayRecord.md)
- - [全屏截图](./actions/media/CaptureFullScreen.md)
- - [前置窗口截图](./actions/media/CaptureForground.md)
- - 云
- - [百度翻译](./actions/cloud/BaiduTranslate.md)
- - Xml
- - [文档](./actions/xml/XmlLoadDocument.md)
- - [获取节点](./actions/xml/XmlGetNodeList.md)
- - [节点名称](./actions/xml/XmlNodeName.md)
- - [元素](./actions/xml/XmlDocumentElement.md)
- - [文本替换](./actions/xml/XmlReplaceText.md)
- - [保存](./actions/xml/XmlSaveDocument.md)
- - Json
- - [读取 Json](./actions/json/ReadJson.md)
+ - [动作链.暂停](./actions/web/WebActionPause.md)
- 安卓
- - [设备列表](./actions/android/AdbDevices.md)
+ - [启动服务](./actions/android/AdbStartServer.md)
- [连接](./actions/android/AdbConnect.md)
+ - [设备](./actions/android/AdbDevices.md)
- [转发](./actions/android/AdbForward.md)
- - [移除转发](./actions/android/AdbRemoveForward.md)
- [滑动](./actions/android/AdbSwipe.md)
- [输入](./actions/android/AdbInput.md)
+ - [输入 * 中文](./actions/android/Adbkeyboard.md)
+ - [清除文字](./actions/android/AdbClearText.md)
- [按键](./actions/android/AdbKey.md)
- [点击](./actions/android/AdbTap.md)
- - [截图](./actions/android/AdbScreenCap.md)
- - [打开应用](./actions/android/AdbStartApp.md)
- - [安装包](./actions/android/AdbPackages.md)
- [移动](./actions/android/AdbMove.md)
- - [网卡配置](./actions/android/AdbIfConfig.md)
- - [启动服务](./actions/android/AdbStartServer.md)
- - [终止服务](./actions/android/AdbKillServer.md)
- - 逻辑
+ - [截图](./actions/android/AdbScreenCap.md)
+ - [应用列表](./actions/android/AdbPackages.md)
+ - [启动 App](./actions/android/AdbStartApp.md)
+ - [应用检测](./actions/android/AdbIsInstalled.md)
+ - [安装应用](./actions/android/AdbInstall.md)
+ - [推送文件](./actions/android/AdbPush.md)
+ - [拉取文件](./actions/android/AdbPull.md)
+ - [文件列表](./actions/android/AdbLs.md)
+ - 流程控制
- [循环](./actions/control/For.md)
- [判断](./actions/control/If.md)
- [判空](./actions/control/IsEmpty.md)
- [调用](./actions/control/Invoke.md)
- [停止循环](./actions/control/Break.md)
- [脚本](./actions/control/Code.md)
- - [退出](./actions/control/ExitApp.md)
+ - [退出流程](./actions/control/Exit.md)
- [表达式](./actions/control/CodeExpression.md)
- [引用动作](./actions/control/ActionAlias.md)
- [引用动作(名称)](./actions/control/NameAlias.md)
- - [输出控制](./actions/control/LoggingEnabled.md)
- - [分组](./actions/control/GroupAction.md)
+ - [输出控制](./actions/control/LoggingControl.md)
- [算术运行](./actions/control/ArithmeticCalculate.md)
- [逻辑运算](./actions/control/LogicalOperator.md)
- [关系运算](./actions/control/RelationalOperator.md)
- - [传入参数](./actions/control/InputParam.md)
+ - [参数](./actions/control/Param.md)
+ - [分组](./actions/control/GroupAction.md)
+ - [软触发](./actions/control/SoftwareTrigger.md)
- 算法
- [分割字符串](./actions/algorithm/SplitString.md)
- - [非零像素点](./actions/algorithm/FindNonZero.md)
+ - [合并字符串](./actions/algorithm/JoinString.md)
+ - [提取子串](./actions/algorithm/SubString.md)
- [访问数组](./actions/algorithm/AccessArray.md)
- [访问对象](./actions/algorithm/AccessKey.md)
- - [数组长度](./actions/algorithm/AccessSize.md)
+ - [数组长度](./actions/algorithm/ArraySize.md)
- [中心坐标](./actions/algorithm/CalculateCenter.md)
- - [坐标转换](./actions/algorithm/PointConvert.md)
+ - [坐标转换](./actions/algorithm/ConvertPoint.md)
- [文本筛选](./actions/algorithm/FilterText.md)
- [面积筛选](./actions/algorithm/FilterArea.md)
- [周长筛选](./actions/algorithm/FilterPerimeter.md)
- [形状筛选](./actions/algorithm/FilterVertex.md)
- [椭圆筛选](./actions/algorithm/FilterEllipse.md)
- - [窗口筛选](./actions/algorithm/FilterWindows.md)
- - [随机数](./actions/algorithm/RandomNumber.md)
+ - [随机数字](./actions/algorithm/RandomNumber.md)
- [随机坐标](./actions/algorithm/RandomPoint.md)
+ - [图像差值](./actions/algorithm/ImageDifference.md)
+ - [颜色统计](./actions/algorithm/ColorPercentage.md)
+ - [添加元素](./actions/algorithm/PushBack.md)
+ - [删除元素](./actions/algorithm/PopBack.md)
- 类型
+ - [布尔](./actions/type/TypeBoolean.md)
+ - [数字](./actions/type/TypeNumber.md)
- [字符串](./actions/type/TypeString.md)
- - [Json](./actions/type/TypeJson.md)
- - [网址](./actions/type/TypeUri.md)
+ - [网址](./actions/type/TypeUrl.md)
- [坐标](./actions/type/TypePoint.md)
- [文件](./actions/type/TypeFile.md)
- - [文件夹](./actions/type/TypeFolder.md)
- - [剪切板](./actions/type/ClipboardValue.md)
+ - [路径](./actions/type/TypePath.md)
- [快捷键](./actions/type/TypeShortcut.md)
- [矩形](./actions/type/TypeRect.md)
- [资源](./actions/type/TypeResource.md)
- [标量](./actions/type/TypeScalar.md)
- [密码](./actions/type/TypePassword.md)
- [颜色](./actions/type/TypeColor.md)
- - [模型](./actions/type/ONNXModel.md)
- - 类型
+ - [模型](./actions/type/TypeModel.md)
+ - [相机](./actions/type/TypeCamera.md)
+ - [字典](./actions/type/TypeDict.md)
+ - [元组](./actions/type/TypeTuple.md)
+ - [切片](./actions/type/TypeSlice.md)
+ - [列表](./actions/type/TypeList.md)
+ - [指针](./actions/type/TypePtr.md)
+ - [主机地址](./actions/type/TypeHostAddress.md)
+ - [字符串列表](./actions/type/TypeStrings.md)
+ - 内置类型
- [Boolean](./types/Boolean.md)
- [Number](./types/Number.md)
- [String](./types/String.md)
@@ -230,8 +312,11 @@
- [Rect](./types/Rect.md)
- [Scalar](./types/Scalar.md)
- [Color](./types/Color.md)
+ - [Bytes](./types/Bytes.md)
- [RotatedRect](./types/RotatedRect.md)
- [DetectionResult](./types/DetectionResult.md)
+ - [ClassificationResult](./types/ClassificationResult.md)
+ - [RecognitionResult](./types/RecognitionResult.md)
- [File](./types/File.md)
- [Image](./types/Image.md)
- [Size](./types/Size.md)
@@ -239,14 +324,22 @@
- [Wnd](./types/Wnd.md)
- [ModelSession](./types/ModelSession.md)
- [WebDriver](./types/WebDriver.md)
- - 枚举
- - [ThresholdTypes](./enums/ThresholdTypes.md)
+ - [Timer](./types/Timer.md)
+ - [Thread](./types/Thread.md)
+ - [Keyboard](./types/Keyboard.md)
+ - [HostAddress](./types/HostAddress.md)
+ - [Tuple](./types/Tuple.md)
+ - [Slice](./types/Slice.md)
+ - [Ptr](./types/Ptr.md)
+ - 枚举类型
+ - [Colors](./enums/Colors.md)
- [Directions](./enums/Directions.md)
- [ColorConversionCodes](./enums/ColorConversionCodes.md)
- [ContourShape](./enums/ContourShape.md)
- [GlobOptions](./enums/GlobOptions.md)
- [HandleType](./enums/HandleType.md)
- - [KnownWindowType](./enums/KnownWindowType.md)
+ - [KnownWindow](./enums/KnownWindow.md)
+ - [KnownFolder](./enums/KnownFolder.md)
- [LogicalOperators](./enums/LogicalOperators.md)
- [MessageBoxFlags](./enums/MessageBoxFlags.md)
- [MessagePlaceMode](./enums/MessagePlaceMode.md)
@@ -257,5 +350,23 @@
- [RetrievalModes](./enums/RetrievalModes.md)
- [ThresholdTypes](./enums/ThresholdTypes.md)
- [Visibility](./enums/Visibility.md)
- - [WorkStatus](./enums/WorkStatus.md)
+ - [WorkState](./enums/WorkState.md)
+ - [LogStatus](./enums/LogStatus.md)
+ - [RelativePosition](./enums/RelativePosition.md)
+ - [MouseMessage](./enums/MouseMessage.md)
+ - [MorphologicalOperations](./enums/MorphologicalOperations.md)
+ - [ContourApproximationMode](./enums/ContourApproximationMode.md)
+ - [FeatureAlgorithm](./enums/FeatureAlgorithm.md)
+ - [WindowSortDirection](./enums/WindowSortDirection.md)
+ - [FileExtension](./enums/FileExtension.md)
+ - [SuspendStateOption](./enums/SuspendStateOption.md)
+ - [WebKey](./enums/WebKey.md)
+ - [WebLocated](./enums/WebLocated.md)
+ - [ModuleOption](./enums/ModuleOption.md)
+ - [BARCODE_Encoding](./enums/BARCODE_Encoding.md)
+ - [PageSegMode](./enums/PageSegMode.md)
+ - [CameraTriggerActivation](./enums/CameraTriggerActivation.md)
+ - [CameraTriggerSource](./enums/CameraTriggerSource.md)
+ - [CameraType](./enums/CameraType.md)
+ - [CookiesFormat](./enums/CookiesFormat.md)
- [Changelog](./CHANGELOG.md)
\ No newline at end of file
diff --git a/docx/actions/README.md b/docx/actions/README.md
index a1c8ab20..be517180 100644
--- a/docx/actions/README.md
+++ b/docx/actions/README.md
@@ -1,6 +1,6 @@
# 动作
-动作是 *WinUi++* 中的执行单元.
+动作是 *小友+* 中的执行单元.
## 基础属性
diff --git a/docx/actions/ai/BarcodeDetector.md b/docx/actions/ai/BarcodeDetector.md
new file mode 100644
index 00000000..29d86ffc
--- /dev/null
+++ b/docx/actions/ai/BarcodeDetector.md
@@ -0,0 +1,30 @@
+# 条码识别
+处理条码扫描需求的强力工具,支持 EAN-8、 EAN-13、UPC-A 、 UPC-E 、Code 128、 Code 93、 Code 39 等。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像
+> 含条形码的图像。
+
+## 输出
+
+> 条码信息,参考:[RecognitionResult](./types/RecognitionResult.md)。
+
+## 脚本调用
+
+```python
+import simple;
+
+
+```
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/barcode.simple
+
+
diff --git a/docx/actions/ai/DocumentOrientation.md b/docx/actions/ai/DocumentOrientation.md
new file mode 100644
index 00000000..e72337f4
--- /dev/null
+++ b/docx/actions/ai/DocumentOrientation.md
@@ -0,0 +1,25 @@
+# 文字图像方向矫正
+
+将文档图像的方向区分出来,并使用后处理将其矫正。在诸如文档扫描、证照拍摄等过程中,有时为了拍摄更清晰,会将拍摄设备进行旋转,导致得到的图片也是不同方向的。此时,标准的OCR流程无法很好地应对这些数据。利用图像分类技术,可以预先判断含文字区域的文档或证件的方向,并将其进行方向调整,从而提高 OCR 处理的准确性。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像 1
+> 包含文字的图片。
+
+
+## 输出
+
+> 参考 [Image](./types/Image.md);
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
+
+
+
diff --git a/docx/actions/ai/ImageClassification.md b/docx/actions/ai/ImageClassification.md
new file mode 100644
index 00000000..2c005144
--- /dev/null
+++ b/docx/actions/ai/ImageClassification.md
@@ -0,0 +1,44 @@
+# 目标分类
+对象分类是计算机视觉中的一项基本任务,涉及训练模型以及将图像分类为预定义的类别。该动作基于深度学习框架用来处理目标分类应用场景。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 模型
+> *ONNX* 分类模型。
+* 图像
+> 要分类的图像。通常是归一化后的图像数据,操作步骤:先进行 [*像素缩放*](./actions/image/ImageNormalize.md) 动作,将图像像素缩放至 (0 ~ 1),然后 [*均值*](./actions/image/ImageMean.md) 动作操作,最后再再执行 [*标准差*](./actions/image/ImageStd.md) 。
+* 标签
+> 预定义的分类标签。
+
+* 归一化
+> 将输出的置信度限制在 *0~1* 范围内。
+
+## 输出
+
+> 分类对象, 参考:[ClassificationResult](./types/ClassificationResult.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/ImageClassification.simple
+
+
+
+
+
+
+
+!> ONNX Model Zoo: https://github.com/onnx/models
diff --git a/docx/actions/ai/ObjectDetection.md b/docx/actions/ai/ObjectDetection.md
new file mode 100644
index 00000000..a7ef21b0
--- /dev/null
+++ b/docx/actions/ai/ObjectDetection.md
@@ -0,0 +1,43 @@
+# 对象检测
+基于深度学习框架的目标检测,目前仅支持 *Yolo5*格式的 *ONNX* 模型,其它 *ONNX* 检测模型需要通过脚本自已解析输出。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 模型
+> *ONNX* 模型。
+* 图像
+> 包含检测目标的图像。通常是归一化后的图像数据,操作步骤:先进行 [*像素缩放*](../actions/image/ImageNormalize.md) 动作,将图像像素缩放至 (0 - 1),然后 [*均值*](../actions/image/ImageMean.md) 动作操作,最后再再执行 [*标准差*](../actions/image/ImageStd.md) 。
+* 置信度
+> 低于该值的被认为不准确的检测结果。
+
+* 标签
+> 预定义的分类标签。
+
+* 框架
+> 目前仅支持 *Yolo5* 架构的模型
+
+## 输出
+
+> 检测到的图像位置,参考:[DetectionResults](./types/DetectionResult.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/ObjectDetection.simple
+
+
+
+
diff --git a/docx/actions/ai/QRCode.md b/docx/actions/ai/QRCode.md
new file mode 100644
index 00000000..ff507f7d
--- /dev/null
+++ b/docx/actions/ai/QRCode.md
@@ -0,0 +1,32 @@
+# 二维码识别
+识别图片中的二维码。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像
+> 含二维码的图像。
+
+## 输出
+
+> 二维码信息,参考:[RecognitionResult](./types/RecognitionResult.md)。
+
+## 脚本调用
+
+```python
+import simple;
+
+
+```
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/QRCode.simple
+
+
+
+
diff --git a/docx/actions/ai/TextDetection.md b/docx/actions/ai/TextDetection.md
new file mode 100644
index 00000000..53594179
--- /dev/null
+++ b/docx/actions/ai/TextDetection.md
@@ -0,0 +1,40 @@
+# 文字区域检测
+在图像中定位和标记出包含文本的区域。该模块的性能直接影响到整个OCR系统的准确性和效率。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像 1
+> 包含文字的图片。
+
+* 图像边长限制类型 2
+> [短边] 表示确保图片最短边不小于 [文本检测的图片边长限制],[长边] 表示确保图片最长边不大于 [文本检测的图片边长限制]。
+
+* 图片边长限制 3
+> 对于文本密集的大图像,如果想要更准确的识别,应该选择更大的尺寸。此参数与[文本检测的图像边长限制类型]配合使用。通常,[长边]的最大值适用于图像较大且文本密集的场景,[短边]的最小值适用于图像较小且文本密集的文档场景。
+
+* 文本检测像素阈值 4
+> 在输出概率图中,只有得分大于阈值的像素才被视为文本像素,取值范围为 `0 ~ 1`。
+
+* 文本检测框阈值 5
+
+> 当检测结果边框内所有像素的平均得分大于阈值时,该结果将被视为文本区域,取值范围为 `0` 至 `1`。如果出现漏检,可以适当降低此值。
+
+* 文本检测去裁剪比例 6
+>使用此方法扩展文本区域。值越大,扩展区域越大。
+
+
+## 输出
+
+> 参考 [`DetectionResults`](./types/DetectionResult.md)。
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
+
+
+
diff --git a/docx/actions/ai/TextExtract.md b/docx/actions/ai/TextExtract.md
new file mode 100644
index 00000000..0ba8a9f7
--- /dev/null
+++ b/docx/actions/ai/TextExtract.md
@@ -0,0 +1,33 @@
+# TextExtract
+基于 Tesseract OCR 的一款开源的光学字符识别引擎。能够识别多种语言的文字,包括但不限于英语、中文、法语、德语等。
+
+* 支持多种语言:Tesseract 能够识别多种语言的文字,包括但不限于英语、中文、法语、德语等。通过训练数据的扩展,其语言识别能力还在不断增强。
+* 高识别准确率:在经过大量数据训练和优化后,对于清晰的文档图像,Tesseract 可以达到较高的识别准确率。它能够处理多种字体、字号和排版格式的文字,对噪声和图像变形有一定的鲁棒性。
+* 可定制性强:用户可以根据自己的需求对 Tesseract 进行定制,例如训练自己的字库模型,以提高对特定领域或特殊字体的识别效果。此外,还可以调*整各种参数来优化识别过程,适应不同的应用场景。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像
+> 包含文字的图片。
+
+* 数据文件
+> 默认值为 NULL,包含了 **英语**、**中文 - 简体** 和 **中文 - 繁体**。 它指定了 Tesseract 数据文件所在的路径。其它语言需要下载对应的数据文件,参考:[训练数据文件](./introduction/tesseract/Data-Files)。
+
+* 识别语言
+> 默认值为 "eng"。它指定了要识别的语言,可以使用 ISO 639-3 语言代码来指定语言,例如 "eng" 表示英语,"chi_sim" 表示简体中文。如果要同时识别多种语言,可以用 "+" 连接不同的语言代码,如 "eng+chi_sim",参考: [Tesseract 支持的语言](./introduction/tesseract/Languages_Scripts)
+
+* 页面分割模式
+> 默认值为 `AUTO` 。它指的是页面分割模式(Page Segmentation Mode),决定了 Tesseract 如何对图像中的页面进行分割和识别,例如是按行识别、按单词识别还是按单个字符识别等。参考:[PageSegMode](./enums/PageSegMode.md)。
+
+## 输出
+
+> 识别结果, 参考: [`RecognitionResults`](./types/RecognitionResult.md)。
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
diff --git a/docx/actions/ai/TextRecognition.md b/docx/actions/ai/TextRecognition.md
new file mode 100644
index 00000000..184f8b05
--- /dev/null
+++ b/docx/actions/ai/TextRecognition.md
@@ -0,0 +1,27 @@
+# 文字识别
+识别图像中的中文/英文文字。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像 1
+> 包含文字的图片。
+
+* 置信度 2
+> 文本检测完成后,对文本框内的文字进行文本识别,得分大于该阈值的文本结果将被保留。取值范围为 `0 ~ 1`。
+
+
+## 输出
+
+> 参考 [`RecognitionResults`](./types/RecognitionResult.md)。
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
+
+
+
diff --git a/docx/actions/ai/TextUnwarping.md b/docx/actions/ai/TextUnwarping.md
new file mode 100644
index 00000000..c6678ad5
--- /dev/null
+++ b/docx/actions/ai/TextUnwarping.md
@@ -0,0 +1,24 @@
+# 文字图像矫正
+针对图像进行几何变换,以纠正图像中的文档扭曲、倾斜、透视变形等问题,以供后续的文本识别进行更加准确。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像 1
+> 包含文字的图片。
+
+
+## 输出
+
+> 参考 [Image](./types/Image.md)。
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
+
+
+
diff --git a/docx/actions/ai/TextlineOrientation.md b/docx/actions/ai/TextlineOrientation.md
new file mode 100644
index 00000000..f13de059
--- /dev/null
+++ b/docx/actions/ai/TextlineOrientation.md
@@ -0,0 +1,23 @@
+# 文字角度纠正
+角度分类器,默认识别:0°、90° 、270°。 如果使用,则可识别旋转180°的图片。如果文本没有旋转180°,为了性能,请不要使用该选项。其它文本旋转角度无法准确识别。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像 1
+> 包含文字的图片,也可以是 [TextDetection](./actions/ai/TextDetection.md) 的结果 。
+
+## 输出
+
+> 如果参数 `1` 是图像, 参考 [Image](./types/Image.md);如果参数 `1` 是 [`DetectionResults`](./types/DetectionResult.md), 参考 [DetectionResults](./types/DetectionResult.md)。
+
+### 其它
+
+示例 https://github.com/shelllet/WinUi/blob/main/dnn/TextRecognition.simple
+
+
+
diff --git a/docx/actions/ai/images/01.png b/docx/actions/ai/images/01.png
new file mode 100644
index 00000000..c23df796
Binary files /dev/null and b/docx/actions/ai/images/01.png differ
diff --git a/docx/actions/ai/images/02.png b/docx/actions/ai/images/02.png
new file mode 100644
index 00000000..9a997f39
Binary files /dev/null and b/docx/actions/ai/images/02.png differ
diff --git a/docx/actions/ai/images/03.png b/docx/actions/ai/images/03.png
new file mode 100644
index 00000000..5622e4f5
Binary files /dev/null and b/docx/actions/ai/images/03.png differ
diff --git a/docx/actions/ai/images/04.png b/docx/actions/ai/images/04.png
new file mode 100644
index 00000000..923c5a71
Binary files /dev/null and b/docx/actions/ai/images/04.png differ
diff --git a/docx/actions/ai/images/05.png b/docx/actions/ai/images/05.png
new file mode 100644
index 00000000..20ce4440
Binary files /dev/null and b/docx/actions/ai/images/05.png differ
diff --git a/docx/actions/ai/images/06.png b/docx/actions/ai/images/06.png
new file mode 100644
index 00000000..55340bcc
Binary files /dev/null and b/docx/actions/ai/images/06.png differ
diff --git a/docx/actions/ai/images/07.png b/docx/actions/ai/images/07.png
new file mode 100644
index 00000000..bef5ac61
Binary files /dev/null and b/docx/actions/ai/images/07.png differ
diff --git a/docx/actions/ai/images/08.png b/docx/actions/ai/images/08.png
new file mode 100644
index 00000000..041f5634
Binary files /dev/null and b/docx/actions/ai/images/08.png differ
diff --git a/docx/actions/ai/images/09.png b/docx/actions/ai/images/09.png
new file mode 100644
index 00000000..83cf06fd
Binary files /dev/null and b/docx/actions/ai/images/09.png differ
diff --git a/docx/actions/ai/images/10.png b/docx/actions/ai/images/10.png
new file mode 100644
index 00000000..e7d1e8b6
Binary files /dev/null and b/docx/actions/ai/images/10.png differ
diff --git a/docx/actions/ai/images/11.png b/docx/actions/ai/images/11.png
new file mode 100644
index 00000000..820cd7db
Binary files /dev/null and b/docx/actions/ai/images/11.png differ
diff --git a/docx/actions/algorithm/AccessArray.md b/docx/actions/algorithm/AccessArray.md
index cdb27346..4c347032 100644
--- a/docx/actions/algorithm/AccessArray.md
+++ b/docx/actions/algorithm/AccessArray.md
@@ -1,7 +1,7 @@
# 访问数组
根据索引获取 *数组* 当中的元素。
-
+
## 子流程
@@ -9,22 +9,21 @@
## 运行参数
-* Value: 数组,比如`文字识别`动作的结果,或者 *python* *[]* 变量。
-* Index: 索引,[Number](../../types/Number.md)
+* 值
+> 数组,包含多个元素的对象。
+
+* 索引,
+> 正值从前至后访问,负值从后至前访问。索引从 *0* 开始。 例如:*0* 可以访问第一个元素,*-1* 可以访问最后一个元素。
## 输出
-> 数组中的元素
+> 数组中的元素。
-## 脚本调用
-```python
-import simple
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/AccessArray.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/access_array.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/access_array.simple)
diff --git a/docx/actions/algorithm/AccessKey.md b/docx/actions/algorithm/AccessKey.md
index 34c48a59..f950056c 100644
--- a/docx/actions/algorithm/AccessKey.md
+++ b/docx/actions/algorithm/AccessKey.md
@@ -1,7 +1,7 @@
# 访问对象
根据指定的名称,获取 *对象* 的值。
-
+
## 子流程
@@ -9,22 +9,19 @@
## 运行参数
-* Value: 数组,比如 *python* `dict` 类型, 或者 [`JsonObject`](../../types/JsonObject.md) 类型
-* Key: 名称,[String](../../types/String.md) 类型
+* 对象
+> 比如 *python* 字典 `Dictionary`。
+* 键:
+> 键名称,[String](./types/String.md) 类型。
## 输出
-> 根据不同的动作,输出会不同。
+> 对象。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/AccessKey.simple
-```
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/access_array.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/access_array.simple)
diff --git a/docx/actions/algorithm/AccessSize.md b/docx/actions/algorithm/AccessSize.md
deleted file mode 100644
index 57b37d71..00000000
--- a/docx/actions/algorithm/AccessSize.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# 数组长度
-获取 *数组* 的长度。
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-* Value: 可计算长度的 *数组* 或者 *字符串*。
-
-## 输出
-
-> 长度, [`Number`](../../types/Number.md) 类型
-
-
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/access_size.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/access_size.simple)
diff --git a/docx/actions/algorithm/ArraySize.md b/docx/actions/algorithm/ArraySize.md
new file mode 100644
index 00000000..161170e8
--- /dev/null
+++ b/docx/actions/algorithm/ArraySize.md
@@ -0,0 +1,24 @@
+# 数组长度
+获取 *数组/列表* 的长度。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 数据
+> 可计算长度的 *数组* 或者 *字符串*。
+## 输出
+
+> 长度, [`Number`](./types/Number.md) 类型。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/ArraySize.simple
+
+
+
diff --git a/docx/actions/algorithm/CalculateCenter.md b/docx/actions/algorithm/CalculateCenter.md
index be9521bd..ef199d64 100644
--- a/docx/actions/algorithm/CalculateCenter.md
+++ b/docx/actions/algorithm/CalculateCenter.md
@@ -1,7 +1,7 @@
# 中心坐标
计算矩形框,或者轮廓的中心位置。
-
+
## 子流程
@@ -10,21 +10,17 @@
## 运行参数
-* Source:可计算中心坐标的数据
+* 数据
+> 可计算中心坐标的数据,比如:[模板匹配](./actions/detection/MatchTemplate.md) 的输出结果。
## 输出
-> 中心坐标。类型为:[`Point`](../../types/Point.md)
+> 中心坐标。类型为:[`Point`](./types/Point.md)
-### 脚本调用
+### 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/CalculateCenter.simple
-```
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple)
diff --git a/docx/actions/algorithm/ColorPercentage.md b/docx/actions/algorithm/ColorPercentage.md
new file mode 100644
index 00000000..d39660f7
--- /dev/null
+++ b/docx/actions/algorithm/ColorPercentage.md
@@ -0,0 +1,38 @@
+# 颜色统计
+该动作可以统计某一颜色在整个图像当中所占的比例。
+
+
+
+
+## 子流程
+
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 要进行颜色统计的图像。
+* 颜色
+> 所要统计的颜色。 由于 *HSV* 颜色空间更符合人的主观视觉感知, 通常使用 *HSV* 颜色空间执行颜色统计。
+
+* 色相差值
+> 包含近似颜色的色相差值,取值范围:`0 ~ 359`。当前颜色的 *H* 值 减去 最小值,当前颜色的 *H* 值 加上 最大值,作为 *色相* 的取值范围。
+
+* 饱和度差值
+> 包含近似颜色的饱和度差值,取值范围:`0 ~ 100`。当前颜色的 *S* 值 减去 最小值,当前颜色的 *S* 值 加上 最大值,作为 *饱和度* 的取值范围。
+
+* 亮度差值
+> 包含近似颜色的亮度范围,取值范围:`0 ~ 100`。当前颜色的 *V* 值 减去 最小值,当前颜色的 *V* 值 加上 最大值,作为 *亮度* 的取值范围。
+
+## 输出
+
+> 所要统计的颜色在整个图像中所占的比例,`0 ~ 1` 之间的小数,参考:[Number](./types/Number.md)。
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/ColorPercentage.simple
+
+
+
+
diff --git a/docx/actions/algorithm/ConvertPoint.md b/docx/actions/algorithm/ConvertPoint.md
new file mode 100644
index 00000000..a2560a9c
--- /dev/null
+++ b/docx/actions/algorithm/ConvertPoint.md
@@ -0,0 +1,34 @@
+# 坐标转换
+*窗口坐标* 转 *屏幕坐标*,或者 *屏幕坐标* 转 *窗口坐标*。
+
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 窗口
+> 执行坐标转换所关联的窗口。
+
+* 坐标
+> 待转换的坐标。 窗口坐标或者屏幕坐标, 类型为:[`Point`](./types/Point.md)。
+
+* 方法
+> 坐标转换方法,参考:[PointConvertMethod](./enums/PointConvertMethod.md)。
+
+* 包含标题栏高度
+> 计算坐标时是否包含标题栏的高度(如果窗口含有标题栏)。通常情况,*Windows* 系统标准标题栏的高度为32px。
+
+## 输出
+> 转换后的坐标,类型为:[`Point`](./types/Point.md)。
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple
+
+
+
+
diff --git a/docx/actions/algorithm/FilterArea.md b/docx/actions/algorithm/FilterArea.md
index d6fdfc1c..2bfb0e2e 100644
--- a/docx/actions/algorithm/FilterArea.md
+++ b/docx/actions/algorithm/FilterArea.md
@@ -1,8 +1,8 @@
# 面积筛选
-通过计算数组中元素的面积来筛选列表中的元素
+通过计算 *数组/列表* 中元素的面积来筛选 *数组/列表* 中的元素。
-
+
## 子流程
@@ -12,22 +12,20 @@
## 运行参数
-* Value: 包含多个可以计算面积的元素列表
-* Area: 面积范围
+* 数据
+> 包含多个可以计算面积的元素列表,比如: [查找轮廓](./actions/detection/FindContours.md),检测到的轮廓列表。
+* 面积
+> 指定面积范围。
## 输出
-> 和输入数组的类型相同
+> 包含指定面积范围的元素列表。如果列表长度不为 `0`, 走左侧分支,否则走右侧分支。
-### 脚本调用
+### 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/FilterArea.simple
-```
-### 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple)
diff --git a/docx/actions/algorithm/FilterEllipse.md b/docx/actions/algorithm/FilterEllipse.md
index 4424a73e..d7c34cf1 100644
--- a/docx/actions/algorithm/FilterEllipse.md
+++ b/docx/actions/algorithm/FilterEllipse.md
@@ -1,7 +1,7 @@
# 椭圆筛选
-通过 *椭圆* 或者 *圆* 的特征筛选 *椭圆* 列表中的元素。
+通过 *椭圆/圆* 的特征筛选 *椭圆/圆* *数组/列表* 中的符合条件元素。
-
+
## 子流程
@@ -11,24 +11,29 @@
## 运行参数
-* Value: 必须为椭圆列表: [`Ellipses`](../../types/Ellipse.md)
+* 数据
+> 包含圆或者椭圆的数组,类型:[`Ellipses`](./types/Ellipse.md)。比如动作:[椭圆检测](./actions/detection/EllipseDetection.md)。
-* Minor 椭圆短轴范围
-* Major 椭圆长轴范围
-* Angle: 椭圆角度范围
+* 短轴
+> 短轴的范围,只有该范围内的 *椭圆/圆* 才会保留。
+
+* 长轴
+> 长轴的范围,只有该范围内的 *椭圆/圆* 才会保留。
+
+* 角度
+
+> 椭圆旋转角度范围, 圆的角度始终为: *0*。
## 输出
-> 椭圆数组:`Ellipses`
+> 筛选后的 *椭圆/圆* 列表,参考:[`Ellipses`](./types/Ellipse.md)。如果列表长度不为 `0`, 走左侧分支,否则走右侧分支。
+
+## 其它
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/FilterEllipse.simple
-```python
-import simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_ellipse.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_ellipse.simple)
+!> 如果短轴的最小值和长轴的最小值相同, 短轴的最大值和长轴的最大值相同,则可以筛选该半径范围内的的圆。
diff --git a/docx/actions/algorithm/FilterPerimeter.md b/docx/actions/algorithm/FilterPerimeter.md
index ddce4514..5d9bb861 100644
--- a/docx/actions/algorithm/FilterPerimeter.md
+++ b/docx/actions/algorithm/FilterPerimeter.md
@@ -1,7 +1,7 @@
# 周长筛选
-计算数组中元素的周长,筛选符合条件的元素
+通过计算 *数组/列表* 中元素的周长,筛选符合条件的元素。
-
+
## 子流程
@@ -9,19 +9,20 @@
## 运行参数
+* 数据
+> 包含多个可以计算周长的元素列表,比如: [查找轮廓](./actions/detection/FindContours.md),检测到的轮廓列表。
+* 周长
+> 指定周长范围。
## 输出
-> 窗口类型:`Ellipses`
+> 包含指定周长范围的元素列表。如果列表长度不为 `0`, 走左侧分支,否则走右侧分支。
-## 脚本调用
-```python
-import simple
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/FilterPerimeter.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_ellipse.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_ellipse.simple)
diff --git a/docx/actions/algorithm/FilterText.md b/docx/actions/algorithm/FilterText.md
index 8644c5fe..481865e7 100644
--- a/docx/actions/algorithm/FilterText.md
+++ b/docx/actions/algorithm/FilterText.md
@@ -1,7 +1,7 @@
# 文本筛选
-在数组或者列表中,筛选包含指定文本元素。
+在数组或者列表中,筛选包含指定文本的元素。
-
+
## 子流程
@@ -9,24 +9,20 @@
## 运行参数
-* Value: 含有文本的列表,例如 *文字识别* 动作。
+* 数据
+> 含有文本的列表,例如 [*文字识别*](./actions/ai/TextRecognition.md) 动作。
-* [Text](../../types/String.md): 文本,*字符串* 类型, 支持 [*通配符(WildCard)*](../../intro/process/wildcard.md) 匹配。
+* 文本
+> 文本,*字符串* 类型,参考:[String](./types/String.md), 支持 [*通配符(WildCard)*](./introduction/process/wildcard.md) 匹配。
## 输出
-> 和输入类型相同
+> 包含指定文本的字符串列表。如果列表长度不为 `0`, 走左侧分支,否则走右侧分支。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/FilterText.simple
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/algorithm/FilterVertex.md b/docx/actions/algorithm/FilterVertex.md
index 35b24dba..8925538d 100644
--- a/docx/actions/algorithm/FilterVertex.md
+++ b/docx/actions/algorithm/FilterVertex.md
@@ -1,8 +1,8 @@
# 形状筛选
-根据轮廓的形状筛选轮廓
+通过计算 *数组/列表* 中元素的形状是否近似指定的形状来筛选 *数组/列表* 中的元素。
-
+
## 子流程
@@ -11,22 +11,22 @@
## 运行参数
-* Value: 包含轮廓的数组。
-* [Shape](../../enums/ContourShape.md): 形状。
+* 数据
+> 包含多个可以计算形状的元素列表,比如: [查找轮廓](./actions/detection/FindContours.md),检测到的轮廓列表。
+* 精度
+> 值越小,就越接近所选择的形状,单位:像素。这是原始曲线与其近似值之间的最大距离。默认值 *3px*。
+* 形状
+> 参考:[Shape](./enums/ContourShape.md)。
## 输出
-> 和输入的类型相同
+> 包含指定形状的元素列表。如果列表长度不为 `0`, 走左侧分支,否则走右侧分支。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/FilterVertex.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/algorithm/FilterWindows.md b/docx/actions/algorithm/FilterWindows.md
deleted file mode 100644
index 82db2def..00000000
--- a/docx/actions/algorithm/FilterWindows.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# 窗口筛选
-筛选当前操作系统中,符合条件的窗口
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-* Windows: 窗口列表。
-* Title: 窗口标题。支持 [**通配符(WildCard)**)](../../intro/process/wildcard.md)匹配。
-* Name: 窗口类名。
-
-## 输出
-
-> 窗口列表
-
-
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/algorithm/FindNonZero.md b/docx/actions/algorithm/FindNonZero.md
deleted file mode 100644
index a1b88aa2..00000000
--- a/docx/actions/algorithm/FindNonZero.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 非零像素点
-
-在一张图片上,查找非零像素位置。
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-* Image: 图像
-
-
-## 输出
-
-> [Points](../../types/Point.md)
-
-
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/algorithm/ImageDifference.md b/docx/actions/algorithm/ImageDifference.md
new file mode 100644
index 00000000..2c1625e9
--- /dev/null
+++ b/docx/actions/algorithm/ImageDifference.md
@@ -0,0 +1,29 @@
+# 图像差值
+这个动作可以比较两个图像,并返回一个显示相似性的度量。结果越低,匹配越好。即使图像旋转、缩放也不会对该比较结果产生太大影响。
+
+* 为了获得更高的准确性,请使用二值图像。
+* 要找到的对象应该是白色的,背景应该是黑色的。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 源图像
+> 源图像,二值化后的单通道图像,如果为非单通道图像,则会转换成灰度图像。
+* 目标
+> 目标图像,二值化后的单通道图像,如果为非单通道图像,则会转换成灰度图像。
+
+## 输出
+
+> 相似性的指标(小数)。越低,表示匹配越好。如果是 *0*,表示完全匹配,类型参考: [Number](./types/Number.md)。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/ImageDifference.simple
+
+
diff --git a/docx/actions/algorithm/JoinString.md b/docx/actions/algorithm/JoinString.md
new file mode 100644
index 00000000..2d94f583
--- /dev/null
+++ b/docx/actions/algorithm/JoinString.md
@@ -0,0 +1,28 @@
+# 合并字符串
+将字符串列表,或者含有字符串的列表(如 [文本检测](./actions/ai/TextRecognition.md)),合并成字符串。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 源
+> 字符串列表,或者含有字符串的列表
+
+* 分隔符
+> 比如 `\r\n` 换行符,把列表中的字符串用换行符拼接成多行文本。
+
+## 输出
+
+> 字符串,参考:[String](./types/String.md)
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/JoinString.simple
+
+
+
diff --git a/docx/actions/algorithm/PointConvert.md b/docx/actions/algorithm/PointConvert.md
deleted file mode 100644
index d94aa460..00000000
--- a/docx/actions/algorithm/PointConvert.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 坐标转换
-窗口坐标转屏幕坐标,或者屏幕坐标转窗口坐标
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-* Point: 窗口坐标, 类型为:`Point`。
-* Window: 窗口, 默认为窗口的标题,类型为:`String`。
-
-* [Method](../../enums/PointConvertMethod.md):转换方式
-
-
-## 输出
-> 类型为:`Point`
-
-
-### 脚本调用
-
-```python
-import simple
-
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/ClientToScreen.simple)
diff --git a/docx/actions/algorithm/PopBack.md b/docx/actions/algorithm/PopBack.md
new file mode 100644
index 00000000..5cca8509
--- /dev/null
+++ b/docx/actions/algorithm/PopBack.md
@@ -0,0 +1,27 @@
+# 删除元素
+删除容器当中的最后一个元素。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 源
+> 容器或列表。
+
+
+## 输出
+
+> 删除的元素。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/PopBack.simple
+
+
+
+
diff --git a/docx/actions/algorithm/PushBack.md b/docx/actions/algorithm/PushBack.md
new file mode 100644
index 00000000..798fe5c4
--- /dev/null
+++ b/docx/actions/algorithm/PushBack.md
@@ -0,0 +1,30 @@
+# 添加元素
+在容器的末尾添加一个同类型的新元素。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 源
+> 容器或列表。
+
+* 值
+> 待添加的元素。必须确保和原容器中的元素类型相同。
+
+## 输出
+
+> 包含新添加元素的容器或列表。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/PushBack.simple
+
+
+
+
+
diff --git a/docx/actions/algorithm/RandomNumber.md b/docx/actions/algorithm/RandomNumber.md
index 31cf5799..319c5963 100644
--- a/docx/actions/algorithm/RandomNumber.md
+++ b/docx/actions/algorithm/RandomNumber.md
@@ -1,8 +1,8 @@
-# 随机数
-生成随机数
+# 随机数字
+生成一个随机数字。
-
+
## 子流程
@@ -10,27 +10,29 @@
## 运行参数
-* Min:最小值
+* 范围
+> 生成随机数的范围。
-* Max:最大值
+## 输出
+> 随机数,[`Number`](./types/Number.md)类型。
-## 输出
-> 随机数,[`Number`](../../types/Number.md)类型
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/random_num.simple
+## 脚本
-## 脚本调用
+````
+import random
-```python
-import simple
+random.randint(1, 100)
+````
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/random_num.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/random_num.simple)
-!> 该动作被执行之后就会生成确定的随机数。其他所有引用该动作的运行参数,都会是相同的值。如果想使用不同的随机数值,请创建多个*随机数*动作,或者使用*Python* 表达式:https://learnku.com/docs/pymotw/random-pseudorandom-number-generators/3387
\ No newline at end of file
+!> 该动作被执行之后就会生成确定的随机数。所有引用该动作的运行参数,都会使用相同的随机数。
\ No newline at end of file
diff --git a/docx/actions/algorithm/RandomPoint.md b/docx/actions/algorithm/RandomPoint.md
index da701eca..4589fda6 100644
--- a/docx/actions/algorithm/RandomPoint.md
+++ b/docx/actions/algorithm/RandomPoint.md
@@ -1,6 +1,7 @@
# 随机坐标
-生成随机坐标
+生成随机坐标位置。
+
## 子流程
@@ -8,22 +9,22 @@
## 运行参数
-* [center](../../types/Point.md):中心坐标
-* [radius](../../types/Number.md):半径
+* 中心坐标
+> 参考: [Point](./types/Point.md):
+* 半径
+> 指定一个半径,可以生成一个以中心坐标为圆心,该半径范围内的一个随机位置。 参考: [Number](./types/Number.md):
## 输出
-> 随机坐标,[`Point`](../../types/Point.md)类型
+> 随机坐标,[`Point`](./types/Point.md)类型
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/RandomPoint.simple
-```
-## 示例
-!> 该动作被执行之后就会生成确定的随机坐标。其他所有引用该动作的运行参数,都会是相同的值。如果想使用不同的随机坐标,请创建多个*随机坐标*动作,或者使用*Python*脚本动作。
\ No newline at end of file
+
+!> 该动作被执行之后就会生成确定的随机坐标。其他所有引用该动作的运行参数,都会使用相同的随机坐标。
\ No newline at end of file
diff --git a/docx/actions/algorithm/SplitString.md b/docx/actions/algorithm/SplitString.md
index db048a98..70e1bb7a 100644
--- a/docx/actions/algorithm/SplitString.md
+++ b/docx/actions/algorithm/SplitString.md
@@ -1,7 +1,7 @@
# 分割字符串
-分割字符串
+使用 *分割符* 分割字符串。
-
+
## 子流程
@@ -9,23 +9,21 @@
## 运行参数
-* Source:字符串
-* Separator:分隔符
+* 字符串
+> 支持多行字符串。
+* 分隔符
+> 支持转义字符,比如:`\n`。
## 输出
-> [Strings](../../types/String.md)
+> 字符串列表,参考 [Strings](./types/String.md)。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/SplitString.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/algorithm/SubString.md b/docx/actions/algorithm/SubString.md
new file mode 100644
index 00000000..4fcb4287
--- /dev/null
+++ b/docx/actions/algorithm/SubString.md
@@ -0,0 +1,31 @@
+# 提取子串
+根据指定 *位置* 和 *长度* ,从字符串中提取子字符串。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 值
+> 字符串。
+
+* 位置
+> 提取位置。索引从 `0` 开始,表示字符串中的第 *1* 个字符。
+
+* 长度
+> 提取长度。可为 *空*,表示从 *提取位置* 开始到字符串 *结尾* 的长度。
+
+## 输出
+
+> 字符串,参考:[String](./types/String.md)
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/algorithm/SubString.simple
+
+
+
diff --git a/docx/actions/algorithm/images/01.png b/docx/actions/algorithm/images/01.png
index 5f8edd2a..5143f205 100644
Binary files a/docx/actions/algorithm/images/01.png and b/docx/actions/algorithm/images/01.png differ
diff --git a/docx/actions/algorithm/images/02.png b/docx/actions/algorithm/images/02.png
index fbc992c2..9ffecdd8 100644
Binary files a/docx/actions/algorithm/images/02.png and b/docx/actions/algorithm/images/02.png differ
diff --git a/docx/actions/algorithm/images/03.png b/docx/actions/algorithm/images/03.png
new file mode 100644
index 00000000..448acd28
Binary files /dev/null and b/docx/actions/algorithm/images/03.png differ
diff --git a/docx/actions/algorithm/images/04.png b/docx/actions/algorithm/images/04.png
new file mode 100644
index 00000000..cf99c10c
Binary files /dev/null and b/docx/actions/algorithm/images/04.png differ
diff --git a/docx/actions/algorithm/images/06.png b/docx/actions/algorithm/images/06.png
new file mode 100644
index 00000000..9fe71ad8
Binary files /dev/null and b/docx/actions/algorithm/images/06.png differ
diff --git a/docx/actions/algorithm/images/07.png b/docx/actions/algorithm/images/07.png
new file mode 100644
index 00000000..e015a2ce
Binary files /dev/null and b/docx/actions/algorithm/images/07.png differ
diff --git a/docx/actions/algorithm/images/08.png b/docx/actions/algorithm/images/08.png
new file mode 100644
index 00000000..b6ee5987
Binary files /dev/null and b/docx/actions/algorithm/images/08.png differ
diff --git a/docx/actions/algorithm/images/09.png b/docx/actions/algorithm/images/09.png
new file mode 100644
index 00000000..2554ae02
Binary files /dev/null and b/docx/actions/algorithm/images/09.png differ
diff --git a/docx/actions/algorithm/images/10.png b/docx/actions/algorithm/images/10.png
new file mode 100644
index 00000000..5251186e
Binary files /dev/null and b/docx/actions/algorithm/images/10.png differ
diff --git a/docx/actions/algorithm/images/11.png b/docx/actions/algorithm/images/11.png
new file mode 100644
index 00000000..609c2408
Binary files /dev/null and b/docx/actions/algorithm/images/11.png differ
diff --git a/docx/actions/algorithm/images/12.png b/docx/actions/algorithm/images/12.png
new file mode 100644
index 00000000..89a26703
Binary files /dev/null and b/docx/actions/algorithm/images/12.png differ
diff --git a/docx/actions/algorithm/images/13.png b/docx/actions/algorithm/images/13.png
new file mode 100644
index 00000000..5aa13bdd
Binary files /dev/null and b/docx/actions/algorithm/images/13.png differ
diff --git a/docx/actions/algorithm/images/14.png b/docx/actions/algorithm/images/14.png
new file mode 100644
index 00000000..04ba4015
Binary files /dev/null and b/docx/actions/algorithm/images/14.png differ
diff --git a/docx/actions/algorithm/images/15.png b/docx/actions/algorithm/images/15.png
new file mode 100644
index 00000000..5276e8c5
Binary files /dev/null and b/docx/actions/algorithm/images/15.png differ
diff --git a/docx/actions/algorithm/images/16.png b/docx/actions/algorithm/images/16.png
new file mode 100644
index 00000000..aaf1774e
Binary files /dev/null and b/docx/actions/algorithm/images/16.png differ
diff --git a/docx/actions/algorithm/images/17.png b/docx/actions/algorithm/images/17.png
new file mode 100644
index 00000000..5cdbc061
Binary files /dev/null and b/docx/actions/algorithm/images/17.png differ
diff --git a/docx/actions/algorithm/images/18.png b/docx/actions/algorithm/images/18.png
new file mode 100644
index 00000000..22d3a03d
Binary files /dev/null and b/docx/actions/algorithm/images/18.png differ
diff --git a/docx/actions/algorithm/images/19.png b/docx/actions/algorithm/images/19.png
new file mode 100644
index 00000000..6c5d5f96
Binary files /dev/null and b/docx/actions/algorithm/images/19.png differ
diff --git a/docx/actions/algorithm/images/20.png b/docx/actions/algorithm/images/20.png
new file mode 100644
index 00000000..76d4163f
Binary files /dev/null and b/docx/actions/algorithm/images/20.png differ
diff --git a/docx/actions/android/AdbClearText.md b/docx/actions/android/AdbClearText.md
new file mode 100644
index 00000000..7e52ee95
--- /dev/null
+++ b/docx/actions/android/AdbClearText.md
@@ -0,0 +1,27 @@
+# 清除文字
+清除处于焦点的输入框中的文本,清除文本之前,自动安装 *ADBKeyboard.apk*。关于*ADBKeyboard.apk*,请参考:https://github.com/shelllet/ADBKeyBoard.git 。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+
+## 输出
+
+> 设备日志,字符串[`String`](./types/String.md)。
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/AdbInput.simple
+
+
+
+
diff --git a/docx/actions/android/AdbConnect.md b/docx/actions/android/AdbConnect.md
index e96061d8..50338270 100644
--- a/docx/actions/android/AdbConnect.md
+++ b/docx/actions/android/AdbConnect.md
@@ -1,8 +1,8 @@
# 连接
-连接模拟器,主要应用在模拟器在远程电脑上面。
+连接设备,主要用在本机操作远程电脑上面运行的模拟器。
-
+
## 子流程
@@ -10,32 +10,24 @@
## 运行参数
-
-* Host: 远程模拟器的IP地址和端口,例如网易 *MuMu* 模拟器:127.0.0.1:7555
+* 主机
+> 远程设备地址:包括IP地址和端口,例如网易 *MuMu* 模拟器:127.0.0.1:7555
## 输出
-> [`String`](../../types/String.md)
-
-```
- # : already connected to 192.168.31.170:5555
-```
+> 设备号,可用在其它書店动作中作为输入参数。
-*MuMu* 模拟器, 虽然是本机,但也需要使用此动作进行连接。*雷电*模拟器如果在本机,则不需要此动作。
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/android/AdbDevices.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/connect.simple](https://github.com/shelllet/WinUi/blob/main/android/connect.simple)
+!> 注意:模拟器需要开启 *ADB本机调试* 或者 *ADB远程调试*。
-!> 相应的模拟器需要开启 *ADB调试*
+!> 根据测试:*MuMu* 模拟器, 虽然是本机,但也需要使用此动作进行连接。*雷电*模拟器如果在本机,则不需要此动作。
diff --git a/docx/actions/android/AdbDevices.md b/docx/actions/android/AdbDevices.md
index 81579abc..377a71ec 100644
--- a/docx/actions/android/AdbDevices.md
+++ b/docx/actions/android/AdbDevices.md
@@ -1,28 +1,24 @@
-# 设备列表
-查询系统中已经启动的安卓模拟器。
+# 设备
+查询系统中已经连接的安卓模拟器或者真机。支持多模拟器同时操作。
+
## 子流程
-> 支持
+> 支持,模拟器的设备号(通常是 *ip* + 端口号)会传入子动作当中。
## 运行参数
+* 异步
+> 可以并行执行与设备关联的子动作。
## 输出
-> 模拟器名称列表 [`Strings`](../../types/String.md)
+> 设备号列表 [`Strings`](./types/String.md)。
+## 其它
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/android/AdbDevices.simple
-```python
-import simple;
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/android/devices.simple](https://github.com/shelllet/WinUi/blob/main/android/devices.simple)
-
diff --git a/docx/actions/android/AdbForward.md b/docx/actions/android/AdbForward.md
index 730d6258..9af42cbf 100644
--- a/docx/actions/android/AdbForward.md
+++ b/docx/actions/android/AdbForward.md
@@ -1,7 +1,7 @@
# 转发
-把安卓系统的端口映射到本地端口。
+把安卓系统的服务端口映射到本地端口,通过此种方式可以调用模拟器中的接口或者服务。
-
+
## 子流程
@@ -10,24 +10,26 @@
## 运行参数
-* Device: 安卓模拟器
-* Local: 本地端口
-* Remote: 模拟器端口
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* 本地端口
+>
+
+* 远程端口
+> 模拟器中的服务端口。
## 输出
-> 模拟器操作日志
+> 设备日志,字符串[`String`](./types/String.md)。
-## 脚本调用
+## 其它
-```python
-import simple;
+示例:https://github.com/shelllet/WinUi/blob/main/android/forward.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/forward.simple](https://github.com/shelllet/WinUi/blob/main/android/forward.simple)
-
+!> 该动作超出作用范围后会移除转发的端口。
+!> WebServer (nanohttpd): https://apkpure.com/webserver-nanohttpd/com.akhiljalagam.androidwebserver/download
\ No newline at end of file
diff --git a/docx/actions/android/AdbIfConfig.md b/docx/actions/android/AdbIfConfig.md
deleted file mode 100644
index 53e24a8d..00000000
--- a/docx/actions/android/AdbIfConfig.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 网卡配置
-查看模拟器网卡配置
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-* Device: 安卓模拟器
-
-
-
-## 输出
-
-> 网卡信息
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/android/AdbInput.md b/docx/actions/android/AdbInput.md
index 73225e0f..738f0cc8 100644
--- a/docx/actions/android/AdbInput.md
+++ b/docx/actions/android/AdbInput.md
@@ -1,8 +1,8 @@
# 输入
-在安卓模拟器中模拟输入文本,此动作不支持中文输入。
+在安卓真机或模拟器中模拟文本输入。此动作不支持中文输入,如果需要输入中文请使用动作 [输入 * 中文](./Adbkeyboard.md)。
-
+
## 子流程
@@ -10,22 +10,20 @@
## 运行参数
-* [Device](../../types/String.md): 安卓模拟器
-* [Text](../../types/String.md): 文本
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+* 文本
+> 只支持英文字符。
## 输出
-> 模拟器日志
+> 设备日志,字符串[`String`](./types/String.md)。
-## 脚本调用
+### 其它
-```python
-import simple;
+示例:https://github.com/shelllet/WinUi/blob/main/android/AdbInput.simple
-```
-### 示例
-[https://github.com/shelllet/WinUi/blob/main/android/input.simple](https://github.com/shelllet/WinUi/blob/main/android/input.simple)
diff --git a/docx/actions/android/AdbInstall.md b/docx/actions/android/AdbInstall.md
new file mode 100644
index 00000000..e44cefb2
--- /dev/null
+++ b/docx/actions/android/AdbInstall.md
@@ -0,0 +1,29 @@
+# 安装应用
+安装 *Apk* 文件到安卓设备中。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* Apk 文件
+>
+
+## 输出
+
+> 设备日志,字符串[`String`](./types/String.md)。
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/install.simple
+
+
+
+
diff --git a/docx/actions/android/AdbIsInstalled.md b/docx/actions/android/AdbIsInstalled.md
new file mode 100644
index 00000000..aee3f91d
--- /dev/null
+++ b/docx/actions/android/AdbIsInstalled.md
@@ -0,0 +1,32 @@
+# 应用检测
+检查安卓设备中是否已经安装了某个安装包。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* 安装包
+> 安装应用包名称。
+
+
+## 输出
+
+> 是否已经安装,布尔值。可以参考:[Boolean](./types/Boolean.md)。
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/packages.simple
+
+
+
+
+
diff --git a/docx/actions/android/AdbKey.md b/docx/actions/android/AdbKey.md
index 31d58629..4cf47697 100644
--- a/docx/actions/android/AdbKey.md
+++ b/docx/actions/android/AdbKey.md
@@ -1,8 +1,8 @@
# 按键
-在安卓模拟器中模拟按键。
+在安卓模拟器中模拟按键,支持后台操作。
-
+
## 子流程
@@ -12,21 +12,20 @@
## 运行参数
-* [Device](../../types/String.md): 模拟器
-* Key: 按键。
-* [Time](../../types/Number.md): 按键时间,单位 *秒*
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+* 按键
+> 仅支持列表中的按键。
+* 按键时间
+> 单位 *秒*,当该值不为 *0* 时,会在该时间内重复触发按键。
## 输出
-> 模拟器日志
+> 无
-## 脚本调用
+## 资源
-```python
-import simple;
+示例:https://github.com/shelllet/WinUi/blob/main/android/key.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/key.simple](https://github.com/shelllet/WinUi/blob/main/android/key.simple)
diff --git a/docx/actions/android/AdbKillServer.md b/docx/actions/android/AdbKillServer.md
deleted file mode 100644
index 61de5536..00000000
--- a/docx/actions/android/AdbKillServer.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 终止服务
-终止安卓模拟器服务,结束进程 *Adb.exe*。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-
-
-## 输出
-
-> 模拟器日志
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/android/AdbLs.md b/docx/actions/android/AdbLs.md
new file mode 100644
index 00000000..01849b7a
--- /dev/null
+++ b/docx/actions/android/AdbLs.md
@@ -0,0 +1,30 @@
+# 文件列表
+获取模拟器或真机中的文件或者文件夹列表,类似文件或者文件夹遍历。
+
+
+
+## 子流程
+
+> 支持,被遍历的文件或者文件夹会传入子流程当中。
+
+## 运行参数
+
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* 目录
+> 根目录, 可为空,通常 `/mnt/sdcard` 或者 `/storage/emulated/0` 表示根目录。
+
+* 异步迭代
+> 遍历到的每个路径都会开启一个线程去执行子流程。
+
+## 输出
+
+> 文件或者文件夹列表,参考: [`Paths`](./types/Path.md)。
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/ls.simple
+
+
+
diff --git a/docx/actions/android/AdbMove.md b/docx/actions/android/AdbMove.md
index 901c794f..95734213 100644
--- a/docx/actions/android/AdbMove.md
+++ b/docx/actions/android/AdbMove.md
@@ -1,5 +1,7 @@
# 移动
-上下左右移动,类似游戏当中的 *WASD* 功能。
+在安卓设备中,模拟上下左右移动,类似游戏当中的 *WASD* 功能。
+
+
## 子流程
> 不支持
@@ -7,21 +9,24 @@
## 运行参数
-* [Device](../../types/String.md): 模拟器
-* [Point](../../types/Point.md):在模拟器屏幕当中,按下的位置,比如 *移动盘*的位置,
-* [Direction](../../enums/Directions.md): 方向
-* [Time](../../types/Number.md): 按键时间,单位 *秒*
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
-## 输出
+* 起始位置
+> 在模拟器屏幕当中,按下的位置,例如 *移动盘*的位置,
+
+* 方向
+> 参考: [Direction](./enums/Directions.md)。
-
+* 时间
+> 移动时间,单位 *秒*。
+
+## 输出
+> 无
+## 资源
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/android/move.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/android/AdbPackages.md b/docx/actions/android/AdbPackages.md
index ddcf58d5..75a7441e 100644
--- a/docx/actions/android/AdbPackages.md
+++ b/docx/actions/android/AdbPackages.md
@@ -1,32 +1,26 @@
-# 安装包
-此动作可以获取安卓模拟器当中的所有安装包。
-
-
+# 应用列表
+获取安卓模拟器当中的所有已经安装的包名称。
+
## 子流程
-> 支持
+> 支持,每个包名分别会传入子动作中。
## 运行参数
-
-* [Device](../../types/String.md): 模拟器
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
## 输出
-> 安装包列表。[`Strings`](../../types/String.md) 类型
-
+> 安装包列表。[`Strings`](./types/String.md) 类型。
-### 脚本调用
-```python
-import simple;
+## 资源
+示例:https://github.com/shelllet/WinUi/blob/main/android/packages.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/packages.simple](https://github.com/shelllet/WinUi/blob/main/android/packages.simple)
diff --git a/docx/actions/android/AdbPull.md b/docx/actions/android/AdbPull.md
new file mode 100644
index 00000000..17b33a58
--- /dev/null
+++ b/docx/actions/android/AdbPull.md
@@ -0,0 +1,30 @@
+# 拉取文件
+从安卓设备复制文件/目录到本地计算机。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* 源
+> *Android*设备中的文件或目录。通常 `/mnt/sdcard` 或者 `/storage/emulated/0` 表示根目录。
+
+* 目标
+> 本地计算机当中的目录。
+
+
+## 输出
+
+> 设备日志,字符串[`String`](./types/String.md)。
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/pull.simple
+
+
+
diff --git a/docx/actions/android/AdbPush.md b/docx/actions/android/AdbPush.md
new file mode 100644
index 00000000..0fb360e8
--- /dev/null
+++ b/docx/actions/android/AdbPush.md
@@ -0,0 +1,31 @@
+# 推送文件
+将本地文件/目录复制到 *Android* 设备。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+
+* 源
+> 本地文件或目录
+
+* 目标
+> *Android* 设备中目录。通常 `/mnt/sdcard` 或者 `/storage/emulated/0` 表示根目录。 比如 *下载目录* :`/mnt/sdcard/Download` 或 `/storage/emulated/0/Download`。
+
+
+## 输出
+
+> 设备日志,字符串[`String`](./types/String.md)。
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/push.simple
+
+
+
+
diff --git a/docx/actions/android/AdbRemoveForward.md b/docx/actions/android/AdbRemoveForward.md
deleted file mode 100644
index 8d519c2d..00000000
--- a/docx/actions/android/AdbRemoveForward.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# 移除转发
-在当前系统当中移除端口转发。
-
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-* Local: 本地端口
-
-## 输出
-> 模拟器日志
-
-## 脚本调用
-
-```python
-import simple;
-
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/android/remove_forward.simple](https://github.com/shelllet/WinUi/blob/main/android/remove_forward.simple)
diff --git a/docx/actions/android/AdbScreenCap.md b/docx/actions/android/AdbScreenCap.md
index 6f4cb580..b2235eee 100644
--- a/docx/actions/android/AdbScreenCap.md
+++ b/docx/actions/android/AdbScreenCap.md
@@ -1,5 +1,7 @@
# 截图
-模拟器屏幕截图。
+安卓设备屏幕截图。
+
+
## 子流程
@@ -8,22 +10,17 @@
## 运行参数
-
-* Device: 模拟器
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
## 输出
-> 屏幕图片, 参考[`Image`](../../types/Image.md)
-
-## 脚本调用
+> 屏幕图片, 参考[`Image`](./types/Image.md)
-```python
-import simple;
+## 资源
-```
+示例:https://github.com/shelllet/WinUi/blob/main/android/cap.simple
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/capture.simple](https://github.com/shelllet/WinUi/blob/main/android/capture.simple)
diff --git a/docx/actions/android/AdbStartApp.md b/docx/actions/android/AdbStartApp.md
index d244c8cb..4c0d8390 100644
--- a/docx/actions/android/AdbStartApp.md
+++ b/docx/actions/android/AdbStartApp.md
@@ -1,5 +1,7 @@
-# 打开应用
-该动作可以打开安卓模拟器上的 *App*。
+# 启动 App
+打开安卓设备上已经安装的 *App*。
+
+
## 子流程
@@ -7,24 +9,21 @@
## 运行参数
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
-* Device: 模拟器。
-* Package: 模拟器上安装的 *App* 包名。点击红色指示的按钮,可以打开包名选择窗口。如下图:
+* 安装包
+> 已经安装的 *App* 包名。可以配合应用列表,获取安装包名称。例如:`com.android.adbkeyboard`。
-
## 输出
-> 模拟器日志
+> 设备日志,字符串[`String`](./types/String.md)。
-## 脚本调用
-```python
-import simple;
+## 资源
+示例:https://github.com/shelllet/WinUi/blob/main/android/startapp.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/open.simple](https://github.com/shelllet/WinUi/blob/main/android/open.simple)
diff --git a/docx/actions/android/AdbStartServer.md b/docx/actions/android/AdbStartServer.md
index d7d2bdbf..e547ff18 100644
--- a/docx/actions/android/AdbStartServer.md
+++ b/docx/actions/android/AdbStartServer.md
@@ -1,28 +1,49 @@
# 启动服务
-启动 *Adb* 服务
+启动 *adb* 服务,刷新本地设备列表。
+该动作为可选动作,通常用在模拟器未列出的情况:
+
+* 示例 1:在以下命令序列中,该adb devices命令启动adb服务器,但不显示设备列表。
+
+```
+$ adb devices
+
+List of devices attached
+* daemon not running. starting it now on port 5037 *
+* daemon started successfully *
+
+```
+
+* 示例2:在以下命令序列中,adb devices显示设备列表,因为adb服务器首先启动。
+```
+$ adb kill-server
+$ adb start-server
+$ adb devices
+
+List of devices attached
+emulator-5557 device
+```
+
+
## 子流程
> 不支持
-
## 运行参数
+## 输出
+> 设备日志,字符串[`String`](./types/String.md)。
-## 输出
- > 模拟器日志
+## 资源
+
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
+!> 该动作超出作用域后,会终止 *adb* 服务。
\ No newline at end of file
diff --git a/docx/actions/android/AdbSwipe.md b/docx/actions/android/AdbSwipe.md
index 89bab480..7ad1e7a8 100644
--- a/docx/actions/android/AdbSwipe.md
+++ b/docx/actions/android/AdbSwipe.md
@@ -1,6 +1,7 @@
# 滑动
-在安卓模拟器当中实现滑动操作。
+在安卓设备中实现滑动操作。
+
## 子流程
@@ -10,24 +11,24 @@
## 运行参数
-* Device: 安卓模拟器。
-* From: 滑动的开始位置。
-* To: 滑动的结束位置。
-* Time: 滑动时间。单位秒。
+* 模拟器
+> 安卓模拟器
+* 开始位置
+> 滑动的开始位置。
+* 终止位置
+> 滑动的结束位置。
+* 时间
+> 滑动时间。单位*秒*。
## 输出
-> 模拟器日志
+> 设备日志,字符串[`String`](./types/String.md)。
-## 脚本调用
-```python
-import simple;
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/android/AdbSwipe.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/android/swipe.simple](https://github.com/shelllet/WinUi/blob/main/android/swipe.simple)
diff --git a/docx/actions/android/AdbTap.md b/docx/actions/android/AdbTap.md
index a46ac40b..299d1def 100644
--- a/docx/actions/android/AdbTap.md
+++ b/docx/actions/android/AdbTap.md
@@ -1,6 +1,7 @@
# 点击
-在安卓模拟器中模拟点击。
+在安卓设备中模拟点击,支持后台操作。
+
## 子流程
@@ -8,24 +9,19 @@
## 运行参数
-* Device: 模拟器。
-* Point: 点击位置。
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+* 位置
+> 点击位置。设备中的屏幕坐标。
## 输出
-> 模拟器日志
+> 设备日志,字符串[`String`](./types/String.md)。
+## 资源
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/android/tap.simple
-```python
-import simple;
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/android/tap.simple](https://github.com/shelllet/WinUi/blob/main/android/tap.simple)
-
diff --git a/docx/actions/android/Adbkeyboard.md b/docx/actions/android/Adbkeyboard.md
new file mode 100644
index 00000000..5d61a9a4
--- /dev/null
+++ b/docx/actions/android/Adbkeyboard.md
@@ -0,0 +1,29 @@
+# 输入 * 中文
+在安卓真机或模拟器中模拟文本输入。此动作支持中文输入,输入中文字符之前,安装 *ADBKeyboard.apk*。关于*ADBKeyboard.apk*,请参考:https://github.com/shelllet/ADBKeyBoard.git 。
+
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 设备
+> 设备号,如果当前连接的只有一个设备,该值可为空。
+* 文本
+> 文本,支持中文字符。
+
+## 输出
+
+> 设备日志,字符串[`String`](./types/String.md)。
+
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/android/Adbkeyboard.simple
+
+
+
+
diff --git a/docx/actions/android/images/01.png b/docx/actions/android/images/01.png
new file mode 100644
index 00000000..22a491e3
Binary files /dev/null and b/docx/actions/android/images/01.png differ
diff --git a/docx/actions/android/images/02.png b/docx/actions/android/images/02.png
new file mode 100644
index 00000000..1f28c813
Binary files /dev/null and b/docx/actions/android/images/02.png differ
diff --git a/docx/actions/android/images/03.png b/docx/actions/android/images/03.png
new file mode 100644
index 00000000..4f004c93
Binary files /dev/null and b/docx/actions/android/images/03.png differ
diff --git a/docx/actions/android/images/04.png b/docx/actions/android/images/04.png
new file mode 100644
index 00000000..d716ff5e
Binary files /dev/null and b/docx/actions/android/images/04.png differ
diff --git a/docx/actions/android/images/05.png b/docx/actions/android/images/05.png
new file mode 100644
index 00000000..ab3009c4
Binary files /dev/null and b/docx/actions/android/images/05.png differ
diff --git a/docx/actions/android/images/06.png b/docx/actions/android/images/06.png
new file mode 100644
index 00000000..42605c79
Binary files /dev/null and b/docx/actions/android/images/06.png differ
diff --git a/docx/actions/android/images/07.png b/docx/actions/android/images/07.png
new file mode 100644
index 00000000..3b60e8ed
Binary files /dev/null and b/docx/actions/android/images/07.png differ
diff --git a/docx/actions/android/images/08.png b/docx/actions/android/images/08.png
new file mode 100644
index 00000000..80e9fa19
Binary files /dev/null and b/docx/actions/android/images/08.png differ
diff --git a/docx/actions/android/images/09.png b/docx/actions/android/images/09.png
new file mode 100644
index 00000000..8864156c
Binary files /dev/null and b/docx/actions/android/images/09.png differ
diff --git a/docx/actions/android/images/10.png b/docx/actions/android/images/10.png
new file mode 100644
index 00000000..e73c60c9
Binary files /dev/null and b/docx/actions/android/images/10.png differ
diff --git a/docx/actions/android/images/12.png b/docx/actions/android/images/12.png
new file mode 100644
index 00000000..f58c1608
Binary files /dev/null and b/docx/actions/android/images/12.png differ
diff --git a/docx/actions/android/images/13.png b/docx/actions/android/images/13.png
new file mode 100644
index 00000000..b9923151
Binary files /dev/null and b/docx/actions/android/images/13.png differ
diff --git a/docx/actions/android/images/14.png b/docx/actions/android/images/14.png
new file mode 100644
index 00000000..db96947d
Binary files /dev/null and b/docx/actions/android/images/14.png differ
diff --git a/docx/actions/android/images/15.png b/docx/actions/android/images/15.png
new file mode 100644
index 00000000..5ac2d6fa
Binary files /dev/null and b/docx/actions/android/images/15.png differ
diff --git a/docx/actions/android/images/16.png b/docx/actions/android/images/16.png
new file mode 100644
index 00000000..05cb010e
Binary files /dev/null and b/docx/actions/android/images/16.png differ
diff --git a/docx/actions/android/images/18.png b/docx/actions/android/images/18.png
new file mode 100644
index 00000000..e8fafee8
Binary files /dev/null and b/docx/actions/android/images/18.png differ
diff --git a/docx/actions/android/images/19.png b/docx/actions/android/images/19.png
new file mode 100644
index 00000000..4e2e2975
Binary files /dev/null and b/docx/actions/android/images/19.png differ
diff --git a/docx/actions/android/images/20.png b/docx/actions/android/images/20.png
new file mode 100644
index 00000000..0073341e
Binary files /dev/null and b/docx/actions/android/images/20.png differ
diff --git a/docx/actions/android/images/21.png b/docx/actions/android/images/21.png
new file mode 100644
index 00000000..450e101a
Binary files /dev/null and b/docx/actions/android/images/21.png differ
diff --git a/docx/actions/async/TimedTask.md b/docx/actions/async/TimedTask.md
deleted file mode 100644
index ff33e598..00000000
--- a/docx/actions/async/TimedTask.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# 定时任务
-该动作在指定的时间触发,并且可以执行相应的子动作。
-
-## 子流程
-
-> 支持
-
-## 运行参数
-
-* Time: 触发时间
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple
-
-```
-
-## 示例
diff --git a/docx/actions/async/When.md b/docx/actions/async/When.md
deleted file mode 100644
index 6a0f19cf..00000000
--- a/docx/actions/async/When.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 当...成立
-该动作会开启一个异步线程不停的检测条件,直到条件成立,当条件成立时,则会去执行子流程。
-
-
-
-
-## 子流程
-> 支持
-
-
-## 运行参数
-
-
-* Value: 条件,可以进行 *Boolean* 判断的值。
-* Time: 每次检测需要等待的时间间隔。
-
-## 输出
-
-> Thread
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/control/when.simple](https://github.com/shelllet/WinUi/blob/main/control/when.simple)
diff --git a/docx/actions/async/WorkBegin.md b/docx/actions/async/WorkBegin.md
deleted file mode 100644
index 5cc844a6..00000000
--- a/docx/actions/async/WorkBegin.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 异步动作启动
-可用于启动已停止的异步动作,比如:*线程* 、*定时器* 等动作。
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-## 输出
-
- 无
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/system/wait.simple](https://github.com/shelllet/WinUi/blob/main/system/wait.simple)
-
diff --git a/docx/actions/async/WorkExit.md b/docx/actions/async/WorkExit.md
deleted file mode 100644
index ddeaf8ee..00000000
--- a/docx/actions/async/WorkExit.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# 异步动作结束
-可用于结束正在执行的异步动作,比如:*线程* 、*定时器* 等动作。
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-* Thread: 线程动作,比如 *When* 动作。
-
-## 输出
-
- 无
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/system/wait.simple](https://github.com/shelllet/WinUi/blob/main/system/wait.simple)
-
diff --git a/docx/actions/async/WorkThread.md b/docx/actions/async/WorkThread.md
deleted file mode 100644
index 9b03dea2..00000000
--- a/docx/actions/async/WorkThread.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 线程
-用于异步执行一些子动作。
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-## 输出
-
- 无
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/system/wait.simple](https://github.com/shelllet/WinUi/blob/main/system/wait.simple)
-
diff --git a/docx/actions/async/WorkTimer.md b/docx/actions/async/WorkTimer.md
deleted file mode 100644
index 3891ce26..00000000
--- a/docx/actions/async/WorkTimer.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# 定时器
-可以按照一定的时间间隔,重复执行子流程。
-
-
-
-
-## 子流程
-
-> 支持
-
-## 运行参数
-
-
-* Duration: 间隔时间,单位秒。
-* Repeating: 是否重复执行
-* Immediate: 是否立即执行
-
-如果选择了重复执行没有选择立即执行,定时器在第一次启动的时候,需要等待所设置的间隔时间。
-
-
-## 输出
-
-> 无
-
-
-## 脚本调用
-
-```python
-import simple
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/system/timer.simple](https://github.com/shelllet/WinUi/blob/main/system/timer.simple)
diff --git a/docx/actions/asynchronous/WhenEvent.md b/docx/actions/asynchronous/WhenEvent.md
new file mode 100644
index 00000000..ed3024a6
--- /dev/null
+++ b/docx/actions/asynchronous/WhenEvent.md
@@ -0,0 +1,35 @@
+# 等待事件
+该动作会开启一个异步线程不停的检测事件状态,直到状态变为:`On` ,即为有信号时,才会去执行子流程,否则会一起等待。
+
+
+
+## 权限
+> 无要求
+## 子流程
+> 支持
+
+
+## 运行参数
+
+
+* [state](./enums/PowerState.md) 初始状态, 如果是 `Auto`, 则 默认为 `Off`,即无信号状态。此时,这个动作不会去执行子流程,会一直等待。如果设置为 `On` 的。这个动作一开始就会去执行子流程,而不会去等待。
+
+
+## 输出
+
+> [WinEvent](./types/WinEvent.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 示例
+
+示例流程: https://github.com/shelllet/WinUi/blob/main/control/WhenEvent.simple
+
+
+
diff --git a/docx/actions/asynchronous/WorkBegin.md b/docx/actions/asynchronous/WorkBegin.md
new file mode 100644
index 00000000..7ce9c8b6
--- /dev/null
+++ b/docx/actions/asynchronous/WorkBegin.md
@@ -0,0 +1,29 @@
+# 异步启动
+可用于启动已停止的异步动作,比如:*线程* 、*定时器* 等动作。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 异步对象,比如 *WorkThread* (线程)动作。
+## 输出
+
+> 无
+
+
+## 脚本调用
+> 不支持,参考[Thread](./types/Thread.md)
+
+## 资源
+
+示例流程:https://github.com/shelllet/WinUi/blob/main/async/WorkBegin.simple
+
+
+
diff --git a/docx/actions/asynchronous/WorkExit.md b/docx/actions/asynchronous/WorkExit.md
new file mode 100644
index 00000000..259fb7dd
--- /dev/null
+++ b/docx/actions/asynchronous/WorkExit.md
@@ -0,0 +1,31 @@
+# 异步结束
+可用于结束正在执行的异步动作,比如:*线程* 、*定时器* 等动作。
+
+
+
+## 权限
+> 无要求
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 异步对象,比如 *WorkThread* (线程)动作。
+
+## 输出
+
+> 无
+
+
+## 脚本调用
+> 不支持,参考[Thread](./types/Thread.md)
+
+## 资源
+
+示例流程:https://github.com/shelllet/WinUi/blob/main/async/WorkExit.simple
+
+
+
+
+
diff --git a/docx/actions/asynchronous/WorkReset.md b/docx/actions/asynchronous/WorkReset.md
new file mode 100644
index 00000000..edada6fb
--- /dev/null
+++ b/docx/actions/asynchronous/WorkReset.md
@@ -0,0 +1,33 @@
+# 状态切换
+这个动作可用于切换异步动作的状态,比如切换 *线程* 和 *定时器* 停止/运行。或者设置*事件* 的状态。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+* 异步对象,比如 [*WorkThread*](./actions/async/WorkThread.md) 动作, 或者 [*WhenEvent*](./actions/type/TypeEvent.md) 事件动作
+* 状态,参考[WorkState](./enums/WorkState.md) 状态, 对于 [*WhenEvent*](./actions/type/TypeEvent.md), `Auto` == `On`。对于 [*WorkTimer*](./actions/async/WorkTimer.md) / [*WorkThread*](./actions/async/WorkThread.md), `Auto` 可以 在`On` 和 `Off` 之间切换。
+
+## 输出
+
+> 无
+
+
+## 脚本调用
+
+> 不支持,参考[Thread](./types/Thread.md) 或者 [WinEvent](./types/WinEvent.md)
+
+## 资源
+
+示例流程: https://github.com/shelllet/WinUi/blob/main/async/WorkReset.simple
+
+
+
+
+
diff --git a/docx/actions/asynchronous/WorkTask.md b/docx/actions/asynchronous/WorkTask.md
new file mode 100644
index 00000000..93a79a19
--- /dev/null
+++ b/docx/actions/asynchronous/WorkTask.md
@@ -0,0 +1,31 @@
+# 定时任务
+该动作在指定的时间触发,并且可以执行相应的子流程。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 支持
+
+## 运行参数
+
+* [time](./types/DateTime.md): 触发时间(本地系统时间)。
+
+## 输出
+
+> 该动作使用线程去执行子流程,因此该动作不会被阻塞。返回 [Thread](./types/Thread.md)
+
+## 脚本调用
+
+> 不支持,参考[Thread](./types/Thread.md)
+
+## 资源
+
+示例流程: https://github.com/shelllet/WinUi/blob/main/async/WorkTask.simple
+
+
+
+
diff --git a/docx/actions/asynchronous/WorkThread.md b/docx/actions/asynchronous/WorkThread.md
new file mode 100644
index 00000000..e45e18e7
--- /dev/null
+++ b/docx/actions/asynchronous/WorkThread.md
@@ -0,0 +1,33 @@
+# 线程
+这个动作可用于异步执行一些子动作。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 支持
+
+## 运行参数
+
+* 手动
+> 线程默认状态开始即运行,如果选中此参数,线程一开始则不会执行,需要配合使用其它动作使其运行。
+
+## 输出
+
+> 线程 [Thread](./types/Thread.md)
+
+
+## 脚本调用
+
+> 不支持,参考[Thread](./types/Thread.md)
+
+
+## 资源
+
+示例流程:https://github.com/shelllet/WinUi/blob/main/async/WorkThread.simple
+
+
+
diff --git a/docx/actions/asynchronous/WorkTimer.md b/docx/actions/asynchronous/WorkTimer.md
new file mode 100644
index 00000000..ab22259c
--- /dev/null
+++ b/docx/actions/asynchronous/WorkTimer.md
@@ -0,0 +1,37 @@
+# 定时器
+可以按照一定的时间间隔,重复执行子流程。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 支持, 执行次数会传入子流程
+
+## 运行参数
+
+
+* [duration](./types/TimeSpan.md): 间隔时间,单位秒。
+* [immediate](./types/Boolean.md): 是否立即触发,如果没有选择此项,定时器在第一次启动的时候,需要等待所设置的间隔时间,才会触发。
+
+
+## 输出
+
+> [`Timer`](./types/Timer.md)
+
+
+## 脚本调用
+
+> 不支持,参考 [`Timer`](./types/Timer.md)
+
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/async/WorkTimer.simple
+
+
+
+
+
diff --git a/docx/actions/asynchronous/WorkWait.md b/docx/actions/asynchronous/WorkWait.md
new file mode 100644
index 00000000..0432d939
--- /dev/null
+++ b/docx/actions/asynchronous/WorkWait.md
@@ -0,0 +1,34 @@
+# 异步等待
+该动作可以等待异步动作的结束。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 异步动作
+> 例如:*工作线程*
+
+
+## 输出
+
+> 无
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/async/WorkWait.simple
+
+
+
+
diff --git a/docx/actions/asynchronous/images/01.png b/docx/actions/asynchronous/images/01.png
new file mode 100644
index 00000000..327b5fad
Binary files /dev/null and b/docx/actions/asynchronous/images/01.png differ
diff --git a/docx/actions/asynchronous/images/02.png b/docx/actions/asynchronous/images/02.png
new file mode 100644
index 00000000..a1eb3198
Binary files /dev/null and b/docx/actions/asynchronous/images/02.png differ
diff --git a/docx/actions/asynchronous/images/03.png b/docx/actions/asynchronous/images/03.png
new file mode 100644
index 00000000..16560069
Binary files /dev/null and b/docx/actions/asynchronous/images/03.png differ
diff --git a/docx/actions/asynchronous/images/04.png b/docx/actions/asynchronous/images/04.png
new file mode 100644
index 00000000..71515966
Binary files /dev/null and b/docx/actions/asynchronous/images/04.png differ
diff --git a/docx/actions/asynchronous/images/05.png b/docx/actions/asynchronous/images/05.png
new file mode 100644
index 00000000..a435cf2d
Binary files /dev/null and b/docx/actions/asynchronous/images/05.png differ
diff --git a/docx/actions/asynchronous/images/06.png b/docx/actions/asynchronous/images/06.png
new file mode 100644
index 00000000..e04a7425
Binary files /dev/null and b/docx/actions/asynchronous/images/06.png differ
diff --git a/docx/actions/asynchronous/images/07.png b/docx/actions/asynchronous/images/07.png
new file mode 100644
index 00000000..4e1d2297
Binary files /dev/null and b/docx/actions/asynchronous/images/07.png differ
diff --git a/docx/actions/asynchronous/images/08.png b/docx/actions/asynchronous/images/08.png
new file mode 100644
index 00000000..9206c03f
Binary files /dev/null and b/docx/actions/asynchronous/images/08.png differ
diff --git a/docx/actions/cloud/BaiduTranslate.md b/docx/actions/cloud/BaiduTranslate.md
index 3c69a9dd..3447fd35 100644
--- a/docx/actions/cloud/BaiduTranslate.md
+++ b/docx/actions/cloud/BaiduTranslate.md
@@ -1,7 +1,7 @@
# 百度翻译
百度翻译
-
+
## 子流程
@@ -9,11 +9,16 @@
## 运行参数
-* [AppID]():AppID
-* [Secret]:Secret
-* From:源语言
-* To:目标语言
-* Text:翻译的文本
+* AppID
+> AppID
+* Secret
+> Secret
+* 源语言
+>
+* 目标语言
+>
+* 文本
+> 翻译的文本
## 输出
@@ -21,13 +26,5 @@
> 翻译后的文本
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
## 示例
diff --git a/docx/actions/cloud/images/01.png b/docx/actions/cloud/images/01.png
new file mode 100644
index 00000000..e1d3a16d
Binary files /dev/null and b/docx/actions/cloud/images/01.png differ
diff --git a/docx/actions/control/ActionAlias.md b/docx/actions/control/ActionAlias.md
index f8309b97..3500857c 100644
--- a/docx/actions/control/ActionAlias.md
+++ b/docx/actions/control/ActionAlias.md
@@ -1,7 +1,7 @@
# 引用动作
此动作是用来引用流程当中,可以被使用的路过动作。
-
+
## 子流程
@@ -9,21 +9,22 @@
## 运行参数
-* Action:被引用的动作
-* Process:引用动作所在的流程
+* 流程
+> 引用动作所在的流程。
+* 动作
+> 被引用的动作。
## 输出
-> [`Object`](../../types/Object.md)
+> [`Object`](./types/Object.md)。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/control/ref.simple
-```
-## 示例
+
+!> 引用动作只是引用某个动作的执行结果,被引用的动作不会再次被执行。
\ No newline at end of file
diff --git a/docx/actions/control/ArithmeticCalculate.md b/docx/actions/control/ArithmeticCalculate.md
index 5ef3447e..8d29dc0b 100644
--- a/docx/actions/control/ArithmeticCalculate.md
+++ b/docx/actions/control/ArithmeticCalculate.md
@@ -1,7 +1,7 @@
# 算术运行
-进行(+ - * / ) 算术运算,源数据必须支持算术运行。
+进行(+ - * / ) 算术运算,操作数必须支持算术运行。
-
+
## 子流程
@@ -9,23 +9,21 @@
## 运行参数
-* Source:源数据,比如: [`Point`](../../types/Point.md) 类型
-* Operator:操作符
-* Target:目标数据
+* 操作数
+> 运算符左边的源据,比如: [`Point`](./types/Point.md) 类型。
+* 操作符
+> 运算符。
+* 操作数
+> 运算符右边的源据。
## 输出
-> 和源数据类型相同
+> 运算结果。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/control/ArithmeticCalculate.simple
-```
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple](https://github.com/shelllet/WinUi/blob/main/algorithm/filter_text.simple)
diff --git a/docx/actions/control/Break.md b/docx/actions/control/Break.md
index e08e984d..a82b4f08 100644
--- a/docx/actions/control/Break.md
+++ b/docx/actions/control/Break.md
@@ -1,6 +1,7 @@
# 停止循环
-停止循环,主要用在子流程当中,比如 *循环* 动作中
-
+停止循环,主要用在子流程当中,比如 [*循环*](./actions/control/For.md) 动作中用来提早结束循环。
+
+
## 子流程
@@ -8,20 +9,14 @@
## 运行参数
-
-
-
## 输出
+> 无
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/control/break.simple
-## 脚本调用
-
-```python
-import simple
-```
-## 示例
diff --git a/docx/actions/control/Code.md b/docx/actions/control/Code.md
index 487e6d1f..8a5c59e1 100644
--- a/docx/actions/control/Code.md
+++ b/docx/actions/control/Code.md
@@ -1,7 +1,7 @@
# 脚本
该动作可以执行`Python`脚本。
-
+
## 子流程
@@ -12,30 +12,24 @@
## 运行参数
-* Code:`Python`脚本。如果在子流程中使用全局变量,可以在脚本里边加入`global`。例如:
-
+* 脚本
+> `Python`脚本。如果在子流程中使用全局变量,可以在脚本里边加入`global`。例如:
+
```python
global var
-```
-
-
-## 输出
-> 无输出。
+......
+```
-## 脚本调用
+## 输出
-```python
-import simple;
+> 无。
-global var
+## 其它
-var = 10
+示例:https://github.com/shelllet/WinUi/blob/main/control/code.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/control/code.simple](https://github.com/shelllet/WinUi/blob/main/control/code.simple)
diff --git a/docx/actions/control/CodeExpression.md b/docx/actions/control/CodeExpression.md
index 86af15d6..292fd5e6 100644
--- a/docx/actions/control/CodeExpression.md
+++ b/docx/actions/control/CodeExpression.md
@@ -1,7 +1,7 @@
# 表达式
此动作可以执行 *Python* 的表达式。
-
+
## 子流程
> 不支持
@@ -9,8 +9,8 @@
## 运行参数
-* Expression:*Python* 表达式。必须符合 *Python* 的语法。
-
+* 表达式
+> *Python* 表达式。必须符合 *Python* 的语法。
> 赋值语句,并非表达式。例如:
```python
a = 10 # 赋值语句。
@@ -19,21 +19,17 @@ a = 10 # 赋值语句。
```python
a + 10 # 表达式。
```
-## 输出
-> 表达式的计算结果。例如: `a` 是一个数字。则`a + 10`的结果是一个数字类型[`Number`](../../types/Number.md)。
+## 输出
+> 表达式的计算结果。例如: `a` 是一个数字。则`a + 10`的结果是一个数字类型[`Number`](./types/Number.md)。
-## 脚本调用
-> 未导出
-## 示例
-> 生成随机数 [https://github.com/shelllet/WinUi/blob/main/control/import_expression.simple](https://github.com/shelllet/WinUi/blob/main/control/import_expression.simple)
+## 其它
-
+> 示例(生成随机数): https://github.com/shelllet/WinUi/blob/main/control/import_expression.simple
-
diff --git a/docx/actions/control/Exit.md b/docx/actions/control/Exit.md
new file mode 100644
index 00000000..a12ddd17
--- /dev/null
+++ b/docx/actions/control/Exit.md
@@ -0,0 +1,24 @@
+# 退出流程
+结束流程执行。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+
+
+## 输出
+
+> 无
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/control/code.simple
+
+
+
+
diff --git a/docx/actions/control/ExitApp.md b/docx/actions/control/ExitApp.md
deleted file mode 100644
index 4d5ee38b..00000000
--- a/docx/actions/control/ExitApp.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 退出
-退出流程执行
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
-## 示例
-
diff --git a/docx/actions/control/For.md b/docx/actions/control/For.md
index 9fbbbf81..456ffb75 100644
--- a/docx/actions/control/For.md
+++ b/docx/actions/control/For.md
@@ -1,28 +1,27 @@
# 循环
-循环,主要用来迭代容器
+用来迭代相应的列表数据,遍历列表或容器中的每一个元素。
-
+
## 子流程
-> 支持
+> 支持,每个被迭代的数据都会依次传入子动作中。
## 运行参数
-* Times:循环次数
+* 次数
+> 循环次数, 索引从 *0* 开始。
## 输出
+> 无
+## 其它
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/control/for.simple
-```python
-import simple
-```
-## 示例
diff --git a/docx/actions/control/GroupAction.md b/docx/actions/control/GroupAction.md
index cfb5b4d7..979f9ccf 100644
--- a/docx/actions/control/GroupAction.md
+++ b/docx/actions/control/GroupAction.md
@@ -1,7 +1,7 @@
# 分组
该动作可以把视图上相关动作分组,使逻辑更清晰。
-
+
## 子流程
@@ -16,15 +16,10 @@
## 输出
+## 其它
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/control/group.simple
-```python
-import simple;
-```
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/control/group.simple](https://github.com/shelllet/WinUi/blob/main/control/group.simple)
diff --git a/docx/actions/control/If.md b/docx/actions/control/If.md
index 62f64d1c..f88a8d78 100644
--- a/docx/actions/control/If.md
+++ b/docx/actions/control/If.md
@@ -1,8 +1,8 @@
# 判断
-条件判断,相当于`python` 中的 `if`语句,该动作有两条分支,如果条件成立,执行左边的流程分支,否则,执行右边的流程分支
+条件判断,用来判断 `True` 或 `False`,也可用来判`空`。相当于`python` 中的 `if`语句,该动作有两条分支,如果条件成立,执行左边的流程分支,否则,执行右边的流程分支。
-
+
## 子流程
@@ -10,20 +10,21 @@
## 运行参数
-* Value: 可判断的对象
+* 数据
+> 可判断的对象,如*Boolean* 类型 。
## 输出
-> [Boolean](../../types/Boolean.md), 成立流程走左边分支,否则走右键分支
+> 是否为空,参考:[Boolean](./types/Boolean.md), 条件成立流程走左边分支,否则走右侧分支。
-## 脚本调用
+## 其它
-```python
-import simple
+示例:https://github.com/shelllet/WinUi/blob/main/control/if.simple
-```
-## 示例
+
+
+!> 不可通过 *[判断](./If.md)* 来判断 *容器/列表* 是否为空。
\ No newline at end of file
diff --git a/docx/actions/control/InputParam.md b/docx/actions/control/InputParam.md
deleted file mode 100644
index 7a5e1634..00000000
--- a/docx/actions/control/InputParam.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 传入参数
-通常做为子动作,其值由相应的父动作传入。通常列表都会支持子动作,列表的每个元素都会传递给该动作。
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-
-
-## 输出
-
-> 无
-
-
-## 脚本调用
-
-```python
-import simple
-
-
-```
-
-## 示例
-
diff --git a/docx/actions/control/Invoke.md b/docx/actions/control/Invoke.md
index 60a38b8d..ff2b64a9 100644
--- a/docx/actions/control/Invoke.md
+++ b/docx/actions/control/Invoke.md
@@ -1,7 +1,7 @@
# 调用
-此动作可以调用其他流程(非子流程)。
+此动作可以调用同一项目中的其他流程(非子流程)。
-
+
## 子流程
@@ -11,23 +11,21 @@
## 运行参数
-* Process:其他流程。所有流程都会在下拉列表当中列出。所以此参数只需要从下拉列表当中选择其他流程即可。
+* 流程
+> 所有流程都会在下拉列表当中列出。所以此参数只需要从下拉列表当中选择其他流程即可。注意:选择相同的流程,可能出现死循环。
-
-## 输出
+* 数据
+> 传至被调用流程的数据, 在被调用的流程中可以通过 [参数](./actions/control/Param.md)获取该值。
- 此动作没有输出。
+## 输出
+> 无。
-## 脚本调用
+## 其它
-```python
-import simple;
+示例:https://github.com/shelllet/WinUi/blob/main/control/invoke.simple
-```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/control/invoke.simple](https://github.com/shelllet/WinUi/blob/main/control/invoke.simple)
diff --git a/docx/actions/control/IsEmpty.md b/docx/actions/control/IsEmpty.md
index 3213f6e3..3dc1bf3d 100644
--- a/docx/actions/control/IsEmpty.md
+++ b/docx/actions/control/IsEmpty.md
@@ -1,6 +1,7 @@
# 判空
-判断 *容器* 或者 *列表* 是否为空
+判断 *容器* 或者 *列表* 是否为空。也可以判断字符串是否为空。
+
## 子流程
@@ -8,20 +9,18 @@
## 运行参数
-* Value: 可判空的对象,比如列表或者字符串。
+* 值
+> 可判空的对象,比如列表或者字符串。
## 输出
-> [Boolean](../../types/Boolean.md), 成立流程走左边分支,否则走右键分支
+> 是否为空,参考:[Boolean](./types/Boolean.md), 如果 *判空* 成立, 流程走左边分支,否则走右键分支。
-## 脚本调用
-```python
-import simple
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/control/isempty.simple
-```
-## 示例
diff --git a/docx/actions/control/LoggingControl.md b/docx/actions/control/LoggingControl.md
new file mode 100644
index 00000000..2a772f68
--- /dev/null
+++ b/docx/actions/control/LoggingControl.md
@@ -0,0 +1,27 @@
+# 输出控制
+该动作用来在流程中控制输出日志。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 状态
+> 参考[LogStatus](./enums/LogStatus.md)。选择 *启用* 之后,该动作之后执行的动作(包括该动作)将会有日志输出。选择 *禁用* 之后,则该动作之后执行的动作(包括该动作)不会再有日志输出。
+
+## 输出
+
+> 无
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/control/LoggingControl.simple
+
+
+
+
diff --git a/docx/actions/control/LoggingEnabled.md b/docx/actions/control/LoggingEnabled.md
deleted file mode 100644
index e772b909..00000000
--- a/docx/actions/control/LoggingEnabled.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 输出控制
-该动作用来在流程中控制输出日志
-
-
-
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* [Status](../../enums/WorkStatus.md): 状态
-
-## 输出
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/control/logging.simple](https://github.com/shelllet/WinUi/blob/main/control/logging.simple)
-
diff --git a/docx/actions/control/LogicalOperator.md b/docx/actions/control/LogicalOperator.md
index b1100ff1..819153c5 100644
--- a/docx/actions/control/LogicalOperator.md
+++ b/docx/actions/control/LogicalOperator.md
@@ -1,7 +1,7 @@
# 逻辑运算
-逻辑运算
+逻辑运算符包括 `&&`、`||`、`!` 三种,分别表示逻辑与、逻辑或、逻辑非, 参考: [LogicalOperators](./enums/LogicalOperators.md)。
-
+
## 子流程
@@ -10,21 +10,21 @@
## 运行参数
-* Source: 源数据
-* [Operator](../../enums/LogicalOperators.md): 逻辑运算符
-* Target:目标数据
+* 操作数
+>
+* 逻辑运算符
+> 参考: [LogicalOperators](./enums/LogicalOperators.md)。
+* 操作数
+> 当选择 `Not` 时,该参数不可使用。
## 输出
+> `True` 或者 `False`, 参考:[Bool](./types/Boolean.md)。
+## 其它
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/control/LogicalOperator.simple
-```python
-import simple
-```
-
-## 示例
diff --git a/docx/actions/control/NameAlias.md b/docx/actions/control/NameAlias.md
index 4cd6f3fc..7571e886 100644
--- a/docx/actions/control/NameAlias.md
+++ b/docx/actions/control/NameAlias.md
@@ -1,7 +1,7 @@
# 引用动作(名称)
此动作通过 *名称* 引用流程当中,可以被使用的路过动作。
-
+
## 子流程
@@ -9,19 +9,20 @@
## 运行参数
-* Name:动作名称,相当于变量名称,符合 *Python* 变量定义要求。
+* 名称
+> 动作名称,相当于变量名称,符合 *Python* 变量定义要求。
## 输出
-> [`Object`](../../types/Object.md)
+> [`Object`](./types/Object.md)。
-## 脚本调用
-```python
-import simple
+## 其它
+示例:https://github.com/shelllet/WinUi/blob/main/control/ref.simple
-```
-## 示例
+
+
+!> 引用动作只是引用某个动作的执行结果,被引用的动作不会再次被执行。
\ No newline at end of file
diff --git a/docx/actions/control/Param.md b/docx/actions/control/Param.md
new file mode 100644
index 00000000..7240099f
--- /dev/null
+++ b/docx/actions/control/Param.md
@@ -0,0 +1,35 @@
+# 参数
+用于获取由父动作传入子动作的数据。例如,在迭代动作的子动作中添加该动作,便可获取被迭代的每个元素值。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 索引
+> 当父动作传入类似元组(Tuple) 这样的包含多值元素时,可以通过该索引引用其中的值。
+
+* 默认值
+> 父动作传入的值为空时,会使用这个默认值。
+
+
+## 输出
+
+> 对应的参数值。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/control/param.simple
+
+
+
+
+
+## 版本变化
+
+* 0.33
+> 增加 *索引* 参数。
\ No newline at end of file
diff --git a/docx/actions/control/RelationalOperator.md b/docx/actions/control/RelationalOperator.md
index 9c375999..161997ef 100644
--- a/docx/actions/control/RelationalOperator.md
+++ b/docx/actions/control/RelationalOperator.md
@@ -1,7 +1,7 @@
# 关系运算
关系运算用来比较两个操作数值,关系运算返回一个布尔值,即根据操作数的值返回`True`或`False`。
-
+
@@ -11,22 +11,23 @@
## 运行参数
-* Source: 源数据
-* [Operator](../../enums/RelationalOperators.md): 逻辑运算符
-* Target:目标数据
+* 操作数
+> 第 *1* 个操作数。
+* 辑运算符
+> 参考:[RelationalOperators](./enums/RelationalOperators.md)。
+* 操作数:
+> 第 *2* 个操作数。
## 输出
-> [Boolean](../../types/Boolean.md)
+> `True`或`False`,参考:[Boolean](./types/Boolean.md)
-## 脚本调用
-```python
-import simple
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/control/RelationalOperator.simple
-```
-## 示例
diff --git a/docx/actions/control/SoftwareTrigger.md b/docx/actions/control/SoftwareTrigger.md
new file mode 100644
index 00000000..d8821928
--- /dev/null
+++ b/docx/actions/control/SoftwareTrigger.md
@@ -0,0 +1,23 @@
+# 软触发
+工业相机的软触发(Software Trigger)是通过软件指令控制图像采集的技术,适用于需要灵活控制采集时机的场景(如机器视觉检测、动态目标捕捉)。如果工业相机设置了软触发模式,该动作可以触发相机拍照。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* 对象
+> 相机对象,参考:[相机](./actions/type/TypeCamera.md)。
+
+
+## 输出
+
+> 无。
+
+## 其它
+
diff --git a/docx/actions/control/images/01.png b/docx/actions/control/images/01.png
index 4ac9bd9d..7fbaf457 100644
Binary files a/docx/actions/control/images/01.png and b/docx/actions/control/images/01.png differ
diff --git a/docx/actions/control/images/013.png b/docx/actions/control/images/013.png
deleted file mode 100644
index 53e00e44..00000000
Binary files a/docx/actions/control/images/013.png and /dev/null differ
diff --git a/docx/actions/control/images/02.png b/docx/actions/control/images/02.png
index 98bc5da6..0ebac7e4 100644
Binary files a/docx/actions/control/images/02.png and b/docx/actions/control/images/02.png differ
diff --git a/docx/actions/control/images/03.png b/docx/actions/control/images/03.png
new file mode 100644
index 00000000..d9ee5b3a
Binary files /dev/null and b/docx/actions/control/images/03.png differ
diff --git a/docx/actions/control/images/04.png b/docx/actions/control/images/04.png
new file mode 100644
index 00000000..9e5b8ca6
Binary files /dev/null and b/docx/actions/control/images/04.png differ
diff --git a/docx/actions/control/images/05.png b/docx/actions/control/images/05.png
new file mode 100644
index 00000000..562f09fe
Binary files /dev/null and b/docx/actions/control/images/05.png differ
diff --git a/docx/actions/control/images/06.png b/docx/actions/control/images/06.png
new file mode 100644
index 00000000..1eefbb6f
Binary files /dev/null and b/docx/actions/control/images/06.png differ
diff --git a/docx/actions/control/images/07.png b/docx/actions/control/images/07.png
new file mode 100644
index 00000000..ba96d302
Binary files /dev/null and b/docx/actions/control/images/07.png differ
diff --git a/docx/actions/control/images/08.png b/docx/actions/control/images/08.png
new file mode 100644
index 00000000..95daee3e
Binary files /dev/null and b/docx/actions/control/images/08.png differ
diff --git a/docx/actions/control/images/09.png b/docx/actions/control/images/09.png
new file mode 100644
index 00000000..21f4277c
Binary files /dev/null and b/docx/actions/control/images/09.png differ
diff --git a/docx/actions/control/images/10.png b/docx/actions/control/images/10.png
new file mode 100644
index 00000000..c6895fff
Binary files /dev/null and b/docx/actions/control/images/10.png differ
diff --git a/docx/actions/control/images/11.png b/docx/actions/control/images/11.png
new file mode 100644
index 00000000..906fc315
Binary files /dev/null and b/docx/actions/control/images/11.png differ
diff --git a/docx/actions/control/images/12.png b/docx/actions/control/images/12.png
new file mode 100644
index 00000000..019c592f
Binary files /dev/null and b/docx/actions/control/images/12.png differ
diff --git a/docx/actions/control/images/13.png b/docx/actions/control/images/13.png
new file mode 100644
index 00000000..df0d69ed
Binary files /dev/null and b/docx/actions/control/images/13.png differ
diff --git a/docx/actions/control/images/14.png b/docx/actions/control/images/14.png
new file mode 100644
index 00000000..43705119
Binary files /dev/null and b/docx/actions/control/images/14.png differ
diff --git a/docx/actions/control/images/15.png b/docx/actions/control/images/15.png
new file mode 100644
index 00000000..aea8e3c1
Binary files /dev/null and b/docx/actions/control/images/15.png differ
diff --git a/docx/actions/control/images/16.png b/docx/actions/control/images/16.png
new file mode 100644
index 00000000..947163ca
Binary files /dev/null and b/docx/actions/control/images/16.png differ
diff --git a/docx/actions/detection/ApproxPolyDP.md b/docx/actions/detection/ApproxPolyDP.md
deleted file mode 100644
index 178e36cd..00000000
--- a/docx/actions/detection/ApproxPolyDP.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 近似轮廓
-将一个轮廓的形状逼近到另一个由较少数量的顶点组成的形状,使得形状的轮廓之间的距离等于指定精度或小于指定精度的过程称为形状的近似轮廓
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* [Contour](../../types/Contour.md):原始轮廓
-* [Epsilon](): 指定近似精度的参数。这是原始轮廓与其近似轮廓之间的最大距离。
-
-
-## 输出
-> 近似的轮廓。类型参考:[Contour](../../types/Contour.md)
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/detection/BlobDetect.md b/docx/actions/detection/BlobDetect.md
index 19e9e21e..0b935da6 100644
--- a/docx/actions/detection/BlobDetect.md
+++ b/docx/actions/detection/BlobDetect.md
@@ -1,5 +1,10 @@
-# Blob 查找
-*Blob* 是图像中与周围区域在属性(例如亮度、颜色)上不同的区域。
+# 斑点检测
+*斑点* 是图像中与周围区域在属性(例如亮度、颜色)上不同的区域, 也可以称为 *Blob* ,该动作对图像中的 *斑点* ,按照指定的条件进行筛选过滤。
+
+* 查找圆或者椭圆就是从黑色背景中查找白色圆或者椭圆边缘。所以请记住,要找到的圆或者椭圆应该是白色的,背景应该是黑色的。
+
+
+
## 子流程
> 不支持
@@ -7,19 +12,26 @@
## 运行参数
-* Image:源图像
-* Threshold:阈值范围。通过使用从最小阈值开始对源图像进行阈值处理,将源图像转换为多个二值图像。这些阈值按 *Step*递增, 直到最大阈值。
-* Step:相邻阈值之间的距离。
-* Color:一个介于 0 和 255 之间的数字,表示 *Blob* 的颜色。*0* 将选择暗斑点,*255* 将选择亮斑点(默认值:*0*)。
-* Area:按面积过滤 *Blob*。
-* Circularity: 衡量 *Blob* 与圆的接近程度。比如:*圆形* 的圆度为 *1*,*正方形* 的圆度为 *0.785*
-* Convexity:按凸性比进行过滤。凸性定义为(*Blob* 的面积/它的*凸包*面积,形状的凸包是完全包围该形状的最紧密的凸形。
-* Inertia:按惯量比(拉长比)进行过滤。对于*圆*,惯量比为 *1*,对于*椭圆*,惯量比为 *0* 到 *1*,对于*直线*,惯量比值为 *0*。
+* 图像
+> 源图像。
+* 阈值
+> 通过使用从最小阈值开始对源图像进行阈值处理,将源图像转换为多个二值图像。这些阈值按 *步长* 递增, 直到最大阈值。
+* 步长
+> 相邻阈值之间的距离。
+
+* 面积
+> 范围,提取 *斑点* 的面积,按该设置的范围进行 *斑点*过滤。该参数默认不启用。
+* 圆形度
+> 范围,衡量 *斑点* 与圆的接近程度。比如:*圆形* 的圆度为 *1*,*正方形* 的圆度为 *0.785*。该参数默认不启用。
+* 凸性比
+> 范围,按凸性比进行过滤。凸性定义为(*斑点* 的面积/它的*凸包*面积,形状的凸包是完全包围该形状的最紧密的凸形。该参数默认不启用。
+* 惯量比
+> 范围,按惯量比(拉长比)进行过滤。对于*圆*,惯量比为 *1*,对于*椭圆*,惯量比为 *0* 到 *1*,对于*直线*,惯量比值为 *0*。该参数默认不启用。
## 输出
-> *Blob* 区域 [Images](../../types/Image.md)
+> 检测到 *斑点* 的矩形框,参考: [RotatedRects](./types/RotatedRect.md)。
## 脚本调用
@@ -29,4 +41,16 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/BlobDetect.simple
+
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/ColorPercentage.md b/docx/actions/detection/ColorPercentage.md
deleted file mode 100644
index 666dee06..00000000
--- a/docx/actions/detection/ColorPercentage.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 颜色统计
-此动作可以统计某一颜色在图像当中所占的比例
-
-
-
-
-## 子流程
-
-> 不支持
-
-
-## 运行参数
-
-* Image: 图像
-* Color:所要统计的颜色。
-* Diff:误差。
-
-
-## 输出所要统计的颜色所占的百分比。
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/detection/color_percentage.simple](https://github.com/shelllet/WinUi/blob/main/detection/color_percentage.simple)
diff --git a/docx/actions/detection/ConnectedComponents.md b/docx/actions/detection/ConnectedComponents.md
deleted file mode 100644
index 8d2f19cc..00000000
--- a/docx/actions/detection/ConnectedComponents.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 连通域分析
-通过对二值图像中 *Bolb*(斑点)区域的连通性分析,可以让我们对二值图像中的斑点进行更细粒度的过滤。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Image:源图像
-* Width:连通区域的宽度过滤
-* Height:连通区域的高度过滤
-* [Area](../../types/Range.md):连通区域的面积过滤
-
-
-## 输出
-
-> 过滤后的二值化图像
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/detection/EdgeLineDetection.md b/docx/actions/detection/EdgeLineDetection.md
deleted file mode 100644
index 5a481769..00000000
--- a/docx/actions/detection/EdgeLineDetection.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 线段检测
-通过边缘检测来查找线段
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Image:源图像
-* Length:线段长度过滤
-
-
-## 输出
-
-> 检测到的线段
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/detection/EllipseDetection.md b/docx/actions/detection/EllipseDetection.md
index dc7c8ac8..bd67e011 100644
--- a/docx/actions/detection/EllipseDetection.md
+++ b/docx/actions/detection/EllipseDetection.md
@@ -1,20 +1,26 @@
# 椭圆检测
-检测图像中的圆或者椭圆
+检测图像中的圆或者椭圆,线宽通常是 *1*像素。
+
+* 为了获得更高的准确性,请使用二值图像。因此,在查找圆或者椭圆之前,请应用阈值或边缘检测进行预处理。
+* 查找圆或者椭圆就是从黑色背景中查找白色圆或者椭圆边缘。所以请记住,要找到的圆或者椭圆应该是白色的,背景应该是黑色的。
+
+
+
## 子流程
> 不支持
-
## 运行参数
-* Image: 待检测的图片。
-* Area: 面积过滤
+* 图像
+ > 二值化后的单通道图像,如果为非单通道图像,则会转换成灰度图像。
+
## 输出
-> [`Ellipses`](../../types/Ellipse.md)
+> 检测到的所有圆或者椭圆,参考: [`Ellipses`](./types/Ellipse.md)
### 脚本调用
@@ -25,7 +31,15 @@ import simple;
```
-## 示例
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/EllipseDetection.simple
+
+
+
+
-[https://github.com/shelllet/WinUi/blob/main/detection/ellipse_detection.simple](https://github.com/shelllet/WinUi/blob/main/detection/ellipse_detection.simple)
+## 版本变化
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/FastLineDetection.md b/docx/actions/detection/FastLineDetection.md
deleted file mode 100644
index d888df5c..00000000
--- a/docx/actions/detection/FastLineDetection.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 快速直线检查找
-使用快速直线检测算法查找直线
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Image:源图像
-* Length:长度过滤
-
-
-## 输出
-
-> 检测到的直线。['Lines'](../../types/Line.md)
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/detection/FeatureDetect.md b/docx/actions/detection/FeatureDetect.md
index dc84f1b4..1d2cf052 100644
--- a/docx/actions/detection/FeatureDetect.md
+++ b/docx/actions/detection/FeatureDetect.md
@@ -1,7 +1,7 @@
-# 图像查找
-此动作可以在一张图片当中查找具有某些特征的图像
+# 特征匹配
+特征是图像中信息特别丰富或有趣的独特区域。这些可能包括边缘、角落或斑点(基于颜色强度的区域)。该动作通过特征匹配,在一张图像当中查找模板图像。
-
+
## 子流程
@@ -12,14 +12,17 @@
## 运行参数
-* Source:源图像
-* Target:要查找的图像
-* Precision:精度
-
-
+* 图像
+> 单通道图像,如果为非单通道图像,则会转换成灰度图像。
+* 模板
+> 要查找的图像,单通道图像,如果为非单通道图像,则会转换成灰度图像。
+* 特征
+> 获取的最大特征点数量。仅适用于 *ORB* 和 *SIFT* 算法,默认值:500
+* 算法
+> 参考 [FeatureAlgorithm](../enums/FeatureAlgorithm.md)
## 输出
-> `RotatedRect` 类型
+> 检测到的位置区域,参考:[RotatedRects](./types/RotatedRect.md)
## 脚本调用
@@ -29,7 +32,20 @@ import simple;
```
-## 示例
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/FeatureDetect.simple
+
+
+
+
+
+
+
+!> 该动作会先将源图像和模板图像转换成灰度图像,再进行匹配。
+
-[https://github.com/shelllet/WinUi/blob/main/detection/find_image.simple](https://github.com/shelllet/WinUi/blob/main/detection/find_image.simple)
+## 版本变化
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/FindContours.md b/docx/actions/detection/FindContours.md
index c440af79..90423e84 100644
--- a/docx/actions/detection/FindContours.md
+++ b/docx/actions/detection/FindContours.md
@@ -1,5 +1,10 @@
# 查找轮廓
-查找轮廓
+轮廓可以简单地理解为连接所有连续点(沿着边界)的曲线,具有相同的颜色或强度。轮廓是形状分析以及物体检测和识别的有用工具。
+
+* 为了获得更高的准确性,请使用二值图像。因此,在查找轮廓之前,请应用阈值或边缘检测进行预处理。
+* 查找轮廓就像从黑色背景中查找白色物体。所以请记住,要找到的对象应该是白色的,背景应该是黑色的。
+
+
## 子流程
> 不支持
@@ -7,15 +12,16 @@
## 运行参数
-* Image:图像
-* [Modes](../../enums/RetrievalModes.md):模式
-
-
-
+* 图像
+> 单通道图像,通常使用二值化之后的单通道图像,如果是非单通道图像,则默认会转换成灰度图像。
+* 模式
+> 轮廓检索模式,控制轮廓的输出层次结构,可以参考:[RetrievalModes](./enums/RetrievalModes.md)。
+* 方法
+> 轮廓近似方法,轮廓只是形成形状边界的点的列表。一种方法是存储表示边界的所有点,但是对于 *三角形* 或 *四边形* 等简单形状存储数百个点是浪费的。对于 *三角形*,3 个点就足够了,对于 *四边形*,4 个点就足够了。该标志帮助我们选择近似级别,可以参考:[ContourApproximationMode](./enums/ContourApproximationMode.md)。
## 输出
-
+> 查找到的轮廓,参考:[Contours](./types/Contour.md)
## 脚本调用
@@ -25,4 +31,16 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/FindContours.simple
+
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/ImageColorDiscrimination.md b/docx/actions/detection/ImageColorDiscrimination.md
new file mode 100644
index 00000000..2069f2bc
--- /dev/null
+++ b/docx/actions/detection/ImageColorDiscrimination.md
@@ -0,0 +1,31 @@
+# 颜色辨识
+
+辨别图像的颜色是否为指定颜色。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 图像
+> 待辨识的图像,一般使用纯色图像辨识。
+
+* 颜色
+> 参考:[Colors](./enums/Colors.md)。注意:`RED`(红色) 和 `BLUE`(蓝色)使用 *BGR* 颜色模式。
+
+## 输出
+
+> 参考:[Boolean](./types/Boolean.md), 图像符合指定的颜色走左边分支流程,否则走右边流程分支。
+
+
+
+## 其它
+
+示例: https://github.com/shelllet/WinUi/blob/main/algorithm/ImageIsColored.simple
+
+
+
+
diff --git a/docx/actions/detection/LineDetection.md b/docx/actions/detection/LineDetection.md
new file mode 100644
index 00000000..bd612f59
--- /dev/null
+++ b/docx/actions/detection/LineDetection.md
@@ -0,0 +1,48 @@
+# 直线检测
+检测图像中的直线,直线的线宽通常是 *1* 像素。
+
+* 为了获得更高的准确性,请使用二值图像。因此,在查找直线之前,请应用阈值或边缘检测进行预处理。
+* 查找直线就是从黑色背景中查找白色直线。所以请记住,要找到的直线应该是白色的,背景应该是黑色的。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 二值化后的单通道图像,如果为非单通道图像,则会转换成灰度图像。
+* 长度
+> 直线长度,低于该值的直线会被抛弃。默认值:*10* 像素。
+* 算法
+> 包括边缘绘制算法和快速检测算法,可以切换不同算法,通过预览,查看检测结果来确定该参数。
+
+## 输出
+
+> 检测到的直线, 参考:[Lines](./types/Line.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/LineDetection.simple
+
+
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/MatchImage.md b/docx/actions/detection/MatchImage.md
new file mode 100644
index 00000000..b224262f
--- /dev/null
+++ b/docx/actions/detection/MatchImage.md
@@ -0,0 +1,36 @@
+# 图像匹配
+多目标的图像查找方法,通常用于查找特征比较少的图像。
+
+* 具有旋转不变性。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像
+> 源图像,从该图像上查找目标图像,内部会转换成灰度图像。
+
+* 目标
+> 要查找的图像,内部会转换成灰度图像,不能比源图像大。
+
+* 分值
+> 根据相似度进行过滤, 低于该值的认为不匹配。取值范围:(-1 ~ 1) ,`1` 表示完美匹配,`-1` 表示糟糕的匹配,`0` 表示没有任何相关性。
+
+* 重叠区域
+> 两个目标图像之间的重叠面积 / 样本的面积。默认值为:`0` 。
+
+## 输出
+
+> 找到目标对象的位置,参考:[DetectionResults](./types/DetectionResult.md)
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/MatchImage.simple
+
+
+
+## 版本变化
+
diff --git a/docx/actions/detection/MatchShapes.md b/docx/actions/detection/MatchShapes.md
index 487fd11b..36bab395 100644
--- a/docx/actions/detection/MatchShapes.md
+++ b/docx/actions/detection/MatchShapes.md
@@ -1,5 +1,10 @@
# 形状匹配
-从图像上查找形状,即使形状旋转也不会对匹配产生太大影响。
+该动作可以在一张图像上查找一个特定的形状。即使图像旋转,绽放也不会对该结果产生太大影响。
+
+* 为了获得更高的准确性,请使用二值图像,因此,在查找形状之前,请应用阈值或边缘检测进行预处理。
+* 要找到的形状应该是白色的,背景应该是黑色的。
+
+
## 子流程
> 不支持
@@ -7,14 +12,19 @@
## 运行参数
-* Image:输入图像
-* Target:形状,必须是灰度图
-* Mode: 轮廓筛选方法。
-* Metric:相似性的指标。越低,表示匹配越好。*0*:表示完全匹配
+* 图像
+> 单通道图像,通常是二值化后的图像,从该图像上查找相应的目标形状。如果非单通道图像,则默认转换为灰度图像。
+* 目标
+> 单通道图像,包含目标形状,通常是一张具有特定形状,二值化化后的图像。如果非单通道图像,则默认转换为灰度图像。
+
+* 方法
+> 轮廓近似方法,可以参考:[ContourApproximationMode](./enums/ContourApproximationMode.md)。
+* 指标
+> 根据相似性进行过滤。越低,表示匹配越好。*0*:表示完全匹配,低于该值的形状,会被认为是匹配的形状。
## 输出
-> 匹配到的的形状位置
+> 所有匹配到的形状的位置,可以参考[DetectionResults](./types/DetectionResult.md)
## 脚本调用
@@ -24,4 +34,15 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/MatchShapes.simple
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/MatchTemplate.md b/docx/actions/detection/MatchTemplate.md
index 0a24ca7b..1d40b0a6 100644
--- a/docx/actions/detection/MatchTemplate.md
+++ b/docx/actions/detection/MatchTemplate.md
@@ -1,5 +1,11 @@
# 模板匹配
-简单的图片查找,通常用于查找较小的图像,或者特征比较少的图像。
+基于模板的简单的图像查找方法,通常用于查找较小的图像,或者特征比较少的图像。
+
+* 光照亮度不影响计算结果。
+
+* 常用于对象检测,例如在图像中查找特定的对象或图案。查找图像中的徽标、特定零件或任何其他定义的模式。
+
+
## 子流程
> 不支持
@@ -7,18 +13,18 @@
## 运行参数
-* Source:输入图像
-* Target:要查找的图像
-* Precision:相似度
-* Mode:单个匹配或者多个匹配。
-
+* 图像
+> 源图像,从该图像上查找模板图像,可以是彩色图像。
+* 模板
+> 要查找的图像,可以是彩色图像,不能比源图像大。
+* 精度
+> 根据相似度进行过滤, 低于该值的认为不匹配。取值范围:(-1 ~ 1) ,**1** 表示完美匹配,**-1** 表示糟糕的匹配,**0** 表示没有任何相关性。
## 输出
->
+> 匹配到的位置,参考:[DetectionResults](./types/DetectionResult.md)
-
## 脚本调用
```python
@@ -26,4 +32,17 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/MatchTemplate.simple
+
+
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/ShapeDetection.md b/docx/actions/detection/ShapeDetection.md
new file mode 100644
index 00000000..99dec523
--- /dev/null
+++ b/docx/actions/detection/ShapeDetection.md
@@ -0,0 +1,48 @@
+# 形状查找
+该动作可以查找图像上的基本形状,如:三角形、四边形、正方形。
+
+* 为了获得更高的准确性,请使用二值图像。因此,在查找形状之前,请应用阈值或边缘检测进行预处理。
+* 查找形状就像从黑色背景中查找白色物体。所以请记住,要找到的形状应该是白色的,背景应该是黑色的。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 二值化后的单通道图像,如果为非单通道图像,则会转换成灰度图像。
+
+* 逼近
+> 指定近似精度的参数。这是原始形状与其近似形状之间的最大距离。
+
+* 形状
+> 要查找的形状。
+
+## 输出
+
+> 检测到的形状位置,参考:[RotatedRects](./types/RotatedRect.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/detection/ShapeDetection.simple
+
+
+
+
+
+
+## 版本变化
+
+* 0.31
+> 图像参数支持使用*窗口*类型。
\ No newline at end of file
diff --git a/docx/actions/detection/images/01.png b/docx/actions/detection/images/01.png
new file mode 100644
index 00000000..3b2c36ab
Binary files /dev/null and b/docx/actions/detection/images/01.png differ
diff --git a/docx/actions/detection/images/02.png b/docx/actions/detection/images/02.png
new file mode 100644
index 00000000..c3431da2
Binary files /dev/null and b/docx/actions/detection/images/02.png differ
diff --git a/docx/actions/detection/images/03.png b/docx/actions/detection/images/03.png
new file mode 100644
index 00000000..90909717
Binary files /dev/null and b/docx/actions/detection/images/03.png differ
diff --git a/docx/actions/detection/images/04.png b/docx/actions/detection/images/04.png
new file mode 100644
index 00000000..431f9faa
Binary files /dev/null and b/docx/actions/detection/images/04.png differ
diff --git a/docx/actions/detection/images/05.png b/docx/actions/detection/images/05.png
new file mode 100644
index 00000000..2bf3f897
Binary files /dev/null and b/docx/actions/detection/images/05.png differ
diff --git a/docx/actions/detection/images/06.png b/docx/actions/detection/images/06.png
new file mode 100644
index 00000000..8cc232d3
Binary files /dev/null and b/docx/actions/detection/images/06.png differ
diff --git a/docx/actions/detection/images/07.png b/docx/actions/detection/images/07.png
new file mode 100644
index 00000000..04be2505
Binary files /dev/null and b/docx/actions/detection/images/07.png differ
diff --git a/docx/actions/detection/images/08.png b/docx/actions/detection/images/08.png
new file mode 100644
index 00000000..0d2a09a2
Binary files /dev/null and b/docx/actions/detection/images/08.png differ
diff --git a/docx/actions/detection/images/09.png b/docx/actions/detection/images/09.png
new file mode 100644
index 00000000..fbe98075
Binary files /dev/null and b/docx/actions/detection/images/09.png differ
diff --git a/docx/actions/detection/images/10.png b/docx/actions/detection/images/10.png
new file mode 100644
index 00000000..65f13762
Binary files /dev/null and b/docx/actions/detection/images/10.png differ
diff --git a/docx/actions/dnn/ONNXClassification.md b/docx/actions/dnn/ONNXClassification.md
deleted file mode 100644
index 3a9052b3..00000000
--- a/docx/actions/dnn/ONNXClassification.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# 目标分类
-目标分类,建议使用 *Yolo5 *网络训练的 *ONNX* 的模型。其它网络模型,可能需要通过脚本自定义输出。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Model:模型, *ONNX* 分类模型。
-* Image:要分类的图像
-
-
-另外,模型不同,可能需要设置相应的 *Std*,*Mean*,数值。如果需要设置,需要在脚本中调用该动作。
-
-例如:[MobileNet 模型](https://github.com/onnx/models/tree/main/vision/classification/mobilenet),必须将图像像素转换到 [0, 1] 范围内(动作自动完成),然后使用 `mean = [0.485, 0.456, 0.406]` 和 `std = [0.229, 0.224, 0.225]` 进行归一化
-
-
-* [Yolov5分类模型参考](https://github.com/ultralytics/yolov5),可能通过 `python export` 命令导出 *ONNX* 模型或者训练自己的模型
-
-## 输出
-
-> 分类
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/dnn/ONNXDetection.md b/docx/actions/dnn/ONNXDetection.md
deleted file mode 100644
index c834d9ae..00000000
--- a/docx/actions/dnn/ONNXDetection.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# 目标检测
-目标检测,仅支持 *Yolo5*格式的 *ONNX* 模型,其它 *ONNX* 检测模型需要通过脚本自已解析输出
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Model:模型, *ONNX* 分类模型。
-* Image:要分类的图像
-
-
-另外,模型不同,可能需要设置相应的 *Std*,*Mean*,数值。如果需要设置,需要在脚本中调用该动作。
-
-例如:[SSD 模型](https://github.com/onnx/models/tree/main/vision/object_detection_segmentation/ssd),必须将图像像素转换到 [0, 1] 范围内(动作自动完成),然后使用 `mean = [0.485, 0.456, 0.406]` 和 `std = [0.229, 0.224, 0.225]` 进行归一化,需要息定义解析输出,
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/dnn/QRCode.md b/docx/actions/dnn/QRCode.md
deleted file mode 100644
index 5583684a..00000000
--- a/docx/actions/dnn/QRCode.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# 二维码识别
-识别图片中的二维码。
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-* Image: 待识别文字的图片。
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-
-```
-
-### 示例
\ No newline at end of file
diff --git a/docx/actions/dnn/TextChinese.md b/docx/actions/dnn/TextChinese.md
deleted file mode 100644
index 0cc2c0f0..00000000
--- a/docx/actions/dnn/TextChinese.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 中文识别
-识别图片中的中文文字。
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-* Image: 待识别文字的图片。
-* Score: 文字评分。
-* Cls: 文字方向分类,使用于0°和180°的图片。
-
-## 输出
-
-`list`
-
-
-## 脚本调用
-
-```python
-import simple;
-
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/dnn/textchinese.simple](https://github.com/shelllet/WinUi/blob/main/dnn/textchinese.simple)
diff --git a/docx/actions/dnn/TextDetection.md b/docx/actions/dnn/TextDetection.md
deleted file mode 100644
index 0f090fa6..00000000
--- a/docx/actions/dnn/TextDetection.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# 文本块检测
-检测图像上的文本区域。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Image:要检测的图像
-
-
-## 输出
-
-文字检测模型训练:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/detection.md
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/draw/BarcodeCreate.md b/docx/actions/draw/BarcodeCreate.md
new file mode 100644
index 00000000..28b5783e
--- /dev/null
+++ b/docx/actions/draw/BarcodeCreate.md
@@ -0,0 +1,32 @@
+# 条码生成
+生成包含条码信息的图像。如果选择 *QR_CODE*,也可以生成二维码。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 字符
+> 条码包含的文本信息。
+
+* 类型
+> 参考:[BARCODE_Encoding](./enums/BARCODE_Encoding.md)。
+## 输出
+
+> 包含条码的图像,参考:[Image](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/draw/barcode.simple
+
diff --git a/docx/actions/draw/DrawImage.md b/docx/actions/draw/DrawImage.md
new file mode 100644
index 00000000..64719a62
--- /dev/null
+++ b/docx/actions/draw/DrawImage.md
@@ -0,0 +1,39 @@
+# 图像绘制
+在图像上绘制另一幅图像。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 画布
+> 源图像。
+
+* 图像
+> 绘制的图像
+
+
+* 位置
+> 图像的绘制位置
+
+
+
+## 输出
+
+> 图像,参考:[Image](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/draw/drawimage.simple
+
diff --git a/docx/actions/draw/DrawRect.md b/docx/actions/draw/DrawRect.md
new file mode 100644
index 00000000..e92bc04f
--- /dev/null
+++ b/docx/actions/draw/DrawRect.md
@@ -0,0 +1,40 @@
+# 绘制矩形
+在图像上用指定的颜色绘制一个矩形框。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 绘制矩形的图像
+* 位置
+> 矩形框位置
+
+* 颜色
+> 矩形框的边框颜色
+
+
+
+## 输出
+
+> 包含矩形的图像,参考:[Image](./types/Image.md)。
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/draw/DrawRect.simple
+
+
+
+
+
diff --git a/docx/actions/draw/DrawText.md b/docx/actions/draw/DrawText.md
new file mode 100644
index 00000000..bd7f0437
--- /dev/null
+++ b/docx/actions/draw/DrawText.md
@@ -0,0 +1,48 @@
+# 文本绘制
+在图像上绘制文字。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 绘制文字的图像
+
+* 文本
+> 绘制文字
+
+
+* 位置
+> 文字绘制的起始位置
+
+* 字体大小
+> 默认使用全局绘制文字大小。
+
+* 字体
+> 如果绘制中文,需要选择相应的中文字体。也可以使用自定义字体,使用表达式或者动作,传入字体全路径即可。
+
+* 颜色
+> 字体颜色
+
+
+
+## 输出
+
+> 包含文字的图像,参考:[Image](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/draw/drawtext.simple
+
diff --git a/docx/actions/draw/FillColor.md b/docx/actions/draw/FillColor.md
new file mode 100644
index 00000000..6a0b4e58
--- /dev/null
+++ b/docx/actions/draw/FillColor.md
@@ -0,0 +1,39 @@
+# 填充颜色
+在图像上,根据所选择的区域,填充指定的颜色。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 待填充颜色的图像
+
+* 区域
+> 填充区域,默认 **矩形** 区域
+
+* 颜色
+> 填充颜色,默认 **黑色**。
+
+## 输出
+
+> 图像,参考:[Image](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+例子:https://github.com/shelllet/WinUi/blob/main/draw/FillColor.simple
+
+
+
+
diff --git a/docx/actions/draw/images/01.png b/docx/actions/draw/images/01.png
new file mode 100644
index 00000000..c13f7e4a
Binary files /dev/null and b/docx/actions/draw/images/01.png differ
diff --git a/docx/actions/draw/images/02.png b/docx/actions/draw/images/02.png
new file mode 100644
index 00000000..e027362d
Binary files /dev/null and b/docx/actions/draw/images/02.png differ
diff --git a/docx/actions/draw/images/03.png b/docx/actions/draw/images/03.png
new file mode 100644
index 00000000..18ad8a45
Binary files /dev/null and b/docx/actions/draw/images/03.png differ
diff --git a/docx/actions/draw/images/04.png b/docx/actions/draw/images/04.png
new file mode 100644
index 00000000..0eb57b4b
Binary files /dev/null and b/docx/actions/draw/images/04.png differ
diff --git a/docx/actions/draw/images/05.png b/docx/actions/draw/images/05.png
new file mode 100644
index 00000000..91f05dfb
Binary files /dev/null and b/docx/actions/draw/images/05.png differ
diff --git a/docx/actions/drawing/DrawDetectionResult.md b/docx/actions/drawing/DrawDetectionResult.md
deleted file mode 100644
index b0e7460e..00000000
--- a/docx/actions/drawing/DrawDetectionResult.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 绘制检测结果
-绘制对象检测结果,通常包含一个矩形框
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Image:将检测结果,绘制在该图像上
-* Value:检测结果
-
-
-
-## 输出
-
-> 绘制好的图像
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/filesystem/CopyFile.md b/docx/actions/filesystem/CopyFile.md
index 1ceab735..00a60776 100644
--- a/docx/actions/filesystem/CopyFile.md
+++ b/docx/actions/filesystem/CopyFile.md
@@ -1,27 +1,46 @@
-# 复制文件
-复制文件
+# 文件复制
+把文件从一个位置复制到另一个位置。
+
+
+
+## 权限
+> 无要求
## 子流程
> 不支持
## 运行参数
-* From:源文件
-* Destination:目标文件夹
-* FileName:文件名,可用于文件重命名
+* [from](./types/Path.md)
+ > 源文件, 要复制的文件。
+* [to](./types/Path.md)
+ > 目标位置(文件夹),如果为空,使用流程所在的位置
+* [filename](./types/String.md)
+ > 文件名,包含扩展名,可用于文件重命名。如果为空,和源文件的文件名称一致。
## 输出
-
+> 目标位置的文件全路径。[Path](./types/Path.md), 文件路径。
## 脚本调用
```python
import simple;
-
+r = simple.CopyFileRunner()
+r.from = 'C:\Users\\shell\\Desktop\\abc.txt'
+r.to = 'C:\Users\\shell\\Download'
+r.run()
```
-## 示例
\ No newline at end of file
+
+## 资源
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/CopyFile.simple
+
+
+
+
+
+!> 不可复制文件夹
\ No newline at end of file
diff --git a/docx/actions/filesystem/DirectoryIterator.md b/docx/actions/filesystem/DirectoryIterator.md
index 7377d433..438b5f7c 100644
--- a/docx/actions/filesystem/DirectoryIterator.md
+++ b/docx/actions/filesystem/DirectoryIterator.md
@@ -1,26 +1,56 @@
-# 遍历文件夹
-遍历文件夹
+# 遍历文件
+遍历本地文件夹当中的所有文件。
+
+
+## 权限
+> 无要求
## 子流程
-> 支持
+> 支持, 每个被被遍历到的文件或文件夹传入子流程
## 运行参数
-* Folder:文件夹
-* Recursive:是否递归遍历
+* [path](./types/Path.md)
+ > 要遍历的文件夹
+* [recursive](./types/Boolean.md)
+ > 是否递归遍历, 默认 `False`。
+
+ * 扩展名 [`extensions`](./types/String.md)
+> 根据文件扩展名过滤,多个扩展名使用 `,` 、`;` 或者 `|` 分隔。
+* [async](./types/Boolean.md)
+ > 是否异步处理子流程,也就是开启线程处理子流程。默认 `False`,不支持在脚本中使用。
## 输出
-
+> 返回遍历到的所有文件路径。[Paths](./types/Path.md) ,路径列表。
## 脚本调用
```python
-import simple;
+import * from simple;
+
+def cbk(path):
+ simple.info(path)
+
+r = DirectoryIteratorRunner('C:\Users\\shell\\Download')
+r.run(cbk)
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/DirectoryIterator.simple
+
+
+
+
+
+
+
+## 版本变化
+
+* 0.45
+> 增加 *扩展名过滤* 参数。
\ No newline at end of file
diff --git a/docx/actions/filesystem/FileQuery.md b/docx/actions/filesystem/FileQuery.md
index 5d079a1b..bd3e06f9 100644
--- a/docx/actions/filesystem/FileQuery.md
+++ b/docx/actions/filesystem/FileQuery.md
@@ -1,26 +1,40 @@
# 搜索文件
-搜索文件
+搜索本地磁盘上的文件。
+
+
+## 权限
+> 无要求
## 子流程
> 不支持
## 运行参数
-* Pattern: 路径规则。
-* Options:选项
+* [path](./types/String.md)
+ > 搜索路径。支持 *glob* 匹配。默认值 `*`,从当前目录查找所有文件。 参考:[Glob模式匹配](./introduction/workflow/glob.md)
+* [options](./enums/GlobOptions.md)
+ > 匹配行为
## 输出
-
+> 返回匹配到的所有文件路径。[Paths](./types/Path.md),即路径列表
## 脚本调用
```python
-import simple;
+import * from simple;
+r = FileQueryRunner('*')
+r.option = GlobOptions.Caseless
+r.run()
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/FileQuery.simple
+
+
+
diff --git a/docx/actions/filesystem/FileRead.md b/docx/actions/filesystem/FileRead.md
index add9a6a2..a6c94582 100644
--- a/docx/actions/filesystem/FileRead.md
+++ b/docx/actions/filesystem/FileRead.md
@@ -1,25 +1,36 @@
# 读取文件
-读取文件
+读取文件,可以读取二进制文件或者文本文件。
+
+## 权限
+> 无要求
## 子流程
> 不支持
## 运行参数
-* File:文件路径
+* [文件](./types/Path.md):文件所在的路径
## 输出
-
+> 文件内容,[*字符串*](./types/String.md)
## 脚本调用
+> 无导出,参考[File](./types/File.md)
```python
-import simple;
+import simple
+
```
-## 示例
\ No newline at end of file
+## 资源
+
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/FileRead.simple
+
+
+
diff --git a/docx/actions/filesystem/FileWrite.md b/docx/actions/filesystem/FileWrite.md
index 3182c081..279c8824 100644
--- a/docx/actions/filesystem/FileWrite.md
+++ b/docx/actions/filesystem/FileWrite.md
@@ -1,27 +1,36 @@
# 文件写入
-文件写入
+把文本信息写入本地文件,也就是保存到电脑磁盘上面。
+
+
+## 权限
+> 无要求
## 子流程
> 不支持
## 运行参数
-* Value:写入的内容
-* Folder:文件保存的位置
-* Name:文件名称
-
+* [文本](./types/String.md):写入的内容
+* [目录](./types/Path.md):文件保存的位置, 如果为空,使用当前路径,即工作流程所在的路径。
+* [名称](./types/String.md):文件名称,可为空,默认值:**.txt*, 生成以如: *2023-02-28_756046.txt* 为名称的文件,其中 *.txt* 为 扩展名,可以更换其它有效文件名。
## 输出
-
+> 写入文件的全路径 [`Path`](./types/Path.md)
## 脚本调用
+> 无导出,参考[File](./types/File.md)
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/FileWrite.simple
+
+
+
diff --git a/docx/actions/filesystem/ImageLoad.md b/docx/actions/filesystem/ImageLoad.md
index 11f233ef..f08280f8 100644
--- a/docx/actions/filesystem/ImageLoad.md
+++ b/docx/actions/filesystem/ImageLoad.md
@@ -1,25 +1,35 @@
# 加载图像
从本地磁盘加载图像
+
+
+## 权限
+> 无要求
+
## 子流程
> 不支持
## 运行参数
-* Image:图像
+* 图像路径
## 输出
-
+> [Image](./types/Image.md)
## 脚本调用
-
+> 无导出,参考[Image](./types/Image.md)
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/ImageLoad.simple
+
+
+
diff --git a/docx/actions/filesystem/ImageSave.md b/docx/actions/filesystem/ImageSave.md
index 95fe323b..43b707e6 100644
--- a/docx/actions/filesystem/ImageSave.md
+++ b/docx/actions/filesystem/ImageSave.md
@@ -1,27 +1,37 @@
# 保存图片
-把流程当中的图片类型保存到本地磁盘上面。
-
-
+把图片类型的数据保存到本地磁盘上,比如截图相关动作。
+
+## 权限
+> 无要求
## 子流程
> 不支持
## 运行参数
-* Image: 需要保存的图片。
-* Folder: 保存的目录。
-* Filename: 保存的文件名,如果为空,表示使用当前时间作为文件名。
+* [图像](./types/Image.md)
+ > 需要保存图像的动作,或者包含[图像](./types/Image.md)的变量。
+* [目录](./types/Path.md)
+ > 文件保存的位置, 如果为空,使用当前路径,即工作流程所在的路径。
+* [名称](./types/String.md)
+ > 文件名称,可为空,默认值:**.png*, 生成以如: *2023-02-28_756046.png* 为名称的文件,其中 *.png* 为图像扩展名,可以更换其它有效文件名。
+
-## 输出: 保存的文件的完整路径。`Path`
+## 输出
+> 保存的图像的完整路径。[`Path`](./types/Image.md)
## 脚本调用
+> 无导出,参考[Image](./types/Image.md)
```python
import simple;
```
-## 示例
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/ImageSave.simple
+
+
-[https://github.com/shelllet/WinUi/blob/main/filesystem/image_save.simple](https://github.com/shelllet/WinUi/blob/main/filesystem/image_save.simple)
diff --git a/docx/actions/filesystem/ReadLines.md b/docx/actions/filesystem/ReadLines.md
index 79fed29d..2073d877 100644
--- a/docx/actions/filesystem/ReadLines.md
+++ b/docx/actions/filesystem/ReadLines.md
@@ -1,26 +1,45 @@
-# 读取多行文件
-读取多行文件
+# 按行读取
+读取文本文件,并根据换行符 `\r\n`,拆分成多行字符串,也就是字符串列表。
-## 子流程
-> 不支持
+
+## 权限
+> 无要求
-## 运行参数
+## 子流程
+> 支持,每行字符串会传入子流程
-* File: 文件
+## 运行参数
+* [file](./types/Path.md)
+> 文件路径
+* 异步处理子流程
+> 默认不开线程处理子流程,脚本中不支持此参数。
## 输出
-
+> [Strings](./types/String.md),字符串列表。
## 脚本调用
```python
-import simple;
+import * from simple;
+
+def cbk(line):
+ simple.info(line)
+
+r = ReadLinesRunner("C:\\Users\\shell\\Desktop\\abc.txt")
+# r.file = "C:\\Users\\shell\\Desktop\\abc.txt"
+r.run(cbk)
+
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/ReadLines.simple
+
+
+
diff --git a/docx/actions/filesystem/StandardPath.md b/docx/actions/filesystem/StandardPath.md
new file mode 100644
index 00000000..ab535149
--- /dev/null
+++ b/docx/actions/filesystem/StandardPath.md
@@ -0,0 +1,26 @@
+# 标准路径
+用来表示本地文件系统上约定俗成的标准路径位置的功能,例如特定于用户目录下的 *图像* 目录、*下载* 目录等。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 类型
+
+> 参考:[KnownFolder](../enums/KnownFolder.md)
+
+## 输出
+
+> 路径,参考:[Path](./types/Path.md)。
+
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/filesystem/ImageSave.simple
+
+
+
diff --git a/docx/actions/filesystem/images/01.png b/docx/actions/filesystem/images/01.png
new file mode 100644
index 00000000..08edb43e
Binary files /dev/null and b/docx/actions/filesystem/images/01.png differ
diff --git a/docx/actions/filesystem/images/02.png b/docx/actions/filesystem/images/02.png
new file mode 100644
index 00000000..72f7699c
Binary files /dev/null and b/docx/actions/filesystem/images/02.png differ
diff --git a/docx/actions/filesystem/images/03.png b/docx/actions/filesystem/images/03.png
new file mode 100644
index 00000000..100161db
Binary files /dev/null and b/docx/actions/filesystem/images/03.png differ
diff --git a/docx/actions/filesystem/images/04.png b/docx/actions/filesystem/images/04.png
new file mode 100644
index 00000000..ab1e1b99
Binary files /dev/null and b/docx/actions/filesystem/images/04.png differ
diff --git a/docx/actions/filesystem/images/05.png b/docx/actions/filesystem/images/05.png
new file mode 100644
index 00000000..69031ec0
Binary files /dev/null and b/docx/actions/filesystem/images/05.png differ
diff --git a/docx/actions/filesystem/images/06.png b/docx/actions/filesystem/images/06.png
new file mode 100644
index 00000000..f0c8f7cc
Binary files /dev/null and b/docx/actions/filesystem/images/06.png differ
diff --git a/docx/actions/filesystem/images/07.png b/docx/actions/filesystem/images/07.png
new file mode 100644
index 00000000..6c2a4afe
Binary files /dev/null and b/docx/actions/filesystem/images/07.png differ
diff --git a/docx/actions/filesystem/images/08.png b/docx/actions/filesystem/images/08.png
new file mode 100644
index 00000000..21ce99da
Binary files /dev/null and b/docx/actions/filesystem/images/08.png differ
diff --git a/docx/actions/filesystem/images/image.png b/docx/actions/filesystem/images/image.png
new file mode 100644
index 00000000..4289e995
Binary files /dev/null and b/docx/actions/filesystem/images/image.png differ
diff --git a/docx/actions/image/AdaptiveThreshold.md b/docx/actions/image/AdaptiveThreshold.md
index 208a07ff..60ea1881 100644
--- a/docx/actions/image/AdaptiveThreshold.md
+++ b/docx/actions/image/AdaptiveThreshold.md
@@ -1,5 +1,13 @@
# 自适应阈值
-自适应阈值是针对较小的区域计算阈值,因此对于不同的区域会有不同的阈值。
+自适应阈值是将灰度图像转换为二值图像。是局部阈值,是针对较小的区域计算阈值,因此对于不同的区域会有不同的阈值。
+
+全局阈值并不是对所有图像都表现良好,特别是当图像在不同区域具有不同的光照条件时。在这种情况下,我们采用自适应阈值。
+
+自适应阈值处理每个像素的阈值是根据其周围的小区域单独确定的。因此,我们针对图像的不同区域获得不同的阈值,因此该方法在具有不同光照的图像上表现良好。
+
+通常在使用该动作前,将图像转换成灰度图像(单通道图像)。
+
+
## 子流程
> 不支持
@@ -7,14 +15,20 @@
## 运行参数
-* Image: 执行阈值操作的图像
-* Value: 填充像素值,范围(0 -255)
-* BlockSize: 确定邻域区域的大小,用来计算阈值
-* Type:要应用的阈值类型[ThresholdTypes](../../enums/ThresholdTypes.md)
+* 图像
+> 执行阈值操作的图像
+* 值
+> 填充像素值,范围(0 -255)
+* 块
+ > 确定邻域区域的大小,用来计算阈值
+* 常数
+> 减去的一个常数。通常,它是正值,但也可能为零或负值。
+* 类型
+> 要应用的阈值类型, 参考[ThresholdTypes](./enums/ThresholdTypes.md)
## 输出
-> [`Image`](../../types/Image.md)。
+> 经过阈值操作之后的图像 [`Image`](./types/Image.md)。
@@ -25,4 +39,9 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/AdaptiveThreshold.simple
+
+
+
diff --git a/docx/actions/image/CenterCropImage.md b/docx/actions/image/CenterCropImage.md
index a77b7621..4e6e7341 100644
--- a/docx/actions/image/CenterCropImage.md
+++ b/docx/actions/image/CenterCropImage.md
@@ -1,5 +1,7 @@
-# 裁切图片
-从中心位置开始裁切图片。
+# 中心裁切
+从图像中心位置按照指定的大小,裁切图片。
+
+
## 子流程
> 不支持
@@ -7,9 +9,10 @@
## 运行参数
-* Image 源图像
-* [Size](../../types/Size.md): 截取图像大小
+* 源图像
+* 图像大小
+> 参考 [Size](./types/Size.md)
## 输出
@@ -23,4 +26,11 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/CenterCropImage.simple
+
+
+
+
+
diff --git a/docx/actions/image/ConnectedComponents.md b/docx/actions/image/ConnectedComponents.md
new file mode 100644
index 00000000..70ca1cf7
--- /dev/null
+++ b/docx/actions/image/ConnectedComponents.md
@@ -0,0 +1,41 @@
+# 连通域分析
+对图像中 *斑点* 状区域的连通性进行分析过滤,找到符合条件的连通区域。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 源图像
+> 常是单通道的二值化图像。
+* 宽度
+> 指定斑点的宽度范围,默认值为空,不进行过滤。
+* 高度
+> 指定斑点的高度范围,默认值为空,不进行过滤。
+* 面积
+> 指定斑点的面积范围, 默认值为空,不进行过滤。
+
+
+## 输出
+
+> 过滤后的图像,图像大小保持不变。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ConnectedComponents.simple
+
+
+
+
+
diff --git a/docx/actions/image/CropImage.md b/docx/actions/image/CropImage.md
index de553d24..4b12a89c 100644
--- a/docx/actions/image/CropImage.md
+++ b/docx/actions/image/CropImage.md
@@ -1,7 +1,7 @@
# 裁切图片
-该动作可以在一张图片上选择一块区域,进行裁切。
+该动作可以根据设置的裁切区域,从源图中获取一部分图像。
-
+
## 子流程
@@ -9,11 +9,14 @@
## 运行参数
-* Image: 源图像。
-* [Roi](../../types/Rect.md): 裁切的区域
+* 源图像
-## 输出裁切的子图像
+* 裁切的区域
+> 参考:[Rect](./types/Rect.md)
+## 输出
+
+> 裁切后的子图像。
## 脚本调用
@@ -22,7 +25,11 @@ import simple;
```
-## 示例
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/CropImage.simple
+
+
+
-[https://github.com/shelllet/WinUi/blob/main/image/crop.simple](https://github.com/shelllet/WinUi/blob/main/image/crop.simple)
diff --git a/docx/actions/image/CvtColor.md b/docx/actions/image/CvtColor.md
index 6414d4c5..1c069e69 100644
--- a/docx/actions/image/CvtColor.md
+++ b/docx/actions/image/CvtColor.md
@@ -1,5 +1,8 @@
# 颜色转换
-对图像进行颜色转换
+对图像进行颜色转换,比如将彩色图转化为灰度图。转换为灰度图,可以提高图像算法的处理速度。
+
+
+
## 子流程
> 不支持
@@ -7,9 +10,10 @@
## 运行参数
-* Image: 源图像
-* [Color](../../enums/ColorConversionCodes.md):颜色转换类型
-
+* 源图像
+
+* 转换代码
+> 可参考[ColorConversionCodes](./enums/ColorConversionCodes.md)
## 输出
@@ -23,4 +27,10 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/CvtColor.simple
+
+
+
+
diff --git a/docx/actions/image/ImageBlur.md b/docx/actions/image/ImageBlur.md
index e0ec1774..0c5a5977 100644
--- a/docx/actions/image/ImageBlur.md
+++ b/docx/actions/image/ImageBlur.md
@@ -1,5 +1,11 @@
-# 模糊
-图像模糊
+# 平滑/模糊
+平滑和模糊是所有计算机视觉和图像处理中最重要的预处理步骤之一。通过在应用边缘检测或阈值处理等技术之前对图像进行平滑处理,我们能够减少高频内容的数量,例如噪声和边缘(即图像的“细节”)。
+
+虽然这听起来可能违反直觉,但通过减少图像中的细节,我们可以更轻松地找到我们感兴趣的对象。
+
+一般来说,建议从高斯模糊开始,并根据需要调整参数。虽然高斯模糊比简单的平均模糊稍慢(仅慢一小部分),但高斯模糊往往会给出更好的结果,尤其是在应用于自然图像时。
+
+
## 子流程
> 不支持
@@ -7,13 +13,23 @@
## 运行参数
-* Kernel: 内核大小,内核越大,图像看起来就越模糊。
+* 内核
+> 内核越大,图像看起来就越模糊。对于 *Bilateral*,忽略此参数。对于 *Gaussian*, 此值必须是大于 1 的奇数。
+* 直径
+> 此值定义像素邻域的直径。直径越大,模糊计算中包含的像素就越多。 该参数仅应用于 *Bilateral*。预设使用 5,数值越大运算的速度越慢。
-## 输出
+* 颜色标准差
+> 较大的值意味着在计算模糊时将考虑邻域中的更多颜色。 该参数仅应用于 *Bilateral*。
-
+* 空间标准差
+> 较大的值意味着距离中心像素直径较远的像素将影响模糊计算。 该参数仅应用于 *Bilateral*。
+>
+* 方法
+> 参考 [BlurOperation](./enums/BlurOperation.md)
+## 输出
+> 过滤后的图像。
## 脚本调用
@@ -22,4 +38,9 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageBlur.simple
+
+
+
diff --git a/docx/actions/image/ImageCanny.md b/docx/actions/image/ImageCanny.md
index bc508a5c..7bc426be 100644
--- a/docx/actions/image/ImageCanny.md
+++ b/docx/actions/image/ImageCanny.md
@@ -1,5 +1,7 @@
# 边缘检测
-边缘检测
+边缘检测是将图像中的边缘提取出来,作为后续图像处理和应用的的一个重要环节。通常,我们所看到的图像都不是完美无缺的,而是包含许多噪声、干扰等,因此需要将这些噪声去除,只保留图像中的边缘信息。边缘检测的主要目的是提高图像的清晰度和对比度,从而更好地理解图像中的内容。
+
+
## 子流程
> 不支持
@@ -7,8 +9,10 @@
## 运行参数
-* Image:图像
-* Thresold: 阈值,用來區分 *strong edge* 和 *weak edge*,范围是 0 ~ 255。
+* 图像
+
+* 阈值
+ > 用來區分 *strong edge* 和 *weak edge*,范围是 0 ~ 255。
## 输出
@@ -23,4 +27,11 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageCanny.simple
+
+
+
+
+
diff --git a/docx/actions/image/ImageInRange.md b/docx/actions/image/ImageInRange.md
index 5a9e6a5b..6940aa4b 100644
--- a/docx/actions/image/ImageInRange.md
+++ b/docx/actions/image/ImageInRange.md
@@ -1,5 +1,7 @@
# 颜色筛选
-指定一个色彩范围,抓取影像中符合色彩范围内的颜色,透过这个方式,就可以筛选出影像中的特定颜色物件。
+指定一个色彩范围,保留图像中符合色彩范围内的颜色,透过这个方式,就可以筛选出图像中的特定颜色物件。
+
+
## 子流程
> 不支持
@@ -7,9 +9,13 @@
## 运行参数
-* Image:输入图像
-* Lower:色彩范围最低数值
-* Upper:色彩范围最高数值
+* 图像
+> 单通道图像,或者3通道 *RGB* 彩色图像,对于彩色图像通常将图像由 *RGB* 转换成 *HSV* 颜色空间,再进行颜色筛选。
+* 最小值
+ > 色彩范围最低数值,低于该值的颜色值会被置为 *0*, 即会被去除。
+
+* 最大值
+ > 色彩范围最高数值, 高于该值的颜色值会被置为 *0*,即会被去除。
## 输出
@@ -24,4 +30,16 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+
+!> 对于 *RGB* 颜色空间的图像,最小值中的 (*R* *G* *B*) 必须分别小于最大值中的 (*R* *G* *B*)。
+
+!> 对于 *HSV* 颜色空间的图像,最小值中的 (*H* *S* *V*) 必须分别小于最大值中的 (*H* *S* *V*)。
+
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageInRange.simple
+
+
+
+
diff --git a/docx/actions/image/ImageMarkROI.md b/docx/actions/image/ImageMarkROI.md
index c90eb201..641b24ec 100644
--- a/docx/actions/image/ImageMarkROI.md
+++ b/docx/actions/image/ImageMarkROI.md
@@ -1,6 +1,11 @@
-# 标记ROI
+# 标记区域
-标记图片感兴趣的区域,比如在找图时,只从该区域查找图片。
+标记图片感兴趣的区域,比如在找图时,只从该区域查找图片,可以加快查图速度。这个动作不改变图像尺寸。
+
+
+
+## 权限
+> 无要求
## 子流程
> 不支持
@@ -8,19 +13,20 @@
## 运行参数
-* Image:输入图像
-* Rect:矩形框
+* 图像
+> 待处理的图像
+* 区域
+> 需要操作的区域,参考:[RelativePosition](./enums/RelativePosition.md)。
-## 输出
+
+## 输出
+> 标记后的图像,图像大小保持不变。
+## 资源
-## 脚本调用
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageMarkROI.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/image/ImageMarkRelativeROI.md b/docx/actions/image/ImageMarkRelativeROI.md
new file mode 100644
index 00000000..c4e42b35
--- /dev/null
+++ b/docx/actions/image/ImageMarkRelativeROI.md
@@ -0,0 +1,47 @@
+# 标记相对区域
+
+根据相对位置,标记图片感兴趣的区域,比如在找图时,只从该区域查找图片,可以加快查图速度。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 图像
+ > 输入图像
+* 相对位置
+> 坐标原点位置。参考 [RelativePosition](./enums/RelativePosition.md),不同的位置,坐标轴方向不一样。参考下图
+
+
+
+
+* 偏移
+> 原点偏移量(坐标系参考上图)。坐标轴(x, y)方向参考上面草图。如果选择 *Center*,原点对应图像的中心位置,*TopLeft* 对应图像的左上角,*TopRight* 对应图像的右上角,*BottomLeft* 对应图像的左下角,*BottomRight* 对应图像的右下角。
+
+* 尺寸
+> 标记区域图像的大小, 参考[Size](./types/Size.md)。如果相对位置选择 *中心位置*, 原点坐标为图像的中心坐标。其它情况,原点为图像的左上角坐标。
+
+
+## 输出
+
+> 标记后的图像,图像大小保持不变。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageMarkRelativeROI.simple
+
+
+
diff --git a/docx/actions/image/ImageMean.md b/docx/actions/image/ImageMean.md
new file mode 100644
index 00000000..1155cefc
--- /dev/null
+++ b/docx/actions/image/ImageMean.md
@@ -0,0 +1,97 @@
+# 均值
+
+均值操作是图像预处理里非常关键的步骤,主要目的是消除图像数据中的偏差,让模型能够更稳定地学习。
+
+### 原理
+
+在深度学习中,模型训练时使用的图像数据往往会经过预处理,其中均值操作是重要的一环。具体做法是,从图像的每个像素值里减去预先计算好的均值。这样做可以把图像数据的中心调整到零附近,从而加快模型的收敛速度,还能提升模型的稳定性。
+
+### 使用场景
+
+* 模型训练:在训练深度学习模型时,通常会对训练数据计算均值,然后在训练和推理阶段都进行减去均值的操作,保证数据的一致性。
+* 模型推理:在使用预训练模型进行推理时,需要按照模型训练时的预处理方式,对输入图像进行减去均值的操作,这样才能得到准确的结果。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 待处理的图像。
+* 均值
+> 每个通道的均值,默认(0.485, 0.456, 0.406),对应 *RGB* 格式的图像。前提是图像像素已缩放至 *0~1*。如果图像像素没有缩放(图像默认像素范围是 *0~255*),则使用类似:`(0.485, 0.456, 0.406)* 255 =(123.680,116.779, 103.939)` 值。
+
+
+
+## 输出
+
+> 均值后的的图像,参考 [`Image`](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+!> 如果将默认均值应用到您自己的数据集中,可能不会获得良好的性能,因为这些统计数据属于 *ImageNet*, 您需要根据不同的预训练的深度学习模型,使用不同的均值。
+
+
+### [how to calculate the mean and std in the DataLoader? Here I give two ways](https://xydida.com/2022/9/11/ComputerVision/Normalize-images-with-transform-in-pytorch-dataloader/):
+
+1. Calculate mean and std of the three channels in each batch and average them at the end.
+
+```
+
+def mean_std_for_loader1(loader: DataLoader):
+ mean = torch.zeros(3)
+ std = torch.zeros(3)
+ for X, _ in loader:
+ for d in range(3):
+ mean[d] += X[:, d, :, :].mean()
+ std[d] += X[:, d, :, :].std()
+ mean.div_(len(loader))
+ std.div_(len(loader))
+ return list(mean.numpy()), list(std.numpy())
+
+means, stds = mean_std_for_loader1(train_dataloader)
+print(means)
+print(stds)
+
+# Output
+# [0.47921667, 0.44638008, 0.40927842]
+# [0.26486507, 0.25691825, 0.2580299]
+```
+
+2. The std can be derivated from the mean of square of the data and square of the mean of the data, this is referenced from Jorrit Willaert [1]. Here is the formula:
+
+```
+def mean_std_for_loader(loader: DataLoader):
+ # var[X] = E[X**2] - E[X]**2
+ channels_sum, channels_sqrd_sum, num_batches = 0, 0, 0
+ for data, _ in tqdm(loader):
+ this_batch_size = data.size()[0]
+ weight = this_batch_size / loader.batch_size
+ channels_sum += weight*torch.mean(data, dim=[0, 2, 3])
+ channels_sqrd_sum += weight*torch.mean(data ** 2, dim=[0, 2, 3])
+ num_batches += weight
+
+ mean = channels_sum / num_batches
+ std = (channels_sqrd_sum / num_batches - mean ** 2) ** 0.5
+ return mean, std
+
+means, stds = mean_std_for_loader(train_dataloader)
+print(means)
+print(stds)
+
+# Output
+# tensor([0.4786, 0.4459, 0.4088])
+# tensor([0.2656, 0.2577, 0.2589])
+```
\ No newline at end of file
diff --git a/docx/actions/image/ImageMorphological.md b/docx/actions/image/ImageMorphological.md
index 799dfbd4..e48dc1cb 100644
--- a/docx/actions/image/ImageMorphological.md
+++ b/docx/actions/image/ImageMorphological.md
@@ -2,17 +2,20 @@
形态学操作是一组基于形状处理图像的操作。他们将结构化元素应用于输入图像并生成输出图像。
-最基本的形态学操作有两种:侵蚀和膨胀
+最基本的形态学操作有两种:侵蚀和膨胀
-侵蚀作用:
+1. 侵蚀作用:
-* 侵蚀掉前景对象的边界
-* 用于减少图像的特征。
+ * 侵蚀掉前景对象的边界
+ * 用于减少图像的特征。
-膨胀的作用:
+2. 膨胀的作用:
-* 增加物体面积
-* 用于强调特征
+ * 增加物体面积
+ * 用于强调特征
+
+
+
## 子流程
> 不支持
@@ -20,22 +23,23 @@
## 运行参数
-* Image:输入图像
-* Kernel:卷积核大小
-* Operation:操作, 腐蚀或者膨胀
+* 图像
+> 待处理图像
+* 内核
+> 卷积核大小。 可以通过预览,调整此参数为合适的值。
+
+* 操作
+ > 腐蚀或者膨胀, 参考 [MorphologicalOperations](./enums/MorphologicalOperations.md)
## 输出
-
+
+## 资源
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageMorphological.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/image/ImageNormalize.md b/docx/actions/image/ImageNormalize.md
new file mode 100644
index 00000000..43ad98aa
--- /dev/null
+++ b/docx/actions/image/ImageNormalize.md
@@ -0,0 +1,44 @@
+# 像素归一化
+
+像素归一化指的是把图像像素值调整到特定范围的操作。像素归一化在图像处理和机器学习领域十分重要,像在深度学习模型输入时,为了让模型更稳定地学习,通常需要将图像像素值归一化到 [0, 1] 或者 [-1, 1] 范围。
+
+### 像素归一化的概念和作用
+
+* 数据缩放
+
+ * 深度神经网络通常对输入数据的范围很敏感。像素归一化可以将像素值从其原始范围(通常是 [0, 255])缩放到一个更小的范围,从而提高模型的稳定性和性能。
+
+* 提高模型性能
+ * 通过将像素值归一化,可以减少输入数据的方差,使模型更容易学习和收敛。
+ * 这有助于模型更好地泛化,并减少对输入数据中特定亮度或颜色变化的敏感性。
+
+* 匹配模型训练
+ * 用于推理的像素归一化方法必须与用于训练模型的像素归一化方法相匹配。否则,模型的性能可能会显著下降。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 待处理的图像。
+* 比例
+> 缩放比例因子,默认*1 / 255.0)=0.003921568627451*。大多数时候,作为模型输入时,通常需要将图像像素值缩小到 *0~1*的浮点数,而不是 *0~255* 之间的整数。
+
+## 输出
+
+> 归一化后的图像,参考: [`Image`](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
diff --git a/docx/actions/image/ImageRotate.md b/docx/actions/image/ImageRotate.md
new file mode 100644
index 00000000..d2aab5ba
--- /dev/null
+++ b/docx/actions/image/ImageRotate.md
@@ -0,0 +1,32 @@
+# 图像旋转
+指定旋转中心和角度,旋转图像。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+>
+* 旋转中心
+> 默认以图像中心进行旋转。
+
+* 角度
+> 旋转角度, 0° ~ 360°之间,逆时针旋转。 -0° ~ -360°之间,顺时针旋转。
+
+
+## 输出
+
+> 旋转后的图像
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/RotateImage.simple
+
+
+
+
+
diff --git a/docx/actions/image/ImageScale.md b/docx/actions/image/ImageScale.md
new file mode 100644
index 00000000..204a9455
--- /dev/null
+++ b/docx/actions/image/ImageScale.md
@@ -0,0 +1,31 @@
+# 缩放图像
+调整图像尺寸,该动作会根据所设置的缩放比例,调整图像。如果调整比例大于 `1`,会放大图像,如果缩放比例小于 `1`, 则会缩小图像。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+
+* 水平比例
+> 水平方向的缩放比例。
+* 垂直比例
+> 垂直方向的缩放比例。
+
+## 输出
+
+> 缩放后的图像,参考:[Image](./types/Image.md) 。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/scale.simple
+
+
+
diff --git a/docx/actions/image/ImageStd.md b/docx/actions/image/ImageStd.md
new file mode 100644
index 00000000..8d4af1c1
--- /dev/null
+++ b/docx/actions/image/ImageStd.md
@@ -0,0 +1,47 @@
+# 标准差
+
+在使用 深度神经网络推理时,*标准差*(standard deviation)通常与 *均值*(mean)一起使用,作为图像预处理的一部分。
+
+### 标准差的概念和作用
+
+* 数据标准化
+ * 除了减去均值之外,还可以将像素值除以标准差,以进一步标准化数据。
+ * 这有助于确保每个颜色通道的像素值都具有相似的比例,从而提高模型的稳定性。
+ * 完整的标准化操作通常是 (像素值 - 均值) / 标准差。
+* 提高模型性能
+ * 通过标准化数据,可以减少输入数据的方差,使模型更容易学习和收敛。
+ * 这有助于模型更好地泛化,并减少对输入数据中特定亮度或颜色变化的敏感性。
+
+* 匹配模型训练
+ * 用于推理的标准差必须与用于训练模型的标准差相匹配。否则,模型的性能可能会显著下降。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 图像
+> 待处理的图像。
+* 值
+> 每个通道的标准差,默认(0.229, 0.224, 0.225),对应 *RGB* 格式的图像,并且图像像素已经缩放至 *(0~1)*。
+
+## 输出
+
+> 计算过后的的图像 [`Image`](./types/Image.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+
+!> 常见 ImageNet 标准差: 当像素值被缩放到 [0, 1] 范围后,常用的标准差(对应均值 [0.485, 0.456, 0.406])是 [0.229, 0.224, 0.225] (RGB顺序)
\ No newline at end of file
diff --git a/docx/actions/image/ImageThreshold.md b/docx/actions/image/ImageThreshold.md
index de9a27b0..898c1307 100644
--- a/docx/actions/image/ImageThreshold.md
+++ b/docx/actions/image/ImageThreshold.md
@@ -1,7 +1,13 @@
-# 阈值
-该动作可以对图像进行阈值化操作。在该阈值操作中,值大于指定阈值的像素被分配一个标准值。该阈值操作是全局的,即图像中的所有像素都使用相同的阈值。
+# 阈值操作
+对图像进行阈值操作,可以将灰度图像转换为二值图像,是全局操作。该阈值操作是全局的,即图像中的所有像素都使用相同的阈值。
-
+可用于多通道图像(如 *RGB*图像,操作后的图像仍然是 *RGB* 三通道图像),通常在使用该动作前,将图像转换成灰度图像(单通道图像)。
+
+在该阈值操作中,值大于指定阈值的像素被分配一个标准值。
+
+该动作主要用来进行噪声、干扰像素过滤。
+
+
## 子流程
@@ -9,13 +15,17 @@
## 运行参数
-* Image: 要执行二值化操作的图像。
-* Threshold:阈值。范围(0 - 255),低于和高于阈值的像素值将相应改变。如果`Type`选择`BINARY`。低于该值的。像素被置为黑色。高于该阈值的, 则填充为`Value` 表示的颜色, 如果type选择`BINARY_INV`,则反之。
-* Value:填充像素值。范围(0 -255)
-* Type:要应用的阈值类型[ThresholdTypes](../../enums/ThresholdTypes.md)
+* 图像:
+ > 要执行阈值操作的图像。
+* 阈值
+ > 范围(0 - 255),低于和高于阈值的像素值将相应改变。如果操作方式选择`BINARY`。低于该值的。像素被置为黑色。高于该阈值的, 则填充为所设置的颜色, 如果操作类型选择`BINARY_INV`,则反之。
+* 值
+ > 填充像素值。范围(0 -255)
+* 类型
+ > 参考[ThresholdTypes](./enums/ThresholdTypes.md)
## 输出
-> [`Image`](../../types/Image.md)。
+> 阈值操作后的图像。参考[`Image`](./types/Image.md)。
## 脚本调用
@@ -25,8 +35,13 @@ import simple;
```
-## 示例
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ImageThreshold.simple
+
+
+
+
-[https://github.com/shelllet/WinUi/blob/main/image/threshold.simple](https://github.com/shelllet/WinUi/blob/main/image/threshold.simple)
diff --git a/docx/actions/image/ResizeImage.md b/docx/actions/image/ResizeImage.md
index efd3786a..60f469c9 100644
--- a/docx/actions/image/ResizeImage.md
+++ b/docx/actions/image/ResizeImage.md
@@ -1,5 +1,7 @@
# 调整尺寸
-调整尺寸
+调整图像尺寸,该动作会根据所设置的尺寸,缩放图像。如果尺寸比源图像大,会放大图像,如果 尺寸比源图像小则会缩小图像。
+
+
## 子流程
> 不支持
@@ -7,20 +9,21 @@
## 运行参数
-* Image:图像
-* Size:尺寸
+* 图像
+
+* 尺寸
## 输出
-
+> 缩放后的图像,参考:[Image](./types/Image.md) 。
+
+
+## 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/image/ResizeImage.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/image/images/01.png b/docx/actions/image/images/01.png
new file mode 100644
index 00000000..56e688cd
Binary files /dev/null and b/docx/actions/image/images/01.png differ
diff --git a/docx/actions/image/images/02.png b/docx/actions/image/images/02.png
new file mode 100644
index 00000000..f49ace18
Binary files /dev/null and b/docx/actions/image/images/02.png differ
diff --git a/docx/actions/image/images/03.png b/docx/actions/image/images/03.png
new file mode 100644
index 00000000..c667297c
Binary files /dev/null and b/docx/actions/image/images/03.png differ
diff --git a/docx/actions/image/images/04.png b/docx/actions/image/images/04.png
new file mode 100644
index 00000000..fd2cc539
Binary files /dev/null and b/docx/actions/image/images/04.png differ
diff --git a/docx/actions/image/images/05.png b/docx/actions/image/images/05.png
new file mode 100644
index 00000000..a7c6f2c9
Binary files /dev/null and b/docx/actions/image/images/05.png differ
diff --git a/docx/actions/image/images/06.png b/docx/actions/image/images/06.png
new file mode 100644
index 00000000..6480c7cb
Binary files /dev/null and b/docx/actions/image/images/06.png differ
diff --git a/docx/actions/image/images/07.png b/docx/actions/image/images/07.png
new file mode 100644
index 00000000..530222e4
Binary files /dev/null and b/docx/actions/image/images/07.png differ
diff --git a/docx/actions/image/images/08.png b/docx/actions/image/images/08.png
new file mode 100644
index 00000000..31e521be
Binary files /dev/null and b/docx/actions/image/images/08.png differ
diff --git a/docx/actions/image/images/09.png b/docx/actions/image/images/09.png
new file mode 100644
index 00000000..2842927d
Binary files /dev/null and b/docx/actions/image/images/09.png differ
diff --git a/docx/actions/image/images/10.png b/docx/actions/image/images/10.png
new file mode 100644
index 00000000..4386cb92
Binary files /dev/null and b/docx/actions/image/images/10.png differ
diff --git a/docx/actions/image/images/11.png b/docx/actions/image/images/11.png
new file mode 100644
index 00000000..1e7ddd4b
Binary files /dev/null and b/docx/actions/image/images/11.png differ
diff --git a/docx/actions/image/images/12.png b/docx/actions/image/images/12.png
new file mode 100644
index 00000000..fcbe8a21
Binary files /dev/null and b/docx/actions/image/images/12.png differ
diff --git a/docx/actions/image/images/13.png b/docx/actions/image/images/13.png
new file mode 100644
index 00000000..cd1b172e
Binary files /dev/null and b/docx/actions/image/images/13.png differ
diff --git a/docx/actions/image/images/14.png b/docx/actions/image/images/14.png
new file mode 100644
index 00000000..2a5a240b
Binary files /dev/null and b/docx/actions/image/images/14.png differ
diff --git a/docx/actions/image/images/15.png b/docx/actions/image/images/15.png
new file mode 100644
index 00000000..5906aa05
Binary files /dev/null and b/docx/actions/image/images/15.png differ
diff --git a/docx/actions/image/images/16.png b/docx/actions/image/images/16.png
new file mode 100644
index 00000000..86307ef2
Binary files /dev/null and b/docx/actions/image/images/16.png differ
diff --git a/docx/actions/image/images/17.png b/docx/actions/image/images/17.png
new file mode 100644
index 00000000..b8af1e75
Binary files /dev/null and b/docx/actions/image/images/17.png differ
diff --git a/docx/actions/image/images/18.png b/docx/actions/image/images/18.png
new file mode 100644
index 00000000..c5aea3a3
Binary files /dev/null and b/docx/actions/image/images/18.png differ
diff --git a/docx/actions/json/ReadJson.md b/docx/actions/json/ReadJson.md
deleted file mode 100644
index 04be9913..00000000
--- a/docx/actions/json/ReadJson.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 读取 Json
-读取 Json
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* File:文件
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/keyboard/ListenKeyboard.md b/docx/actions/keyboard/ListenKeyboard.md
index 9e3541e4..bcad4688 100644
--- a/docx/actions/keyboard/ListenKeyboard.md
+++ b/docx/actions/keyboard/ListenKeyboard.md
@@ -1,5 +1,10 @@
# 监听键盘
-监听键盘
+监听键盘按键
+
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用界面发送按键。
## 子流程
> 支持
@@ -7,13 +12,12 @@
## 运行参数
-* Key: 键盘按键
-
+* 按键
## 输出
-
+ > `Connection`
## 脚本调用
@@ -23,4 +27,11 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/ListenKeyboard.simple
+
+
+
+
+
+!> 该动作属于异步动作
\ No newline at end of file
diff --git a/docx/actions/keyboard/PressAndReleaseKey.md b/docx/actions/keyboard/PressAndReleaseKey.md
index b3df1d34..6ec9c9c1 100644
--- a/docx/actions/keyboard/PressAndReleaseKey.md
+++ b/docx/actions/keyboard/PressAndReleaseKey.md
@@ -1,5 +1,10 @@
# 按下并释放
-按下键盘按键一定的时间,然后释放按键
+按下键盘按键并持续一定的时间,然后释放按键
+
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用界面发送按键。
## 子流程
> 不支持
@@ -7,20 +12,25 @@
## 运行参数
-* key:键
-* Time:按下时间
+* 键
+* 按下时间
## 输出
+> 无
## 脚本调用
-
+> 参考 [Keyboard](./types/Keyboard.md)
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/PressAndReleaseKey.simple
+
+
+
diff --git a/docx/actions/keyboard/PressKey.md b/docx/actions/keyboard/PressKey.md
index 54d9388d..0d645b9f 100644
--- a/docx/actions/keyboard/PressKey.md
+++ b/docx/actions/keyboard/PressKey.md
@@ -1,5 +1,10 @@
# 按下按键
-按下按键,不会释放按键
+模拟按下键盘的按键,需要调用 *ReleaseKey* 动作释放按键
+
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用界面发送按键。
## 子流程
> 不支持
@@ -7,19 +12,26 @@
## 运行参数
-* Key:按键
+* [按键](./types/KeySequence.md)
## 输出
+> [WinInput](./types/WinInput.md)
## 脚本调用
+> 参考 [Keyboard](./types/Keyboard.md)
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/PressKey.simple
+
+
+
diff --git a/docx/actions/keyboard/ReleaseKey.md b/docx/actions/keyboard/ReleaseKey.md
index 05b95149..17e78495 100644
--- a/docx/actions/keyboard/ReleaseKey.md
+++ b/docx/actions/keyboard/ReleaseKey.md
@@ -1,18 +1,24 @@
# 释放按键
释放按下的键盘按键
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用界面发送按键。
+
## 子流程
> 不支持
## 运行参数
-* Input: 按下按键的动作
+* Input
+ > 按下按键的动作
## 输出
-
+> 无
## 脚本调用
@@ -22,4 +28,9 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/PressKey.simple
+
+
+
diff --git a/docx/actions/keyboard/SendKey.md b/docx/actions/keyboard/SendKey.md
index 79634dfc..8c0d8028 100644
--- a/docx/actions/keyboard/SendKey.md
+++ b/docx/actions/keyboard/SendKey.md
@@ -1,5 +1,10 @@
# 发送按键
-发送按键
+向当前活动的窗口发送键盘按键
+
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用程序窗口发送按键。
## 子流程
> 不支持
@@ -7,20 +12,28 @@
## 运行参数
-* Key:按键
-* Wait Time:等待时间,如果不为 *0*,则等待所设置的时间之后 ,再继续执行后续动作。
+* 窗口
+> 需要激活的窗口,默认当前激活的窗口。
+* 按键
+> 发送的键盘按键。
+* 延迟
+ > 发送完按键之后所等待的时间,单位:秒
## 输出
+> 发送的键盘按键, 参考:
+
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/SendKey.simple
+
-
-## 脚本调用
-```python
-import simple;
-```
+## 版本变化
-## 示例
\ No newline at end of file
+* 0.31
+> 增加 *窗口* 运行参数。
\ No newline at end of file
diff --git a/docx/actions/keyboard/SendText.md b/docx/actions/keyboard/SendText.md
index b214f75b..90e11bda 100644
--- a/docx/actions/keyboard/SendText.md
+++ b/docx/actions/keyboard/SendText.md
@@ -1,5 +1,10 @@
# 发送文本
-发送文本
+向当前活动的窗口发送文本,通常当前焦点处于文本框,可接受键盘输入。
+
+
+
+## 权限
+> 据 *UIC* 规则,不能向高权限的用户界面发送按键,例如:普通用户启动的 *小友+*, 无法向以管理员方式启动的应用界面发送按键。
## 子流程
> 不支持
@@ -7,20 +12,25 @@
## 运行参数
-* Text:文本
-* Enter:是否自动发送回车键。
+* 文本
+* 发送回车键
+> 发送完文本信息后,是否发送回车按键?默认:不发送。
## 输出
-
-
+> 无
## 脚本调用
-
+> 参考 [Keyboard](./types/Keyboard.md)
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/SendText.simple
+
+
+
diff --git a/docx/actions/keyboard/WaitKey.md b/docx/actions/keyboard/WaitKey.md
new file mode 100644
index 00000000..18c9a37f
--- /dev/null
+++ b/docx/actions/keyboard/WaitKey.md
@@ -0,0 +1,27 @@
+# 等待按键
+暂停动作执行,直到等待的键盘按键被触发,才能继续执行后面的动作。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 按键
+> 键盘按键。
+
+
+## 输出
+
+> 无
+
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/keyboard/waitkey.simple
+
+
+
+
diff --git a/docx/actions/keyboard/images/01.png b/docx/actions/keyboard/images/01.png
new file mode 100644
index 00000000..6e913b1c
Binary files /dev/null and b/docx/actions/keyboard/images/01.png differ
diff --git a/docx/actions/keyboard/images/02.png b/docx/actions/keyboard/images/02.png
new file mode 100644
index 00000000..98acc796
Binary files /dev/null and b/docx/actions/keyboard/images/02.png differ
diff --git a/docx/actions/keyboard/images/03.png b/docx/actions/keyboard/images/03.png
new file mode 100644
index 00000000..5d3be7c4
Binary files /dev/null and b/docx/actions/keyboard/images/03.png differ
diff --git a/docx/actions/keyboard/images/04.png b/docx/actions/keyboard/images/04.png
new file mode 100644
index 00000000..9ec3728b
Binary files /dev/null and b/docx/actions/keyboard/images/04.png differ
diff --git a/docx/actions/keyboard/images/05.png b/docx/actions/keyboard/images/05.png
new file mode 100644
index 00000000..45731cf4
Binary files /dev/null and b/docx/actions/keyboard/images/05.png differ
diff --git a/docx/actions/keyboard/images/06.png b/docx/actions/keyboard/images/06.png
new file mode 100644
index 00000000..37f4f78f
Binary files /dev/null and b/docx/actions/keyboard/images/06.png differ
diff --git a/docx/actions/keyboard/images/07.png b/docx/actions/keyboard/images/07.png
new file mode 100644
index 00000000..bb209a6d
Binary files /dev/null and b/docx/actions/keyboard/images/07.png differ
diff --git a/docx/actions/media/CaptureActiveWindow.md b/docx/actions/media/CaptureActiveWindow.md
new file mode 100644
index 00000000..6495ac66
--- /dev/null
+++ b/docx/actions/media/CaptureActiveWindow.md
@@ -0,0 +1,33 @@
+# 活动窗口截图
+截取当前活动窗口图像
+
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 坐标
+> 要选择的 *ROI* 区域左上角位置,默认值 `(0, 0)`。*ROI* 区域之外,图像将置为黑色,该参数不影响输出图像尺寸。
+* 尺寸
+> 要选择的 *ROI* 区域的长宽。*ROI* 区域之外,图像将置为黑色,该参数不影响输出图像尺寸。
+## 输出
+
+> 图像,参考:[`Image`](./types/Image.md),图像尺寸为整个窗口尺寸。
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/CaptureActiveWindow.simple
+
+
+
+
+## Changed
+
+* 0.45
+> 运行参数*中心坐标* 改为 *左上角坐标*。
\ No newline at end of file
diff --git a/docx/actions/media/CaptureForground.md b/docx/actions/media/CaptureForground.md
deleted file mode 100644
index 082bd2f9..00000000
--- a/docx/actions/media/CaptureForground.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 前置窗口截图
-前置窗口截图。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-
-
-## 输出
-
-> 图像
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/media/CaptureFullScreen.md b/docx/actions/media/CaptureFullScreen.md
deleted file mode 100644
index 3775ff51..00000000
--- a/docx/actions/media/CaptureFullScreen.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 全屏截图
-全屏截图
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-
-
-## 输出
-
-> 屏幕图像
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/media/CaptureScreen.md b/docx/actions/media/CaptureScreen.md
new file mode 100644
index 00000000..3cf98444
--- /dev/null
+++ b/docx/actions/media/CaptureScreen.md
@@ -0,0 +1,47 @@
+# 全屏截图
+全屏截图,支持多个显示器屏幕。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+* 显示器
+> 截取屏幕。
+
+* 坐标
+> 要选择的 *ROI* 区域左上角位置,默认值 `(0, 0)`。*ROI* 区域之外,图像将置为黑色,该参数不影响输出图像尺寸。
+
+* 尺寸
+> 要选择的 *ROI* 区域的长宽。*ROI* 区域之外,图像将置为黑色。该参数不影响输出图像尺寸。
+
+
+## 输出
+
+> 图像,参考:[`Image`](./types/Image.md),图像尺寸为整个屏幕尺寸。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/CaptureScreen.simple
+
+
+
+
+
+
+
+## Changed
+
+* 0.45
+> 运行参数*中心坐标* 改为 *左上角坐标*。
+> 添加屏幕选择参数。
\ No newline at end of file
diff --git a/docx/actions/media/CaptureWindow.md b/docx/actions/media/CaptureWindow.md
new file mode 100644
index 00000000..7c203628
--- /dev/null
+++ b/docx/actions/media/CaptureWindow.md
@@ -0,0 +1,42 @@
+# 窗口截图
+根据指定的窗口截图,包含标题栏。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 窗口
+> 需要截图的窗口。如果为 *空* ,选择当前激活的前置窗口。
+
+* 索引
+> 如果不为空,则对应查找到的多个相同标题或类名的窗口的索引。
+
+* 坐标
+> 要选择的 *ROI* 区域左上角位置,默认值 `(0, 0)`。*ROI* 区域之外,图像将置为黑色,该参数不影响输出图像尺寸。
+* 尺寸
+> 要选择的 *ROI* 区域的长宽。*ROI* 区域之外,图像将置为黑色,该参数不影响输出图像尺寸。
+
+* 仅窗口
+> 如果选择`True`,仅截取窗口图像,否则截取全屏幕图像(窗口外区域填充黑色)。
+
+## 输出
+
+> 图像,参考:[`Image`](./types/Image.md)。
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/CaptureWindow.simple
+
+
+
+## Changed
+
+* 0.45
+> 运行参数*中心坐标* 改为 *左上角坐标*。
+
+* 0.48
+> 添加 *仅窗口* 参数。
\ No newline at end of file
diff --git a/docx/actions/media/MediaPlay.md b/docx/actions/media/MediaPlay.md
index 7866e4c0..d957daa4 100644
--- a/docx/actions/media/MediaPlay.md
+++ b/docx/actions/media/MediaPlay.md
@@ -1,5 +1,7 @@
# 声音播放
-播放声音文件
+播放声音文件。
+
+
## 子流程
> 不支持
@@ -7,19 +9,22 @@
## 运行参数
-* File:播放的声音文件
+* 媒体
+> 本地声音文件,或者网址。支持 *.mp3* 、 *.wav*格式的声音文件
## 输出
-
+> 无
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/MediaPlay.simple
+
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
+!> 该动作是同步动作,声音文件播放完毕后返回。
diff --git a/docx/actions/media/PixelPoint.md b/docx/actions/media/PixelPoint.md
new file mode 100644
index 00000000..874e4e44
--- /dev/null
+++ b/docx/actions/media/PixelPoint.md
@@ -0,0 +1,27 @@
+# 屏幕取色
+这个动作检索指定坐标处的像素的红色,绿色,蓝色(RGB)颜色值。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据源
+> 图像或者窗口,默认从当前屏幕位置获取颜色。
+
+* 坐标
+> 要获取颜色的位置,(如果是数据源是屏幕,则坐标为屏幕坐标;如果数据源为图像,坐标为图像坐标;如果数据源为窗口则为窗口坐标)。左上角为(0,0),*x* 方向向右,*y* 方向向下。
+
+## 输出
+
+> 颜色,参考:[Color](./types/Color.md)
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/CaptureWindow.simple
+
+
+
diff --git a/docx/actions/media/PlayRecord.md b/docx/actions/media/PlayRecord.md
index a6d43936..d0610e6a 100644
--- a/docx/actions/media/PlayRecord.md
+++ b/docx/actions/media/PlayRecord.md
@@ -1,6 +1,7 @@
-# 播放录制
-播放录制的键盘和鼠标宏。
+# 键盘/鼠标宏重放
+用于重放录制的键盘/鼠标宏。录制方法参考:[鼠标/键盘宏录制](.\introduction\workflow\mk_record.md)。
+
## 子流程
> 不支持
@@ -8,19 +9,20 @@
## 运行参数
-* Record: 录制的键盘鼠标宏
+* 宏
+ > 录制的键盘鼠标宏。
+* 半径
+> 修正半径, 为避免每次重放使用相同的坐标位置,可以设置一个半径,以原坐标为原点,生成一个随机位置移动鼠标。
## 输出
-
+> 无
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/PlayRecord.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/media/VideoFrame.md b/docx/actions/media/VideoFrame.md
new file mode 100644
index 00000000..c47e5849
--- /dev/null
+++ b/docx/actions/media/VideoFrame.md
@@ -0,0 +1,33 @@
+# 相机图像
+获取相机的当前图像帧。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+* 相机
+> 打开的相机
+
+## 输出
+
+> 图像,参考:[Image](./types/Image.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/media/VideoFrame.simple
+
+
+
+
diff --git a/docx/actions/media/WindowCapture.md b/docx/actions/media/WindowCapture.md
deleted file mode 100644
index ae076ab4..00000000
--- a/docx/actions/media/WindowCapture.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 窗口截图
-此动作用来对指定的窗口进行截图
-
-
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-* Window: 用来截图的窗口。
-
-## 输出
-
-> [`Image`](../../types/Image.md)
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/media/capture_window.simple](https://github.com/shelllet/WinUi/blob/main/media/capture_window.simple)
-
diff --git a/docx/actions/media/images/01.png b/docx/actions/media/images/01.png
new file mode 100644
index 00000000..b83413c3
Binary files /dev/null and b/docx/actions/media/images/01.png differ
diff --git a/docx/actions/media/images/02.png b/docx/actions/media/images/02.png
new file mode 100644
index 00000000..25092c61
Binary files /dev/null and b/docx/actions/media/images/02.png differ
diff --git a/docx/actions/media/images/03.png b/docx/actions/media/images/03.png
new file mode 100644
index 00000000..aee3b35a
Binary files /dev/null and b/docx/actions/media/images/03.png differ
diff --git a/docx/actions/media/images/04.png b/docx/actions/media/images/04.png
new file mode 100644
index 00000000..9e19e506
Binary files /dev/null and b/docx/actions/media/images/04.png differ
diff --git a/docx/actions/media/images/05.png b/docx/actions/media/images/05.png
new file mode 100644
index 00000000..2df6d9e0
Binary files /dev/null and b/docx/actions/media/images/05.png differ
diff --git a/docx/actions/media/images/06.png b/docx/actions/media/images/06.png
new file mode 100644
index 00000000..224164fb
Binary files /dev/null and b/docx/actions/media/images/06.png differ
diff --git a/docx/actions/media/images/07.png b/docx/actions/media/images/07.png
new file mode 100644
index 00000000..23e3fb8b
Binary files /dev/null and b/docx/actions/media/images/07.png differ
diff --git a/docx/actions/method/SubString.md b/docx/actions/method/SubString.md
new file mode 100644
index 00000000..4596d418
--- /dev/null
+++ b/docx/actions/method/SubString.md
@@ -0,0 +1,32 @@
+# 字符串提取
+根据特定的方法,可以获取部分字符串。
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据
+
+> 字符串
+
+* 位置
+> 起始位置,如果是 *正值* 从左边开始,如果是 *负值*,从右边开始。
+
+* 长度
+> 提取的长度。
+
+## 输出
+
+> 部分字符串,参考:[String](./types/String.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
\ No newline at end of file
diff --git a/docx/actions/mouse/CellClick.md b/docx/actions/mouse/CellClick.md
new file mode 100644
index 00000000..17c51ab5
--- /dev/null
+++ b/docx/actions/mouse/CellClick.md
@@ -0,0 +1,41 @@
+# 点击 * 网格
+在桌面虚拟一个网格,依次移动鼠标至网格中的每个单元格,并点击鼠标。需要配合 [移动鼠标](./actions/mouse/MovePointer.md)动作,移动鼠标至网格左上角第一个单格中心位置。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 单元格宽度
+>
+* 单元格高度
+>
+* 行数
+> 风格行数
+
+* 列数
+> 网格列数
+
+* 半径
+> 以单元格中心为圆心,该参数为半径,动态计算最终的目标位置。该参数不要超过单元格长宽中的最小值。
+
+* 停顿
+> 移动至下个单元格的停顿时间。
+
+* 点击键
+> 鼠标键,参考:[MouseButtons](./enums/MouseButtons.md)
+
+
+## 输出
+
+> 无
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/CellClick.simple
+
+
+
diff --git a/docx/actions/mouse/CellMove.md b/docx/actions/mouse/CellMove.md
new file mode 100644
index 00000000..cb8924ce
--- /dev/null
+++ b/docx/actions/mouse/CellMove.md
@@ -0,0 +1,36 @@
+# 移动 * 网格
+在桌面虚拟一个网格,依次移动鼠标至网格中的每个单元格,并调用自定义的子流程。需要配合 [移动鼠标](./actions/mouse/MovePointer.md)动作,移动鼠标至网格左上角第一个单格中心位置。
+
+
+
+## 子流程
+> 支持,当前鼠标位置传入子流程。
+
+
+## 运行参数
+
+* 单元格宽度
+>
+* 单元格高度
+>
+* 行数
+> 风格行数
+
+* 列数
+> 网格列数
+
+* 半径
+> 以单元格中心为圆心,该参数为半径,动态计算最终的目标位置。该参数不要超过单元格长宽中的最小值。
+
+
+## 输出
+
+> 无
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/CellMove.simple
+
+
\ No newline at end of file
diff --git a/docx/actions/mouse/Click.md b/docx/actions/mouse/Click.md
index 4aace0f8..aed9f0d0 100644
--- a/docx/actions/mouse/Click.md
+++ b/docx/actions/mouse/Click.md
@@ -1,5 +1,7 @@
# 点击
-模拟鼠标点击动作
+模拟鼠标点击操作
+
+
## 子流程
> 不支持
@@ -7,15 +9,19 @@
## 运行参数
-* Times:点击次数
-* Interval:时间间隔
-* [Button](../../enums/MouseButtons.md):点击键
+* 点击次数
+
+* 间隔
+ > 当点击次数大于 *1* 时,每次点击之间的间隔时间。单位:秒
+
+* 点击键
+ > 鼠标键
## 输出
->
+> 无
## 脚本调用
@@ -25,4 +31,9 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/Click.simple
+
+
+
diff --git a/docx/actions/mouse/DoubleClick.md b/docx/actions/mouse/DoubleClick.md
index 4f53abf0..b30c6ab0 100644
--- a/docx/actions/mouse/DoubleClick.md
+++ b/docx/actions/mouse/DoubleClick.md
@@ -1,27 +1,37 @@
# 双击
模拟鼠标双击动作
+
+
## 子流程
> 不支持
## 运行参数
-* Times:双击次数
-* Interval:双击间隔
-* Button:双击鼠标键
+* 次数
+> 在同一位置,双击鼠标的次数
+* 间隔
+> 如果双击次数超过 *1* 次,可以设置此参数,做为每次双击之间的时间间隔。单位:秒
+* 鼠标键
## 输出
-
+> 无
## 脚本调用
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/DoubleClick.simple
+
+
+
diff --git a/docx/actions/mouse/DragPointer.md b/docx/actions/mouse/DragPointer.md
index ec459714..f799431f 100644
--- a/docx/actions/mouse/DragPointer.md
+++ b/docx/actions/mouse/DragPointer.md
@@ -1,5 +1,7 @@
-# 拖动
-模拟鼠标拖动操作
+# 拖拽
+模拟鼠标拖拽操作,即在鼠标的当前位置按下鼠标左键,拖拽鼠标到目标位置,然后释放鼠标左键。可以结合 [*移动鼠标*](./actions/mouse/MovePointer.md) 动作一起使用。
+
+
## 子流程
> 不支持
@@ -7,19 +9,26 @@
## 运行参数
-* Point:目标坐标
-
-
+* 坐标
+> 目标坐标
+* 持续时间
+ > 按下鼠标到松开鼠标所持续的时间
+* 鼠标键
+> 使用哪个鼠标键进行拖拽操作
## 输出
-
-
+> 目标坐标
## 脚本调用
-
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/DragPointer.simple
+
+
+
diff --git a/docx/actions/mouse/ListenMouse.md b/docx/actions/mouse/ListenMouse.md
index 99cf983b..3fa6ccde 100644
--- a/docx/actions/mouse/ListenMouse.md
+++ b/docx/actions/mouse/ListenMouse.md
@@ -1,5 +1,7 @@
# 监听鼠标
-监听鼠标
+监听鼠标操作
+
+
## 子流程
> 支持
@@ -7,19 +9,32 @@
## 运行参数
-* Message: 鼠标消息
+* 鼠标键
+ > 鼠标消息,参考:[MouseMessage](./enums/MouseMessage.md)。
## 输出
-
+ > `Connection`
-
## 脚本调用
```python
-import simple;
+import * from simple;
+def cbk(pt):
+ simple.info(pt)
+
+r = ListenMouseRunner()
+r.msg = MouseMessage.MouseWheelForward
+r.run(cbk)
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/ListenMouse.simple
+
+
+
+
+
diff --git a/docx/actions/mouse/MoveClick.md b/docx/actions/mouse/MoveClick.md
index f7eaf82d..048c6b9b 100644
--- a/docx/actions/mouse/MoveClick.md
+++ b/docx/actions/mouse/MoveClick.md
@@ -1,26 +1,38 @@
# 移动并点击
移动鼠标,到达位置后点击鼠标相应的键
+
+
## 子流程
> 不支持
## 运行参数
-* Point:鼠标移动到的位置
-* Animate:是否为鼠标移动设置动画,如果为 `False`, 则瞬移。有很多应该会检测鼠标是否瞬移来判断开挂。
-* Radius:以 *Point*为圆心,该参数为半径,动态计算最终的目标位置(可以防止某些应用的鼠标检测)。
-* Button:鼠标键
+* 坐标
+ > 鼠标移动到的位置
+* 动画
+ > 是否为鼠标移动设置动画,如果为不勾选, 则为瞬移,没有移动轨迹。有很多应该会检测鼠标的移动轨迹来判断是否开挂。
+* 半径
+ > 以第 *1* 个参数 *Point* 为圆心,该参数为半径,动态计算最终的目标位置。
+* 点击键
+ > 鼠标键
## 输出
-
-
+> 鼠标最终位置坐标
## 脚本调用
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/MoveClick.simple
+
+
+
diff --git a/docx/actions/mouse/MoveDoubleClick.md b/docx/actions/mouse/MoveDoubleClick.md
index 08d4bf06..541db2c4 100644
--- a/docx/actions/mouse/MoveDoubleClick.md
+++ b/docx/actions/mouse/MoveDoubleClick.md
@@ -1,28 +1,40 @@
# 移动并双击
移动鼠标,到达位置后双击鼠标相应的键
+
+
## 子流程
> 不支持
## 运行参数
-* Point:鼠标移动到的位置
-* Animate:是否为鼠标移动设置动画,如果为 `False`, 则瞬移。有很多应该会检测鼠标是否瞬移来判断开挂。
-* Radius:以 *Point*为圆心,该参数为半径,动态计算最终的目标位置。
-* Button:鼠标键
+* 坐标
+ > 鼠标移动到的位置
+* 动画
+ > 是否为鼠标移动设置动画,如果为不勾选, 则为瞬移,没有移动轨迹。有很多应该会检测鼠标的移动轨迹来判断是否开挂。
+* 半径
+ > 以第 *1* 个参数 *Point* 为圆心,该参数为半径,动态计算最终的目标位置。
+* 键
+ > 鼠标键
## 输出
-
+> 鼠标最终位置坐标
## 脚本调用
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/MoveDoubleClick.simple
+
+
+
diff --git a/docx/actions/mouse/MoveOffset.md b/docx/actions/mouse/MoveOffset.md
index a73ab167..2340dfd6 100644
--- a/docx/actions/mouse/MoveOffset.md
+++ b/docx/actions/mouse/MoveOffset.md
@@ -1,8 +1,8 @@
# 偏移移动
-以鼠标当前的位置为起始位置,按照偏移量来移动鼠标。
+以鼠标当前的位置为起始位置,按照偏移量来移动鼠标。在 *3D* 类型的游戏中,可以用来旋转视角。
-
+
## 子流程
@@ -11,20 +11,25 @@
## 运行参数
-* Point:偏移坐标。
-* Radius:以 *Point*为圆心,该参数为半径,动态计算最终的目标位置,可以避免某些检测程序。
+* 偏移量
+> 偏移量,该动作是瞬移鼠标位置,通常移动的距离不会太大。
+* 半径
+ > 以第 *1* 个参数 *Point* 为圆心,该参数为半径,动态计算最终的目标位置。
## 输出
-
+> 最终位置坐标
### 脚本调用
-
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
+## 资源
+
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/MoveOffset.simple
+
-[https://github.com/shelllet/WinUi/blob/main/control/logging.simple](https://github.com/shelllet/WinUi/blob/main/control/logging.simple)
diff --git a/docx/actions/mouse/MovePointer.md b/docx/actions/mouse/MovePointer.md
index 97829b3f..14c904a8 100644
--- a/docx/actions/mouse/MovePointer.md
+++ b/docx/actions/mouse/MovePointer.md
@@ -1,26 +1,37 @@
# 移动鼠标
模拟鼠标移动
+
+
## 子流程
> 不支持
## 运行参数
-* Point:最终的鼠标位置
-* Animate:是否为鼠标移动设置动画,如果为 `False`, 则瞬移。有很多应该会检测鼠标是否瞬移来判断开挂。
-* Radius: 以 *Point*为圆心,该参数为半径,动态计算最终的目标位置
+* 坐标
+ > 鼠标移动到的位置
+* 动画
+ > 是否为鼠标移动设置动画,如果为不勾选, 则为瞬移,没有移动轨迹。有很多游戏应该会检测鼠标的移动轨迹来判断是否开挂。
+* 半径
+ > 以第 *1* 个参数 *Point* 为圆心,该参数为半径,动态计算最终的目标位置。
## 输出
-
+> 鼠标最终位置坐标
## 脚本调用
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/MovePointer.simple
+
+
+
diff --git a/docx/actions/mouse/RightClick.md b/docx/actions/mouse/RightClick.md
index 0fe216f4..a501555c 100644
--- a/docx/actions/mouse/RightClick.md
+++ b/docx/actions/mouse/RightClick.md
@@ -1,6 +1,7 @@
# 右键点击
-模拟鼠标右键点击
+模拟鼠标右键点击,也就是在鼠标的当前位置点击右键,可以结合 [*移动鼠标*](./actions/mouse/MovePointer.md) 动作一起使用。
+
## 子流程
> 不支持
@@ -8,19 +9,27 @@
## 运行参数
-* Times:点击次数
-* Interval:每次之间的间隔
+* 次数
+> 在同一位置,鼠标右键点击的次数
+* 间隔
+> 如果右键点击次数超过 *1* 次,可以设置此参数,做为每次右键点击之间的时间间隔。单位:秒
## 输出
-
+> 无
## 脚本调用
+> 无导出,参考 `Mouse`
```python
import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/RightClick.simple
+
+
+
diff --git a/docx/actions/mouse/WheelMouse.md b/docx/actions/mouse/WheelMouse.md
new file mode 100644
index 00000000..8161831f
--- /dev/null
+++ b/docx/actions/mouse/WheelMouse.md
@@ -0,0 +1,26 @@
+# 滚动鼠标
+模拟鼠标滚轮操作。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> 鼠标滚动的次数。
+
+* 方向
+ > 参考:[Orientation](./enums/Orientation.md)
+
+
+## 输出
+
+> 无
+
+## 其它
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/mouse/WheelMouse.simple
+
diff --git a/docx/actions/mouse/images/01.png b/docx/actions/mouse/images/01.png
new file mode 100644
index 00000000..49acdec3
Binary files /dev/null and b/docx/actions/mouse/images/01.png differ
diff --git a/docx/actions/mouse/images/02.png b/docx/actions/mouse/images/02.png
new file mode 100644
index 00000000..6d82908c
Binary files /dev/null and b/docx/actions/mouse/images/02.png differ
diff --git a/docx/actions/mouse/images/03.png b/docx/actions/mouse/images/03.png
new file mode 100644
index 00000000..f2aa8ef8
Binary files /dev/null and b/docx/actions/mouse/images/03.png differ
diff --git a/docx/actions/mouse/images/04.png b/docx/actions/mouse/images/04.png
new file mode 100644
index 00000000..53ea6aaa
Binary files /dev/null and b/docx/actions/mouse/images/04.png differ
diff --git a/docx/actions/mouse/images/05.png b/docx/actions/mouse/images/05.png
new file mode 100644
index 00000000..eedfbc78
Binary files /dev/null and b/docx/actions/mouse/images/05.png differ
diff --git a/docx/actions/mouse/images/06.png b/docx/actions/mouse/images/06.png
new file mode 100644
index 00000000..292128b4
Binary files /dev/null and b/docx/actions/mouse/images/06.png differ
diff --git a/docx/actions/mouse/images/07.png b/docx/actions/mouse/images/07.png
new file mode 100644
index 00000000..c89638c5
Binary files /dev/null and b/docx/actions/mouse/images/07.png differ
diff --git a/docx/actions/mouse/images/08.png b/docx/actions/mouse/images/08.png
new file mode 100644
index 00000000..29ad5fdf
Binary files /dev/null and b/docx/actions/mouse/images/08.png differ
diff --git a/docx/actions/mouse/images/09.png b/docx/actions/mouse/images/09.png
new file mode 100644
index 00000000..d34ec371
Binary files /dev/null and b/docx/actions/mouse/images/09.png differ
diff --git a/docx/actions/mouse/images/10.png b/docx/actions/mouse/images/10.png
new file mode 100644
index 00000000..2d4cdfa2
Binary files /dev/null and b/docx/actions/mouse/images/10.png differ
diff --git a/docx/actions/mouse/images/11.png b/docx/actions/mouse/images/11.png
new file mode 100644
index 00000000..5f66a7fc
Binary files /dev/null and b/docx/actions/mouse/images/11.png differ
diff --git a/docx/actions/mouse/images/12.png b/docx/actions/mouse/images/12.png
new file mode 100644
index 00000000..6ca873cb
Binary files /dev/null and b/docx/actions/mouse/images/12.png differ
diff --git a/docx/actions/network/DomainQuery.md b/docx/actions/network/DomainQuery.md
new file mode 100644
index 00000000..2c614d0a
--- /dev/null
+++ b/docx/actions/network/DomainQuery.md
@@ -0,0 +1,29 @@
+# 域名查询
+域名解析是将域名(例如 www.google.com)转换成 IP 地址(例如 142.251.42.206)的过程,它是互联网运作的基石之一。当你在浏览器中输入一个域名时,幕后会发生一系列复杂的步骤来找到对应的服务器 IP 地址。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+
+* 域名
+> 要解析的主机名或 IP 地址字符串(如 `www.example.com` 或 `192.168.1.1`)。
+
+* 服务
+
+> 可选参数,通常是端口号或服务名称(如 `80` 或 `http`)。如果只需要解析 IP 地址,可以设置为 NULL。
+
+## 输出
+
+> IP 地址列表,参考[Strings](./types/String.md)。
+
+## 其它
+
+
+
+
+
diff --git a/docx/actions/network/HttpDownload.md b/docx/actions/network/HttpDownload.md
index f8ee2cd4..467c4adf 100644
--- a/docx/actions/network/HttpDownload.md
+++ b/docx/actions/network/HttpDownload.md
@@ -1,32 +1,30 @@
-# 下载
-此动作通过 *HTTP* 协议下载网络文件。
+# 文件下载
+通过 *http/https* 协议下载网络文件。
-
+
## 子流程
> 不支持
## 运行参数
-* Url: 要下载的URL,HTTP链接。
-* Folder: 保存的目录。
-* Name: 保存的文件名,如果为空,表示使用当前时间作为文件名。
+* 网址
+ > 要下载的URL,仅支持 *http/ https* 链接。
+* 文件夹
+> 保存的目录。
+* 名称
+> 保存的文件名,如果为空,表示使用当前日期/时间作为文件名。
## 输出
-> 保存的文件的完整路径。`Path`
+> 下载的文件的完整路径。参考:[`Path`](./types/Path.md)
-## 脚本调用
+### 其它
-```python
-import simple;
+示例:https://github.com/shelllet/WinUi/blob/main/http/HttpDownload.simple
-```
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/http/http_download.simple](https://github.com/shelllet/WinUi/blob/main/http/http_download.simple)
diff --git a/docx/actions/network/HttpGet.md b/docx/actions/network/HttpGet.md
index 1d637581..43d52e02 100644
--- a/docx/actions/network/HttpGet.md
+++ b/docx/actions/network/HttpGet.md
@@ -1,5 +1,7 @@
-# Get
-发送基于 *HTTP* 的*Get* 请求
+# GET 请求
+用于向服务器请求指定的资源,HTTP GET 请求应该只接收数据而不改变服务器的状态。
+
+
## 子流程
> 不支持
@@ -7,20 +9,21 @@
## 运行参数
-* Url:网址
-
+* 网址
+> 可以在网址中直接包含查询字符串,如:`/test/demo.html?name1=value1&name2=value2`。
+* 标头
+> 在 HTTP GET 请求中传递 HTTP 标头,例如:`Accept: application/json`
+* 查询字符串
+> 查询字符串(名称/值对),在 GET 请求的 URL 中发送:`/test/demo.html?name1=value1&name2=value2`,可选项。
## 输出
-
+> GET 方法返回的内容,参考字符串类型:[String](./types/String.md)
+## 资源
-## 脚本调用
+示例: https://github.com/shelllet/WinUi/blob/main/network/HttpGet.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/network/HttpHead.md b/docx/actions/network/HttpHead.md
index 6ded600b..ab715452 100644
--- a/docx/actions/network/HttpHead.md
+++ b/docx/actions/network/HttpHead.md
@@ -1,5 +1,7 @@
-# Head
-发送基于 *HTTP* 的*Head* 请求
+# HEAD 请求
+使用 HTTP HEAD 方法从服务器请求 HTTP 标头,就像使用 HTTP GET 方法请求文档一样。HTTP HEAD 和 GET 请求之间的唯一区别是,对于 HTTP HEAD,服务器仅返回标头而不返回正文。
+
+
## 子流程
> 不支持
@@ -7,19 +9,18 @@
## 运行参数
-* Url:网址
+* 网址
## 输出
-
+> 输出 *HEAD* 方法的返回内容,参考类型:[String](./types/String.md)
+
+
+## 资源
+示例: https://github.com/shelllet/WinUi/blob/main/network/HttpHead.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/network/HttpPost.md b/docx/actions/network/HttpPost.md
index b244d4a0..d1a600f6 100644
--- a/docx/actions/network/HttpPost.md
+++ b/docx/actions/network/HttpPost.md
@@ -1,5 +1,17 @@
-# Post
-发送基于 *HTTP* 的*Post* 请求
+# POST 请求
+将数据通过 POST 方法发送至服务器用以创建/更新资源,请求主体的类型由 Content-Type 标头指示。该动作使用 超文本传输协议(HTTP/1.1)。
+
+例如:
+
+* application/x-www-form-urlencoded
+ > 这是默认的 Content-Type,将键值对使用 `&`连接,键和值之间用 `=` 号连接,非字母数字值使用百分比编码进行转义。如果有空格,将空格转换为 `+` 加号。
+* multipart/form-data
+ > 每个值都作为数据块(正文部分)发送,并用用户定义的分隔符(边界)分隔每个部分。
+
+* text/plain
+ > 消息体没有规定的格式,服务器需要进行相应的处理。
+
+
## 子流程
> 不支持
@@ -7,20 +19,28 @@
## 运行参数
-* Url:网址
-* ContentType:数据类型
-* Content:数据
+* 网址
+> *Post* 请求的服务器。
+* 标头
+> 在 HTTP GET 请求中传递 HTTP 标头,例如:`Accept: application/json`
+
+* 数据类型
+> Content-Type 如:`application/json`,要将 JSON 数据发布到服务器。
+* 数据
+> 如果 Content-Type 设置为`application/json`, 请求正文中提供 JSON 数据
+
## 输出
-
+> 请求返回的数据,字符串类型,参考:[String](./types/String.md)
+
+
+## 资源
+
+示例: https://github.com/shelllet/WinUi/blob/main/network/HttpPost.simple
+!> [Python 3 HTTP/1.1 Server](https://gist.github.com/andystanton/2ec0dca0bf6de90c2000025319f63e2d)
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/network/NetworkConnect.md b/docx/actions/network/NetworkConnect.md
new file mode 100644
index 00000000..12758eb8
--- /dev/null
+++ b/docx/actions/network/NetworkConnect.md
@@ -0,0 +1,33 @@
+# 服务连接
+连接网络服务端。
+
+* *UDP* 是无连接协议,因此 基于*UDP* 协议的网络,可以直接发送或者接收数据。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+
+* 主机
+> 服务器地址,通常包含 *IP* 和端口。参考:[HostAddress](./types/HostAddress.md)
+
+* 类型
+> 网络协议。
+
+## 输出
+> 套接字,可用于读取或者发送数据,*UDP*协议,参考:[UDPSocket](./types/UDPSocket.md)。*TCP*协议,参考:[TCPSocket](./types/TCPSocket.md)。
+
+### 其它
+
+*TCP*示例: https://github.com/shelllet/WinUi/blob/main/network/TcpListen.simple
+
+*UDP* 示例: https://github.com/shelllet/WinUi/blob/main/network/UdpListen.simple
+
+
+
+
+
+
diff --git a/docx/actions/network/NetworkListen.md b/docx/actions/network/NetworkListen.md
new file mode 100644
index 00000000..b58fea48
--- /dev/null
+++ b/docx/actions/network/NetworkListen.md
@@ -0,0 +1,33 @@
+# 网络服务
+创建一个网络服务端。
+
+* *UDP* 是无连接协议,因此 基于*UDP* 协议的网络,直接发送或者接收数据即可,无需监听端口。
+
+
+
+## 子动作
+> 支持,客户端连接的 *套接字* 会传入子流程中。如果是 *UDP*, 传递参数:[UDPSocket](./types/UDPSocket.md)。如果是*TCP*, 传递参数: [TCPSocket](./types/TCPSocket.md)
+
+## 运行参数
+
+
+* 主机
+> 监听的主机地址,通常包含 *IP* 地址和端口,*IP* 地址可空。参考:[HostAddress](./types/HostAddress.md)
+* 类型
+> 网络协议,支持 *TCP* 或者 *UDP* 协议。
+
+## 输出
+
+> 如果是 *TCP* 协议,返回[TcpServer](./types/TcpServer.md) ,如果是*UDP*协议,返回 [UDPSocket](./types/UDPSocket.md)。
+
+### 其它
+
+*TCP*示例: https://github.com/shelllet/WinUi/blob/main/network/TcpListen.simple
+
+*UDP* 示例: https://github.com/shelllet/WinUi/blob/main/network/UdpListen.simple
+
+
+
+
+
+
diff --git a/docx/actions/network/NetworkReceive.md b/docx/actions/network/NetworkReceive.md
new file mode 100644
index 00000000..8c9e5e27
--- /dev/null
+++ b/docx/actions/network/NetworkReceive.md
@@ -0,0 +1,30 @@
+# 数据接收
+接收网络数据。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 主机
+
+> 如果是 *TCP* 协议,该参数类型为:[TCPSocket](./types/TCPSocket.md)。如果是*UDP* 协议,该参数是主机地址,参考:[主机地址](./types/HostAddress.md)或者 [UDPSocket](./types/UDPSocket.md)
+
+
+## 输出
+
+> 收到的数据,参考:[字符串](./types/String.md)。
+
+
+## 资源
+
+*TCP*示例: https://github.com/shelllet/WinUi/blob/main/network/TcpListen.simple
+
+*UDP* 示例: https://github.com/shelllet/WinUi/blob/main/network/UdpListen.simple
+
+
+
+
+
diff --git a/docx/actions/network/NetworkSend.md b/docx/actions/network/NetworkSend.md
new file mode 100644
index 00000000..c8084b90
--- /dev/null
+++ b/docx/actions/network/NetworkSend.md
@@ -0,0 +1,31 @@
+# 数据发送
+通过网络,发送数据。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 主机
+>> 如果是 *TCP* 协议,该参数类型为:[TCPSocket](./types/TCPSocket.md)。如果是*UDP* 协议,该参数是主机地址,参考:[主机地址](./types/HostAddress.md)或者 [UDPSocket](./types/UDPSocket.md)
+
+* 数据
+> 发送的数据。该数据会被序列化成[字符串](./types/String.md)发送。
+
+## 输出
+
+> 如果是 *TCP* 协议,该动作返回:[TCPSocket](./types/TCPSocket.md)。如果是*UDP* 协议,该动作返回: [UDPSocket](./types/UDPSocket.md)
+
+### 其它
+
+*TCP*示例: https://github.com/shelllet/WinUi/blob/main/network/TcpListen.simple
+
+*UDP* 示例: https://github.com/shelllet/WinUi/blob/main/network/UdpListen.simple
+
+
+
+
+
+
diff --git a/docx/actions/network/ReceiveInput.md b/docx/actions/network/ReceiveInput.md
new file mode 100644
index 00000000..fb2d4bac
--- /dev/null
+++ b/docx/actions/network/ReceiveInput.md
@@ -0,0 +1,33 @@
+# 接收输入
+接收网络上的鼠标键盘事件。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 主机
+
+> 如果协议是 `TCP`, *IP* 必须为远程 *IP*, `UDP` 可以是远程 *IP*, 或者 `0.0.0.0` 接收广播数据, 端口必须为有效的端口,需要和发送端一致。
+
+* 偏移坐标
+> 如果置为窗口,接收端会自动把窗口坐标映射为全局坐标。如果输入坐标, 接收端接收坐标时加上该坐标的值。
+* 协议
+> 支持 `UDP` 和 `TCP` 协议,建议使用 `UDP` 协议,提高鼠标键盘的传输速度。注意:发送和接收端的协议必须相同。
+
+## 输出
+
+> 无
+
+
+## 资源
+
+
+示例: https://github.com/shelllet/WinUi/blob/main/network/send_receive_input.simple
+
+
+
+
+
diff --git a/docx/actions/network/SendInput.md b/docx/actions/network/SendInput.md
new file mode 100644
index 00000000..e5e30569
--- /dev/null
+++ b/docx/actions/network/SendInput.md
@@ -0,0 +1,31 @@
+# 发送输入
+通过网络,发送鼠标键盘事件。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 主机
+> *IP* 必须为本机*IP*, 端口为有有效的端口,比如:4433,该参数是主机地址,如果是`UDP`协议,*IP*: `0.0.0.0` 可以向局域网广播,鼠标键盘事件。
+
+* 偏移坐标
+> 如果置为窗口,发送端会自动把全局坐标映射为窗口坐标。如果输入坐标, 发送端在发送坐标时加上该坐标的值。
+
+* 协议
+> 支持 `UDP` 和 `TCP` 协议,建议使用 `UDP` 协议,提高鼠标键盘数据的传输效率。注意:发送和接收端的协议必须相同。
+
+## 输出
+
+> 无
+
+### 其它
+
+示例: https://github.com/shelllet/WinUi/blob/main/network/send_receive_input.simple
+
+
+
+
+
diff --git a/docx/actions/network/TcpConnect.md b/docx/actions/network/TcpConnect.md
deleted file mode 100644
index 236e7e26..00000000
--- a/docx/actions/network/TcpConnect.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 连接
-此动作通过TCP或者UDP连接服务端。
-
-
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-
-
-* Host Address: 监听的IP, 默认`127.0.0.1`
-* Port Number: 监听的端口
-* Type: 类型,分为`TCP` 或者`UDP`
-
-## 输出 `Socket`
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/network/connect.simple](https://github.com/shelllet/WinUi/blob/main/network/connect.simple)
-
-
diff --git a/docx/actions/network/TcpListen.md b/docx/actions/network/TcpListen.md
deleted file mode 100644
index bcd26aa4..00000000
--- a/docx/actions/network/TcpListen.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 监听
-此动作用来创建TCP或者UDP服务端。
-
-
-
-## 子动作
-> 不支持
-
-## 运行参数
-
-
-* Host Address: 监听的IP, 可忽略,默认`127.0.0.1`
-* Port Number: 监听的端口
-* Type: 类型,分为`TCP` 或者`UDP`
-
-## 输出 无
-
-
-### 脚本调用
-
-```python
-import simple;
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/network/listen.simple](https://github.com/shelllet/WinUi/blob/main/network/listen.simple)
-
diff --git a/docx/actions/network/TcpReceive.md b/docx/actions/network/TcpReceive.md
deleted file mode 100644
index edf3a2cf..00000000
--- a/docx/actions/network/TcpReceive.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 接收
-此动作通过TCP或者UDP接收数据。
-
-
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-* Socket: 套接字, 可以通过`监听`动作的子动作获取, 或者由`连接`动作获取。
-
-## 输出
-
-> 由`发送`动作所发送的数据。
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/network/receive.simple](https://github.com/shelllet/WinUi/blob/main/network/receive.simple)
-
diff --git a/docx/actions/network/TcpSend.md b/docx/actions/network/TcpSend.md
deleted file mode 100644
index 00002489..00000000
--- a/docx/actions/network/TcpSend.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 发送
-此动作通过TCP或者UDP发送数据。
-
-
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-
-
-* Socket: 套接字, 可以通过`监听`动作的子动作获取, 或者由`连接`动作获取。
-* Value: 发送的数据。
-
-## 输出 无
-
-
-### 脚本调用
-
-```python
-import simple;
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/network/send.simple](https://github.com/shelllet/WinUi/blob/main/network/send.simple)
-
diff --git a/docx/actions/network/VideoDownload.md b/docx/actions/network/VideoDownload.md
new file mode 100644
index 00000000..e935e574
--- /dev/null
+++ b/docx/actions/network/VideoDownload.md
@@ -0,0 +1,50 @@
+# 视频下载
+通过提供想要下载视频的 *URL* ,下载相应的视频或者音频文件。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 网址 1
+> 视频或音频链接。
+
+* Cookies 文件 2
+> 选择Cookies 文件,解决比如 Youtube 登录验证问题。参考插件:[Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc)。
+
+* (2)浏览器获取Cookies 3
+> 如果选中,则会从对应的浏览器获取 `Cookies`。
+
+* 浏览器 4
+> 默认 `chrome` 浏览器,仅在参数 `3` 选中时使用。
+
+* 配置目录 5
+ > 可以填写配置名称或者路径。 参考[浏览器配置目录](./introduction/webdriver/browser_directory.md)。仅在参数 `3` 选中时使用。
+
+* 选项 6
+> 默认下载MP4格式文件。 例如下载 128k 声音文件:`-f bestaudio -x --audio-format mp3 --audio-quality 128k`
+
+* 保存位置 7
+
+> 下载的视频保存的文件夹。
+
+## 输出
+> 保存到本地的视频路径,参考:[Path](./types/Path.md)
+
+
+## 资源
+
+* 示例: https://github.com/shelllet/WinUi/blob/main/network/YoutubeDownload.simple
+
+
+
+
+
+
+## 版本变化
+
+* 0.42
+> 新增加运行时参数 3 、 4 、 5 。
\ No newline at end of file
diff --git a/docx/actions/network/YoutubeDownload.md b/docx/actions/network/YoutubeDownload.md
deleted file mode 100644
index 3a10d3b4..00000000
--- a/docx/actions/network/YoutubeDownload.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 视频下载
-目前只支持 *Youtube* 视频下载,需要能访问 *Youtube* 的网络。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Url:链接
-* Output:输出目录
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/network/images/01.png b/docx/actions/network/images/01.png
new file mode 100644
index 00000000..29510060
Binary files /dev/null and b/docx/actions/network/images/01.png differ
diff --git a/docx/actions/network/images/02.png b/docx/actions/network/images/02.png
new file mode 100644
index 00000000..7587feda
Binary files /dev/null and b/docx/actions/network/images/02.png differ
diff --git a/docx/actions/network/images/03.png b/docx/actions/network/images/03.png
new file mode 100644
index 00000000..faf5ce72
Binary files /dev/null and b/docx/actions/network/images/03.png differ
diff --git a/docx/actions/network/images/04.png b/docx/actions/network/images/04.png
new file mode 100644
index 00000000..d88400b8
Binary files /dev/null and b/docx/actions/network/images/04.png differ
diff --git a/docx/actions/network/images/05.png b/docx/actions/network/images/05.png
new file mode 100644
index 00000000..e2729688
Binary files /dev/null and b/docx/actions/network/images/05.png differ
diff --git a/docx/actions/network/images/06.png b/docx/actions/network/images/06.png
new file mode 100644
index 00000000..d70ae9f7
Binary files /dev/null and b/docx/actions/network/images/06.png differ
diff --git a/docx/actions/network/images/07.png b/docx/actions/network/images/07.png
new file mode 100644
index 00000000..063871c7
Binary files /dev/null and b/docx/actions/network/images/07.png differ
diff --git a/docx/actions/network/images/08.png b/docx/actions/network/images/08.png
new file mode 100644
index 00000000..bbe07435
Binary files /dev/null and b/docx/actions/network/images/08.png differ
diff --git a/docx/actions/network/images/09.png b/docx/actions/network/images/09.png
new file mode 100644
index 00000000..c6d7cf5e
Binary files /dev/null and b/docx/actions/network/images/09.png differ
diff --git a/docx/actions/network/images/10.png b/docx/actions/network/images/10.png
new file mode 100644
index 00000000..443449f6
Binary files /dev/null and b/docx/actions/network/images/10.png differ
diff --git a/docx/actions/network/images/11.png b/docx/actions/network/images/11.png
new file mode 100644
index 00000000..a6f1f0fb
Binary files /dev/null and b/docx/actions/network/images/11.png differ
diff --git a/docx/actions/network/images/12.png b/docx/actions/network/images/12.png
new file mode 100644
index 00000000..c0acfaeb
Binary files /dev/null and b/docx/actions/network/images/12.png differ
diff --git a/docx/actions/pandas/DataFrameQuery.md b/docx/actions/pandas/DataFrameQuery.md
new file mode 100644
index 00000000..6ee828b2
--- /dev/null
+++ b/docx/actions/pandas/DataFrameQuery.md
@@ -0,0 +1,23 @@
+# 查询
+查询 DataFrame 数据结构
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据源
+> `DataFrame` 数据结构。
+
+* 查询字符串
+> 参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html
+
+## 输出
+
+> `DataFrame` 数据结构。
+
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/IndexLoc.md b/docx/actions/pandas/IndexLoc.md
new file mode 100644
index 00000000..0a83d393
--- /dev/null
+++ b/docx/actions/pandas/IndexLoc.md
@@ -0,0 +1,26 @@
+# 行列选择 * 索引
+基于整数位置的索引,以按位置对 `DataFrame`数据结构进行选择。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* 数据源
+> `DataFrame` 数据结构。
+
+* 行
+> 参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html
+* 列
+> 参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html
+
+## 输出
+
+> `DataFrame` 数据结构。
+
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/IterRow.md b/docx/actions/pandas/IterRow.md
new file mode 100644
index 00000000..6e9f3f17
--- /dev/null
+++ b/docx/actions/pandas/IterRow.md
@@ -0,0 +1,19 @@
+# 迭代行
+返回 `DataFrame` 数据结构中的基于行的迭代器,配合[*循环*](./actions/control/For.md) 动作可遍历 `DataFrame` 每一行数据。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据源
+> `DataFrame` 数据结构。
+
+## 输出
+
+> 迭代器, 可用于 [*循环*](./actions/control/For.md)。
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/LoadDocument.md b/docx/actions/pandas/LoadDocument.md
new file mode 100644
index 00000000..8591fa77
--- /dev/null
+++ b/docx/actions/pandas/LoadDocument.md
@@ -0,0 +1,25 @@
+# 加载文档
+加载文档,支持多种文档类型。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 文件
+> 文档路径。支持`.xml` 文件类型、 `.json` 文件类型、 `.csv` 文件类型、 `.xlsx` 文件类型。参考[FileExtension](./enums/FileExtension.md)。
+
+* 参数
+> 不同的文档类型,传递的参数可能不一样。参考 *pandas* 文档: https://pandas.pydata.org/docs/reference/io.html 。
+
+* 文件类型
+> 对于无扩展名的文件,需要选择相应的文件类型。如果文件包含扩展名,此参数可选择: `DEFAULT`。
+
+## 输出
+
+> `DataFrame`,参考:[https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) 。
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/NameLoc.md b/docx/actions/pandas/NameLoc.md
new file mode 100644
index 00000000..4546d7ea
--- /dev/null
+++ b/docx/actions/pandas/NameLoc.md
@@ -0,0 +1,26 @@
+# 行列选择 * 标签
+通过标签或布尔数组访问 `DataFrame`数据结构中的一组行和列。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* 数据源
+> `DataFrame` 数据结构。
+
+* 行
+> 参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html
+* 列
+> 参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html
+
+## 输出
+
+> `DataFrame` 数据结构。
+
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/RowsCount.md b/docx/actions/pandas/RowsCount.md
new file mode 100644
index 00000000..c72499c9
--- /dev/null
+++ b/docx/actions/pandas/RowsCount.md
@@ -0,0 +1,19 @@
+# 统计行数
+统计 `DataFrame` 数据结构的行数。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据源
+> `DataFrame` 数据结构。
+
+## 输出
+
+> 行数,参考:[Number](./types/Number.md)
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/SaveDocument.md b/docx/actions/pandas/SaveDocument.md
new file mode 100644
index 00000000..fd479e2b
--- /dev/null
+++ b/docx/actions/pandas/SaveDocument.md
@@ -0,0 +1,28 @@
+# 保存文档
+保存文档,支持多种文档类型。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 数据源
+> `DataFrame` 数据结构。
+
+* 路径
+> 保存的文件路径
+
+* 文件名
+> 文件名称。可为空,使用当前日期/时间做为文件名。
+* 文件类型
+> 对于无扩展名的文件,需要选择相应的文件类型。如果文件包含扩展名,此参数可选择: `DEFAULT`。参考[FileExtension](./enums/FileExtension.md)。
+
+
+## 输出
+
+> 保存的文件全路径,参考:[Path](./types/Path.md) 。
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/pandas/images/01.png b/docx/actions/pandas/images/01.png
new file mode 100644
index 00000000..b96478c0
Binary files /dev/null and b/docx/actions/pandas/images/01.png differ
diff --git a/docx/actions/pandas/images/02.png b/docx/actions/pandas/images/02.png
new file mode 100644
index 00000000..345a2e43
Binary files /dev/null and b/docx/actions/pandas/images/02.png differ
diff --git a/docx/actions/pandas/images/03.png b/docx/actions/pandas/images/03.png
new file mode 100644
index 00000000..4058c702
Binary files /dev/null and b/docx/actions/pandas/images/03.png differ
diff --git a/docx/actions/pandas/images/04.png b/docx/actions/pandas/images/04.png
new file mode 100644
index 00000000..786f5dbf
Binary files /dev/null and b/docx/actions/pandas/images/04.png differ
diff --git a/docx/actions/pandas/images/05.png b/docx/actions/pandas/images/05.png
new file mode 100644
index 00000000..5073dc32
Binary files /dev/null and b/docx/actions/pandas/images/05.png differ
diff --git a/docx/actions/pandas/images/06.png b/docx/actions/pandas/images/06.png
new file mode 100644
index 00000000..a4c27d59
Binary files /dev/null and b/docx/actions/pandas/images/06.png differ
diff --git a/docx/actions/pandas/images/07.png b/docx/actions/pandas/images/07.png
new file mode 100644
index 00000000..1d645edd
Binary files /dev/null and b/docx/actions/pandas/images/07.png differ
diff --git a/docx/actions/system/AttachProcess.md b/docx/actions/system/AttachProcess.md
new file mode 100644
index 00000000..8a3da509
--- /dev/null
+++ b/docx/actions/system/AttachProcess.md
@@ -0,0 +1,35 @@
+# 附加进程
+
+创建一个进程,在进程启动的时候附加一个动态链接库。这个动作可以把动态库加载到进程的运行空间,也可以称作`DLL`注入。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 进程
+> 进程的路径,`Windows` 系统同名进程可以有多个,可以用进程全路径区分。
+
+* 动态库
+> 要附加的动态链接库。注意适配`32`位或者`64`位可执行程序。
+
+## 输出
+
+> 无
+
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/AttachProcess.simple
+
+* 动态库示例:https://github.com/shelllet/WindowsInject
+
+
+
+
diff --git a/docx/actions/system/CallMethod.md b/docx/actions/system/CallMethod.md
new file mode 100644
index 00000000..b9237a4c
--- /dev/null
+++ b/docx/actions/system/CallMethod.md
@@ -0,0 +1,37 @@
+# 调用方法
+调用对象或者模块中的方法,包括 *COM* 对象。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 对象
+> 通过 [创建对象](./actions/CreateObject.md) 动作创建的对象。
+
+* 方法
+> 函数名称,字符串类型。注意 *Win32 API* 函数,分 *ANSI* 和 *UNICODE* 版本,请使用 带 *W* 后缀的 *UNICODE* 版本。
+* 参数
+
+> 可以通过 [*Tuple*](./types/Tuple.md) 类型,封装多个参数。
+
+## 输出
+
+> 方法的返回值。
+
+## 其它
+
+`Beep` 调用:https://github.com/shelllet/WinUi/blob/main/system/beep.simple
+
+`FindWindowW` 调用:https://github.com/shelllet/WinUi/blob/main/system/findwindow.simple
+
+DLL 调用:https://github.com/shelllet/WinUi/blob/main/system/dll.simple
+
+COM 调用:https://github.com/shelllet/WinUi/blob/main/system/com.simple
+
+
+
+
diff --git a/docx/actions/system/ClipboardValue.md b/docx/actions/system/ClipboardValue.md
new file mode 100644
index 00000000..2e3c8ff4
--- /dev/null
+++ b/docx/actions/system/ClipboardValue.md
@@ -0,0 +1,31 @@
+# 剪切板
+获取或者设置 *剪切板* 的内容,支持 *图片* 或者 *文本* 信息。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+
+> 放到剪切板中的内容,支持 *图片* 或者 *文本* 信息。如果 为 *空*,则为获取剪切板中的内容。
+
+## 输出
+
+> 剪切板当前的内容。
+
+
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/system/ClipboardValue.simple
+
+
+
+
+
+
+
diff --git a/docx/actions/system/CloseHandle.md b/docx/actions/system/CloseHandle.md
index 76c3c321..eda4c195 100644
--- a/docx/actions/system/CloseHandle.md
+++ b/docx/actions/system/CloseHandle.md
@@ -1,6 +1,10 @@
# 关闭句柄
-关闭应用程度打开的句柄
+关闭应用程度打开的句柄。
+
+
+## 权限
+> 无要求
## 子流程
@@ -9,19 +13,18 @@
## 运行参数
-* Process:应用程序
-* [Type](../../enums/HandleType.md):句柄类型
-* Name:句柄名称
+* [exeFile](./types/Path.md):应用程序,为避免同名程序文件,这个值应为程序路径
+* [type](./enums/HandleType.md):句柄类型
+* [name](./types/String.md):句柄名称。支持 [通配符匹配](./introduction/workflow/wildcard.md) 匹配
## 输出
+> `True` 表示成功,其它值表示失败
+
+## 资源
-## 脚本
+* 流程:https://github.com/shelllet/WinUi/blob/main/system/CloseHandle.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/system/CreateObject.md b/docx/actions/system/CreateObject.md
new file mode 100644
index 00000000..d3a1cea1
--- /dev/null
+++ b/docx/actions/system/CreateObject.md
@@ -0,0 +1,35 @@
+# 创建对象
+创建 *COM* 对象,或者调用创建有 *c(__cdec)* 接口函数的 *DLL* 模块. 同样也支持创建具有 *__stdcall* 调用约定的 *DLL* 模块。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 选项
+> 参考:[ModuleOption](./enums/ModuleOption.md)。
+
+* 值
+
+> 当选择 *CDLL* 或者 *WINDLL*, 该参数用来指定动态链接的文件地址。当选择 *COM* 时,该参数用来指定创建的 *COM* 对象,比如:`Word.Application` 。其它选项该参数无效。
+
+## 输出
+
+> 对象。
+
+
+## 其它
+
+`Beep` 调用:https://github.com/shelllet/WinUi/blob/main/system/beep.simple
+
+`FindWindowW` 调用:https://github.com/shelllet/WinUi/blob/main/system/findwindow.simple
+
+DLL 调用:https://github.com/shelllet/WinUi/blob/main/system/dll.simple
+
+COM 调用:https://github.com/shelllet/WinUi/blob/main/system/com.simple
+
+
+
diff --git a/docx/actions/system/ExistProcess.md b/docx/actions/system/ExistProcess.md
new file mode 100644
index 00000000..b38878b7
--- /dev/null
+++ b/docx/actions/system/ExistProcess.md
@@ -0,0 +1,23 @@
+# 检测进程
+该动作可以检查系统当中的应用程序是否运行。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* [app](./types/Path.md):进程路径,支持 [*Wildcard*](./introduction/workflow/wildcard.md) 匹配
+
+
+## 输出
+
+> 是否存在,[Boolean](./types/Boolean.md) 类型
+
+## 资源
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/ExistProcess.simple
diff --git a/docx/actions/system/KillProcess.md b/docx/actions/system/KillProcess.md
index b5ba8b38..304d6644 100644
--- a/docx/actions/system/KillProcess.md
+++ b/docx/actions/system/KillProcess.md
@@ -1,7 +1,10 @@
# 终止进程
该动作可以结束操作系统中的进程
+
+## 权限
+> 无要求
## 子流程
@@ -9,18 +12,25 @@
## 运行参数
-* Process:进程名称,支持 *Wildcard* 匹配
+* [app](./types/Path.md):进程路径,支持 [*Wildcard*](./introduction/workflow/wildcard.md) 匹配
## 输出
-
+> 被结束进程的路径
## 脚本
```python
import simple;
+r = simple.KillProcessRunner("*\\Notepad.exe")
+
+r.run()
```
-## 示例
\ No newline at end of file
+## 资源
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/KillProcess.simple
+
+
+
diff --git a/docx/actions/system/LaunchFile.md b/docx/actions/system/LaunchFile.md
index d2d3f6e9..d37b4114 100644
--- a/docx/actions/system/LaunchFile.md
+++ b/docx/actions/system/LaunchFile.md
@@ -1,8 +1,12 @@
-# 打开文件
-该动作可以打开在操作系统中关联过文件类型的文件。
+# 打开关联文件
+该动作可以打开操作系统中的关联文件,即非可执行文件,比如 *.txt*, *.docx* *.pptx* 等类型的文件。
+
+## 权限
+> 无要求
+
## 子流程
> 不支持
@@ -10,18 +14,27 @@
## 运行参数
-* File: 要打开的文件
+* [file](./types/Path.md): 要打开的文件
## 输出
-
+> 打开的文件,和参数 `file` 相同。
## 脚本
```python
import simple
+r = simple.LaunchFileRunner("C:\\Users\\shell\\Desktop\\d2.txt")
+# r.file = "C:\\Users\\shell\\Desktop\\d2.txt"
+r.run()
+
```
-## 示例
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/LaunchFile.simple
+
+
+
diff --git a/docx/actions/system/LoginApplication.md b/docx/actions/system/LoginApplication.md
deleted file mode 100644
index b4da653f..00000000
--- a/docx/actions/system/LoginApplication.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# 打开应用
-使用本地系统中的账号打开应用程序。该动作不会等待程序结束。
-
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-* [app](../../types/Path.md) 程序路径
-* [commandLine](../../types/String.md) 传递的命令行参数
-* [workingDirectory](../../types/Path.md):工作目录
-* [env](../../types/String.md):环境变量
-* [account](../../types/String.md):账号
-* [password](../../types/String.md):密码, 可空。
-
-
-## 输出
-
-> 启动的程序路径。 [`Path`](../../types/Path.md) 类型
-
-
-## 脚本调用
-
-```python
-import simple
-
-r = simple.OpenApplicationRunner("C:\\Program Files (x86)\\Steam\\Steam.exe")
-# p.app = "C:\\Program Files (x86)\\Steam\\Steam.exe"
-r.account = 'abc'
-r.password = '123'
-r.run()
-```
-
-## 示例
-
-[https://github.com/shelllet/WinUi/blob/main/system/OpenApplication.simple](https://github.com/shelllet/WinUi/blob/main/system/OpenApplication.simple)
diff --git a/docx/actions/system/OpenApplication.md b/docx/actions/system/OpenApplication.md
index 872e175a..46c481d4 100644
--- a/docx/actions/system/OpenApplication.md
+++ b/docx/actions/system/OpenApplication.md
@@ -3,6 +3,8 @@

+## 权限
+> 无要求
## 子流程
@@ -10,15 +12,15 @@
## 运行参数
-* [app](../../types/Path.md) 程序路径
-* [commandLine](../../types/String.md) 传递的命令行参数
-* [workingDirectory](../../types/Path.md):工作目录
-* [env](../../types/String.md):环境变量
+* [app](./types/Path.md) 程序路径
+* [commandLine](./types/String.md) 传递的命令行参数
+* [workingDirectory](./types/Path.md):工作目录
+* [env](./types/String.md):环境变量
## 输出
-> 启动的程序路径。 [`Path`](../../types/Path.md) 类型
+> 启动的程序路径。 [`Path`](./types/Path.md) 类型
## 脚本调用
@@ -27,10 +29,15 @@
import simple
r = simple.OpenApplicationRunner("C:\\Program Files (x86)\\Steam\\Steam.exe")
-# p.app = "C:\\Program Files (x86)\\Steam\\Steam.exe"
+# r.app = "C:\\Program Files (x86)\\Steam\\Steam.exe"
r.run()
```
-## 示例
-[https://github.com/shelllet/WinUi/blob/main/system/OpenApplication.simple](https://github.com/shelllet/WinUi/blob/main/system/OpenApplication.simple)
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/OpenApplication.simple
+
+
+
+
diff --git a/docx/actions/system/OpenUri.md b/docx/actions/system/OpenUri.md
deleted file mode 100644
index 7673f52b..00000000
--- a/docx/actions/system/OpenUri.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 打开链接
-该动作可以启动浏览器打开指定的网址
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-
-## 输出
-
-
-
-## 脚本
-
-```python
-import simple
-
-```
-
-## 示例
-
diff --git a/docx/actions/system/OpenUrl.md b/docx/actions/system/OpenUrl.md
new file mode 100644
index 00000000..0797e1a6
--- /dev/null
+++ b/docx/actions/system/OpenUrl.md
@@ -0,0 +1,28 @@
+# 打开链接
+该动作可以启动默认的浏览器打开指定的网址
+
+
+
+## 权限
+> 无要求
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* [url](./types/Url.md): 要打开的链接
+
+## 输出
+
+> 打开的链接,和 参数 `url` 相同。
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/OpenUri.simple
+
+
+
+
diff --git a/docx/actions/system/PrintMessage.md b/docx/actions/system/PrintMessage.md
new file mode 100644
index 00000000..c08ef9c0
--- /dev/null
+++ b/docx/actions/system/PrintMessage.md
@@ -0,0 +1,30 @@
+# 打印日志
+
+打印动作执行结果的文本信息。
+
+
+
+## 权限
+> 无要求
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 数据源
+> 要打印的动作。
+
+## 输出
+
+> 无
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/OutputString.simple
+
+
+
+
diff --git a/docx/actions/system/ReadMemory.md b/docx/actions/system/ReadMemory.md
new file mode 100644
index 00000000..0b10f909
--- /dev/null
+++ b/docx/actions/system/ReadMemory.md
@@ -0,0 +1,34 @@
+# 读取内存
+
+读取指定进程地址范围内的数据。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+* 程序
+> 程序的路径,`Windows` 系统同名程序可以有多个,可以用程序全路径来区分,支持 [*Glob*](./introduction/workflow/glob.md) 匹配。
+
+* 地址
+> 用户空间的内存地址。
+
+* 长度
+> 读取的数据长度。
+
+## 输出
+
+> 内存数据,参考:[字节序列](./types/Bytes.md)。
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/ReadMemory.simple
+
+
+
+
diff --git a/docx/actions/system/Runas.md b/docx/actions/system/Runas.md
new file mode 100644
index 00000000..f8142032
--- /dev/null
+++ b/docx/actions/system/Runas.md
@@ -0,0 +1,38 @@
+# 登录应用
+使用本地系统中的账号密码打开应用程序,类似 "RunAs",该动作不会等待程序结束。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 应用
+> 可执行程序路径。
+* 账号
+>
+* 密码
+> 密码可空。
+* 命令行
+> 传递的命令行参数
+* 工作目录
+>
+* 环境变量
+> 使用 `Var=Value` 形式表示。 参考:https://learn.microsoft.com/zh-cn/windows/win32/procthread/environment-variables 。
+
+## 输出
+
+> 启动的程序路径。 [`Path`](./types/Path.md) 类型
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/Runas.simple
+
+
+
+
diff --git a/docx/actions/system/ShutdownSystem.md b/docx/actions/system/ShutdownSystem.md
deleted file mode 100644
index 7c214bf2..00000000
--- a/docx/actions/system/ShutdownSystem.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 关机
-该动作可以关闭操作系统,也就是电脑关机。
-
-
-
-## 子流程
-
-> 不支持
-
-## 运行参数
-
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
-
diff --git a/docx/actions/system/StartProcess.md b/docx/actions/system/StartProcess.md
index 1bf0340d..8c7042dc 100644
--- a/docx/actions/system/StartProcess.md
+++ b/docx/actions/system/StartProcess.md
@@ -1,25 +1,28 @@
-# 启动应用程序
+# 启动应用
启动应用程序,并等待程序结束。

+## 权限
+> 无要求
+
## 子流程
> 不支持
## 运行参数
-* [app](../../types/Path.md): 启动的进程路径
-* [commandLine](../../types/String.md): 传递的命令行参数
-* [noWindow](../../types/Boolean.md): 无窗口运行
-* [workingDirectory](../../types/Path.md):工作目录
-* [env](../../types/String.md):环境变量
+* [app](./types/Path.md): 启动的进程路径
+* [commandLine](./types/String.md): 传递的命令行参数
+* [noWindow](./types/Boolean.md): 无窗口运行
+* [workingDirectory](./types/Path.md):工作目录
+* [env](./types/String.md):环境变量
## 输出
-> 启动应用程序输出的内容, [`String`](../../types/String.md) 类型。
+> 该动作会等待应用程序结束,返回应用程序所输出的内容, [`String`](./types/String.md) 类型。
## 脚本调用
@@ -32,10 +35,12 @@ p = simple.StartProcessRunner("C:\\Program Files (x86)\\Steam\\Steam.exe")
p.run()
```
+!> 停止流程运行,目前版本无法自动结束启动的进程,需要等待启动的进程自行结束,或者通过*任务栏管理器*强制结束
+
## 资源
-* 流程:https://github.com/shelllet/WinUi/blob/main/system/startprocess.simple
-* YouTube视频:https://youtu.be/GuonLCJ6AR4
-* B站视频:https://www.bilibili.com/video/BV15s4y1T7ry/
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/StartProcess.simple
+
+
+
-!> 停止流程运行,目前版本无法自动结束启动的进程,需要等待启动的进程自行结束,或者通过*任务栏管理器*强制结束
diff --git a/docx/actions/system/SuspendSystem.md b/docx/actions/system/SuspendSystem.md
new file mode 100644
index 00000000..db1a6c13
--- /dev/null
+++ b/docx/actions/system/SuspendSystem.md
@@ -0,0 +1,30 @@
+# 暂停系统
+注销、关闭、休眠或者重启当前的操作系统。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 类型
+> 注销、关机、休眠或者重启,参考:[SuspendStateOption](./enums/SuspendStateOption.md)
+
+## 输出
+
+> 无
+
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/SuspendSystem.simple
+
+
+
+
+
diff --git a/docx/actions/system/UserAdd.md b/docx/actions/system/UserAdd.md
index 1b7a9e71..c6f27e58 100644
--- a/docx/actions/system/UserAdd.md
+++ b/docx/actions/system/UserAdd.md
@@ -3,18 +3,22 @@

+## 权限
+> 管理员
+
## 子流程
> 不支持
## 运行参数
-* [account](../../types/String.md): 账号名称
-* [Password](../../types/String.md): 密码
+* [account](./types/String.md): 账号名称
+* [password](./types/String.md): 密码
+* [homeDir](./types/Path.md): 用户目录,通常在 *C:\Users* 路径下面会有操作系统中所有账号的用户目录
## 输出
-> 类型:[`Boolean`](../../types/Boolean.md) , 添加成功`True`, 失败:`False`;
+> 类型:[`Boolean`](./types/Boolean.md) , 添加成功`True`, 失败:`False`;
## 脚本调用
@@ -31,6 +35,11 @@ p.run()
## 资源
-[https://github.com/shelllet/WinUi/blob/main/system/startprocess.simple](https://github.com/shelllet/WinUi/blob/main/system/UserAdd.simple)
+* 示例流程: https://github.com/shelllet/WinUi/blob/main/system/UserAdd.simple
+
+
+
+
+
diff --git a/docx/actions/system/Wait.md b/docx/actions/system/Wait.md
index 91bdd66f..fdd1e9fc 100644
--- a/docx/actions/system/Wait.md
+++ b/docx/actions/system/Wait.md
@@ -4,6 +4,8 @@

+## 权限
+> 无要求
## 子流程
@@ -11,24 +13,16 @@
## 运行参数
-* [duration](../../types/Range.md):根据范围生成一个等待时间,单位:秒。
+* [duration](./types/Range.md):根据范围生成一个等待时间,单位:秒。
## 输出
> 无
-## 脚本调用
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/Wait.simple
-```python
-import simple
-w = simple.WaitRunner(3) # sleep 3s
-# w.duration = 3
-w.run()
-```
-## 资源
-* YouTube视频:https://youtu.be/n0JOUQOWMuo
-* B站视频:https://www.bilibili.com/video/BV1mz4y1b7D1/?share_source=copy_web
-* 流程:https://github.com/shelllet/WinUi/blob/main/system/wait.simple
\ No newline at end of file
diff --git a/docx/actions/system/WriteMemory.md b/docx/actions/system/WriteMemory.md
new file mode 100644
index 00000000..2093a5e0
--- /dev/null
+++ b/docx/actions/system/WriteMemory.md
@@ -0,0 +1,38 @@
+# 写内存
+
+在进程指定的内存地址处写入数据。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 程序
+> 程序的路径,`Windows` 系统同名程序可以有多个,可以用程序全路径来区分,支持 [*Glob*](./introduction/workflow/glob.md) 匹配。
+
+* 地址
+> 用户空间的内存地址。
+
+* 数据
+> 写入的数据。如果写入字节序列,请使用:[Bytes](./types/Bytes.md),创建字节序列。
+
+## 输出
+
+> 无
+
+
+## 资源
+
+* 示例流程:https://github.com/shelllet/WinUi/blob/main/system/Wait.simple
+
+
+
+
+
+
diff --git a/docx/actions/system/images/02.png b/docx/actions/system/images/02.png
new file mode 100644
index 00000000..2e0ecd8c
Binary files /dev/null and b/docx/actions/system/images/02.png differ
diff --git a/docx/actions/system/images/05.png b/docx/actions/system/images/05.png
index d4cbad04..fbbd894a 100644
Binary files a/docx/actions/system/images/05.png and b/docx/actions/system/images/05.png differ
diff --git a/docx/actions/system/images/06.png b/docx/actions/system/images/06.png
index 8fc3e506..b9569e33 100644
Binary files a/docx/actions/system/images/06.png and b/docx/actions/system/images/06.png differ
diff --git a/docx/actions/system/images/07.png b/docx/actions/system/images/07.png
new file mode 100644
index 00000000..9fb28e6e
Binary files /dev/null and b/docx/actions/system/images/07.png differ
diff --git a/docx/actions/system/images/08.png b/docx/actions/system/images/08.png
new file mode 100644
index 00000000..08bd98ef
Binary files /dev/null and b/docx/actions/system/images/08.png differ
diff --git a/docx/actions/system/images/09.png b/docx/actions/system/images/09.png
new file mode 100644
index 00000000..e2c1d86a
Binary files /dev/null and b/docx/actions/system/images/09.png differ
diff --git a/docx/actions/system/images/10.png b/docx/actions/system/images/10.png
new file mode 100644
index 00000000..8d6c08ab
Binary files /dev/null and b/docx/actions/system/images/10.png differ
diff --git a/docx/actions/system/images/11.png b/docx/actions/system/images/11.png
new file mode 100644
index 00000000..1e5dea2d
Binary files /dev/null and b/docx/actions/system/images/11.png differ
diff --git a/docx/actions/system/images/12.png b/docx/actions/system/images/12.png
new file mode 100644
index 00000000..92e847fe
Binary files /dev/null and b/docx/actions/system/images/12.png differ
diff --git a/docx/actions/system/images/13.png b/docx/actions/system/images/13.png
new file mode 100644
index 00000000..a8b6e98a
Binary files /dev/null and b/docx/actions/system/images/13.png differ
diff --git a/docx/actions/system/images/14.png b/docx/actions/system/images/14.png
new file mode 100644
index 00000000..b620f606
Binary files /dev/null and b/docx/actions/system/images/14.png differ
diff --git a/docx/actions/system/images/15.png b/docx/actions/system/images/15.png
new file mode 100644
index 00000000..23379755
Binary files /dev/null and b/docx/actions/system/images/15.png differ
diff --git a/docx/actions/system/images/16.png b/docx/actions/system/images/16.png
new file mode 100644
index 00000000..3a8b197b
Binary files /dev/null and b/docx/actions/system/images/16.png differ
diff --git a/docx/actions/system/images/17.png b/docx/actions/system/images/17.png
new file mode 100644
index 00000000..d0d01ee8
Binary files /dev/null and b/docx/actions/system/images/17.png differ
diff --git a/docx/actions/system/images/18.png b/docx/actions/system/images/18.png
new file mode 100644
index 00000000..3e420359
Binary files /dev/null and b/docx/actions/system/images/18.png differ
diff --git a/docx/actions/system/images/19.png b/docx/actions/system/images/19.png
new file mode 100644
index 00000000..1355d5b8
Binary files /dev/null and b/docx/actions/system/images/19.png differ
diff --git a/docx/actions/system/images/20.png b/docx/actions/system/images/20.png
new file mode 100644
index 00000000..5e1253cb
Binary files /dev/null and b/docx/actions/system/images/20.png differ
diff --git a/docx/actions/system/images/21.png b/docx/actions/system/images/21.png
new file mode 100644
index 00000000..33058c01
Binary files /dev/null and b/docx/actions/system/images/21.png differ
diff --git a/docx/actions/type/ClipboardValue.md b/docx/actions/type/ClipboardValue.md
deleted file mode 100644
index 4a9a13ab..00000000
--- a/docx/actions/type/ClipboardValue.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 剪切板
-获取 *剪切板* 当前的内容
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-
-
-## 输出
-
-> 剪切板当前的值
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/type/ONNXModel.md b/docx/actions/type/ONNXModel.md
deleted file mode 100644
index 7b64c44a..00000000
--- a/docx/actions/type/ONNXModel.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 模型
-加载 *ONNX* 模型文件
-
-
-
-## 子流程
-
-> 不支持
-
-
-## 运行参数
-
-* Model:模型文件,后缀名为:`.onnx`
-
-
-
-## 输出
-
-> [`ModelSession`](../../types/ModelSession.md)
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/type/TypeBoolean.md b/docx/actions/type/TypeBoolean.md
new file mode 100644
index 00000000..13484995
--- /dev/null
+++ b/docx/actions/type/TypeBoolean.md
@@ -0,0 +1,33 @@
+# 布尔
+定义一个 *布尔* 类型。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> 布尔值。
+
+## 输出
+
+> 参考类型:[Boolean](./types/Boolean.md)。
+
+
+## 脚本调用
+
+```python
+
+b = True
+
+```
+
+## 示例
+
+
+
+
diff --git a/docx/actions/type/TypeCamera.md b/docx/actions/type/TypeCamera.md
new file mode 100644
index 00000000..308ec55c
--- /dev/null
+++ b/docx/actions/type/TypeCamera.md
@@ -0,0 +1,39 @@
+# 相机
+定义相机类型,当前系统必须连接相机设备,且不被占用(USB相机通常已经连接)。工业 *GIGE* 接口的相机需要手动安装相应的驱动程序。
+
+
+* 该动作在非触发模式,需要配合动作 [相机图像](./actions/media/VideoFrame.md) 获取相机图像。
+
+## 权限
+> 无要求
+
+## 子流程
+> 支持。非触发模式相机对象传子流程。触发模式时,相机图像转入子流程。
+
+## 运行参数
+
+* 相机
+> 相机索引,默认值:`0`,表示第 `1` 个相机设备。
+
+- 类型
+> 相机类型,参考:[CameraType](./enums/CameraType.md)。
+
+* 触发模式
+> 触发模式开关,只支持相机是 GIGE/USB3 工业相机。
+
+* 触发源
+> 只支持触发模式打开时设置。参考:[CameraTriggerSource](./enums/CameraTriggerSource.md)。
+
+
+* 触发激活方式
+> 只支持触发模式打开时设置。参考:[CameraTriggerActivation](./enums/CameraTriggerActivation.md)。
+
+
+## 输出
+
+> 相机对象,参考:[VideoCapture](./types/VideoCapture.md)。
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeColor.md b/docx/actions/type/TypeColor.md
index 6b8d3e8f..0cc39833 100644
--- a/docx/actions/type/TypeColor.md
+++ b/docx/actions/type/TypeColor.md
@@ -1,5 +1,7 @@
# 颜色
-定义 *颜色* 类型
+定义 *颜色* 类型的值。
+
+
## 子流程
> 不支持
@@ -7,12 +9,12 @@
## 运行参数
-* Color:颜色
+* 颜色
## 输出
-> [Color](../../types/Color.md)
+> 颜色,参考: [Color](./types/Color.md)。
## 脚本调用
@@ -20,6 +22,12 @@
```python
import simple;
+c = simple.Color(255,255,255)
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
+
diff --git a/docx/actions/type/TypeDict.md b/docx/actions/type/TypeDict.md
new file mode 100644
index 00000000..2ca434bc
--- /dev/null
+++ b/docx/actions/type/TypeDict.md
@@ -0,0 +1,34 @@
+# 字典
+定义一个 `Dict`(字典) 类型。
+
+
+
+## 子流程
+> 支持, 可以通过子动作为该字典添加多个键值对。
+
+## 运行参数
+该动作只能添加一个 键值对,多个键值对,需要通过子动作添加。
+* 键
+>
+
+* 值
+>
+
+## 输出
+
+> 字典,参考:[`Dict`](./types/Dict.md) 。
+
+
+## 脚本调用
+
+```python
+
+tel = {'jack': 4098, 'sape': 4139}
+
+```
+
+## 示例
+
+
+
+
diff --git a/docx/actions/type/TypeEvent.md b/docx/actions/type/TypeEvent.md
new file mode 100644
index 00000000..0f6ee889
--- /dev/null
+++ b/docx/actions/type/TypeEvent.md
@@ -0,0 +1,26 @@
+# 事件
+定义一个 `WinEvent`(事件) 类型。
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* [manualReset](./types/Boolean.md): 是否手动设置状态
+* [initialState](./enums/PowerState.md) 初始化状态, 如果是 `Auto`, 则 默认为 `Off`。
+
+## 输出
+
+> [`WinEvent`](./types/WinEvent.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 示例
\ No newline at end of file
diff --git a/docx/actions/type/TypeFile.md b/docx/actions/type/TypeFile.md
index 58b0e7ce..e3e721f7 100644
--- a/docx/actions/type/TypeFile.md
+++ b/docx/actions/type/TypeFile.md
@@ -1,5 +1,7 @@
# 文件
-定义 *文件* 类型
+定义 *文件* 类型。
+
+
## 子流程
> 不支持
@@ -7,11 +9,12 @@
## 运行参数
-* File:本地文件
+* 值
+> 本地文件。
## 输出
-
+> 文件,参考:[File](./types/File.md)。
@@ -20,6 +23,11 @@
```python
import simple;
+file = simple.File('c:/windows/system32/notepad.exe')
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeFolder.md b/docx/actions/type/TypeFolder.md
deleted file mode 100644
index 46e7fcf8..00000000
--- a/docx/actions/type/TypeFolder.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 文件夹
-定义 *文件夹* 类型
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Folder:文件夹
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/type/TypeHostAddress.md b/docx/actions/type/TypeHostAddress.md
new file mode 100644
index 00000000..6f224d8a
--- /dev/null
+++ b/docx/actions/type/TypeHostAddress.md
@@ -0,0 +1,34 @@
+# 主机地址
+定义一个 *主机地址* 类型。主机地址通常包含*IP*地址和端口。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 主机
+> *ip* 地址。默认:`localhost`,本地回环地址,和 `127.0.0.1`对应。
+
+* 端口
+> 端口号,端口号的范围从`0`到`65535`。
+
+## 输出
+
+> 主机地址,参考: [HostAddress](./types/HostAddress.md)。
+
+
+## 脚本调用
+
+```python
+
+addr = HostAddress('localhost', 8080)
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeJson.md b/docx/actions/type/TypeJson.md
index cd83ec24..a9eb9bd7 100644
--- a/docx/actions/type/TypeJson.md
+++ b/docx/actions/type/TypeJson.md
@@ -12,7 +12,7 @@
## 输出
-> [JsonValue](../../types/JsonValue.md)
+> [JsonValue](./types/JsonValue.md)
diff --git a/docx/actions/type/TypeList.md b/docx/actions/type/TypeList.md
new file mode 100644
index 00000000..8078c8a2
--- /dev/null
+++ b/docx/actions/type/TypeList.md
@@ -0,0 +1,32 @@
+# 列表
+定义一个 *列表* 类型的值。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> *Python* 列表, Python 语句,用于创建列表。
+
+
+## 输出
+
+> 列表,参考: [List](./types/List.md)。
+
+
+## 脚本调用
+
+```python
+
+fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeModel.md b/docx/actions/type/TypeModel.md
new file mode 100644
index 00000000..4230110b
--- /dev/null
+++ b/docx/actions/type/TypeModel.md
@@ -0,0 +1,35 @@
+# 模型
+定义 *ONNX* 模型文件。
+
+
+
+## 子流程
+
+> 不支持
+
+
+## 运行参数
+
+* 模型
+> 模型文件,后缀名为:`.onnx`。
+
+* 类型
+> 由于模型文件通常比较大,加载需要比较长的时间,为避免动作每次执行都加载模型文件,可以打开此开关,切换为静态。
+
+## 输出
+
+> 模型,参考:[`ModelSession`](./types/ModelSession.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+model = simple.ModelSession('simple.onnx')
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeNumber.md b/docx/actions/type/TypeNumber.md
new file mode 100644
index 00000000..582df4d8
--- /dev/null
+++ b/docx/actions/type/TypeNumber.md
@@ -0,0 +1,31 @@
+# 数字
+定义一个 *数字* 类型。
+
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> 数字。
+
+## 输出
+
+> 参考类型:[Number](./types/Number.md)。
+
+## 脚本调用
+
+```python
+
+num = 5
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypePassword.md b/docx/actions/type/TypePassword.md
index 47b8968b..fdb12155 100644
--- a/docx/actions/type/TypePassword.md
+++ b/docx/actions/type/TypePassword.md
@@ -1,5 +1,7 @@
# 密码
-定义 *密码*,字符串类型
+定义 *密码*,字符串类型。
+
+
## 子流程
> 不支持
@@ -7,19 +9,26 @@
## 运行参数
-* Password:密码
-
+* 密码
+> 定义的密码,以 `*`号显示。
## 输出
+> 字符串,参考:[String](./types/String.md)。
## 脚本调用
```python
-import simple;
+
+p = '123456'
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
+
+
diff --git a/docx/actions/type/TypePath.md b/docx/actions/type/TypePath.md
new file mode 100644
index 00000000..7534b52c
--- /dev/null
+++ b/docx/actions/type/TypePath.md
@@ -0,0 +1,33 @@
+# 路径
+定义 *路径* 类型。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> 文件夹。
+
+
+## 输出
+
+> 文件夹,参考:[Path](./types/Path.md)。
+
+
+## 脚本调用
+
+```python
+import simple;
+
+p = simple.Path('c:/windows')
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypePoint.md b/docx/actions/type/TypePoint.md
index 077c61e1..38b2e369 100644
--- a/docx/actions/type/TypePoint.md
+++ b/docx/actions/type/TypePoint.md
@@ -1,5 +1,7 @@
# 坐标
-定义一个 *坐标* 类型
+定义一个 *坐标* 类型。
+
+
## 子流程
> 不支持
@@ -7,11 +9,13 @@
## 运行参数
-* Point:坐标点
+* 值
+> 坐标点,包含 `x` 和 `y` 的值。
## 输出
+> 坐标,参考:[Point](./types/Point.md)。
@@ -20,6 +24,11 @@
```python
import simple;
+pt = simple.Point(100, 100)
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
diff --git a/docx/actions/type/TypePtr.md b/docx/actions/type/TypePtr.md
new file mode 100644
index 00000000..3bb6a9d8
--- /dev/null
+++ b/docx/actions/type/TypePtr.md
@@ -0,0 +1,34 @@
+# 指针
+定义一个 指针 类型的值,用来表示内存地址。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+
+> 使用字符串或者十六进制官字行串表示一个内存地址,例如:`0x014B30A8`。
+
+
+## 输出
+
+> 指针
+
+
+## 脚本调用
+
+```python
+import simple;
+
+ptr = simple.Ptr(0x014B30A8)
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeRect.md b/docx/actions/type/TypeRect.md
index 1130ae23..60175efd 100644
--- a/docx/actions/type/TypeRect.md
+++ b/docx/actions/type/TypeRect.md
@@ -1,5 +1,7 @@
# 矩形
-定义一个 *矩形* 类型
+定义一个 *矩形* 类型。
+
+
## 子流程
> 不支持
@@ -8,18 +10,22 @@
## 运行参数
-* Rect:矩形
-
+* 矩形
+> 包含矩形的 *左上角* 坐标和 *长*、 *宽* 大小。
## 输出
-
-
+> 短形,参考:[Rect](./types/Rect.md)。
## 脚本调用
```python
import simple;
+rc = simple.Rect(0,0, 100, 100)
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeResource.md b/docx/actions/type/TypeResource.md
index 5560bd87..c4ac50b8 100644
--- a/docx/actions/type/TypeResource.md
+++ b/docx/actions/type/TypeResource.md
@@ -1,5 +1,8 @@
# 资源
-定义 *资源* 类型
+定义 *资源* 类型,用于选择嵌入流程中的资源,比如常用的图片文件。
+
+
+
## 子流程
> 不支持
@@ -8,18 +11,16 @@
## 运行参数
-* Resource:选择内嵌的资源
+* 资源
+> 选择嵌入流程中的资源,参考:[资源](./introduction/workflow/resources.md)。
## 输出
-
+> 对应的资源类型。
+
+## 示例
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/type/TypeScalar.md b/docx/actions/type/TypeScalar.md
index 1f873262..c36a8815 100644
--- a/docx/actions/type/TypeScalar.md
+++ b/docx/actions/type/TypeScalar.md
@@ -1,5 +1,8 @@
# 标量
-定义 *标量* 类型,*标量* 包含 *4* 个数值
+定义 *标量* 类型,*标量* 包含 *4* 个数值。
+
+
+
## 子流程
> 不支持
@@ -8,10 +11,12 @@
## 运行参数
-* Value:标量
+* 值
+> 包含四个数值 `M0`、 `M1`、 `M2`、 `M3`。
## 输出
+> 标题,参考:[Scalar](./types/Scalar.md)。
@@ -20,6 +25,14 @@
```python
import simple;
+s1 = simple.Scalar()
+
+s2 = simple.Scalar(0,0,0,0)
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
+
diff --git a/docx/actions/type/TypeShortcut.md b/docx/actions/type/TypeShortcut.md
index 955c9bd1..cdbcaffa 100644
--- a/docx/actions/type/TypeShortcut.md
+++ b/docx/actions/type/TypeShortcut.md
@@ -1,6 +1,7 @@
# 快捷键
-定义一个 *快捷键* 类型
+定义一个 *快捷键* 类型。
+
## 子流程
> 不支持
@@ -9,11 +10,12 @@
## 运行参数
-* Key:快捷键
+* 键
+> 快捷键。
## 输出
-
+> 快捷键,参考:[KeySequence](./types/KeySequence.md)。
## 脚本调用
@@ -21,6 +23,13 @@
```python
import simple;
+key = simple.KeySequence(simple.Key.Control, simple.Key.W)
+
+
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
+
diff --git a/docx/actions/type/TypeSlice.md b/docx/actions/type/TypeSlice.md
new file mode 100644
index 00000000..45de648f
--- /dev/null
+++ b/docx/actions/type/TypeSlice.md
@@ -0,0 +1,36 @@
+# 切片
+定义一个 `切片`(Slice) 类型值。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 开始
+> 切片开始位置。如果未提供,则默认为 `None`。
+
+* 结束
+> 结束位置,切片在索引 stop-1(最后一个元素)处停止。
+
+* 步长
+> 用于确定切片的每个索引之间的增量。如果未提供,则默认为 `None`。
+
+## 输出
+
+> 切片对象,参考:[`Slice`](./types/Slice.md) 。
+
+
+## 脚本调用
+
+```python
+
+sliced = slice(3)
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeString.md b/docx/actions/type/TypeString.md
index eafe8ad6..f5df501e 100644
--- a/docx/actions/type/TypeString.md
+++ b/docx/actions/type/TypeString.md
@@ -1,5 +1,7 @@
# 字符串
-定义一个 *字符串* 类型
+定义一个 *字符串* 类型。
+
+
## 子流程
> 不支持
@@ -7,19 +9,24 @@
## 运行参数
-* Text:定义一个字符串
+* 值
+> 字符串。
## 输出
-
+> 字符串,参考: [String](./types/String.md)。
## 脚本调用
```python
-import simple;
+
+str = 'hello, 小友+'
```
-## 示例
\ No newline at end of file
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeStrings.md b/docx/actions/type/TypeStrings.md
new file mode 100644
index 00000000..297d7f29
--- /dev/null
+++ b/docx/actions/type/TypeStrings.md
@@ -0,0 +1,32 @@
+# 字符串列表
+定义一个 *字符串列表* 类型的值。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* 值
+> 多行字符串,注意不是 *Python* 语句或者表达式。执行时按照换行符`\r\n` 分隔为字符串列表。
+
+
+## 输出
+
+> 字符串列表,参考: [Strings](./types/String.md)。
+
+
+## 脚本调用
+
+```python
+
+fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
+
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeTuple.md b/docx/actions/type/TypeTuple.md
new file mode 100644
index 00000000..b62946b8
--- /dev/null
+++ b/docx/actions/type/TypeTuple.md
@@ -0,0 +1,29 @@
+# 元组
+定义一个 `Tuple`(元组) 类型。
+
+
+
+## 子流程
+> 支持,可以通过子动作为该元组添加多个元素。
+
+
+## 运行参数
+
+* 值
+> 元组的第 `1` 个元素。
+
+## 输出
+
+> 元组,参考:[`Tuple`](./types/Tuple.md) 。
+
+
+## 脚本调用
+
+```python
+num = (7, 14, 21, 28, 35)
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/TypeUri.md b/docx/actions/type/TypeUri.md
deleted file mode 100644
index 8423790b..00000000
--- a/docx/actions/type/TypeUri.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 网址
-创建一个 *网址* 类型
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-* Url:网址
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/type/TypeUrl.md b/docx/actions/type/TypeUrl.md
new file mode 100644
index 00000000..0edaf3e0
--- /dev/null
+++ b/docx/actions/type/TypeUrl.md
@@ -0,0 +1,33 @@
+# 网址
+创建一个 *网址* 类型。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* 值
+> 网址, 例如:`https://winui.net` , 注意要以 `http` 或者 `https` 开头。
+
+## 输出
+
+> 网址,参考:[Url](./types/Url.md)
+
+
+
+## 脚本调用
+
+```python
+import simple
+
+url = simple.Url('https://winui.net')
+```
+
+## 示例
+
+
+
diff --git a/docx/actions/type/images/01.png b/docx/actions/type/images/01.png
index e20d3468..8bd32ef1 100644
Binary files a/docx/actions/type/images/01.png and b/docx/actions/type/images/01.png differ
diff --git a/docx/actions/type/images/02.png b/docx/actions/type/images/02.png
new file mode 100644
index 00000000..99e08175
Binary files /dev/null and b/docx/actions/type/images/02.png differ
diff --git a/docx/actions/type/images/03.png b/docx/actions/type/images/03.png
new file mode 100644
index 00000000..2b8ce3d1
Binary files /dev/null and b/docx/actions/type/images/03.png differ
diff --git a/docx/actions/type/images/04.png b/docx/actions/type/images/04.png
new file mode 100644
index 00000000..7e24ca24
Binary files /dev/null and b/docx/actions/type/images/04.png differ
diff --git a/docx/actions/type/images/05.png b/docx/actions/type/images/05.png
new file mode 100644
index 00000000..7c8d1f9a
Binary files /dev/null and b/docx/actions/type/images/05.png differ
diff --git a/docx/actions/type/images/06.png b/docx/actions/type/images/06.png
new file mode 100644
index 00000000..c754a7f4
Binary files /dev/null and b/docx/actions/type/images/06.png differ
diff --git a/docx/actions/type/images/07.png b/docx/actions/type/images/07.png
new file mode 100644
index 00000000..b4f49070
Binary files /dev/null and b/docx/actions/type/images/07.png differ
diff --git a/docx/actions/type/images/08.png b/docx/actions/type/images/08.png
new file mode 100644
index 00000000..3e022bff
Binary files /dev/null and b/docx/actions/type/images/08.png differ
diff --git a/docx/actions/type/images/09.png b/docx/actions/type/images/09.png
new file mode 100644
index 00000000..f461e31b
Binary files /dev/null and b/docx/actions/type/images/09.png differ
diff --git a/docx/actions/type/images/10.png b/docx/actions/type/images/10.png
new file mode 100644
index 00000000..a54be108
Binary files /dev/null and b/docx/actions/type/images/10.png differ
diff --git a/docx/actions/type/images/11.png b/docx/actions/type/images/11.png
new file mode 100644
index 00000000..abecf9a5
Binary files /dev/null and b/docx/actions/type/images/11.png differ
diff --git a/docx/actions/type/images/12.png b/docx/actions/type/images/12.png
new file mode 100644
index 00000000..496dcd47
Binary files /dev/null and b/docx/actions/type/images/12.png differ
diff --git a/docx/actions/type/images/13.png b/docx/actions/type/images/13.png
new file mode 100644
index 00000000..b52498c4
Binary files /dev/null and b/docx/actions/type/images/13.png differ
diff --git a/docx/actions/type/images/14.png b/docx/actions/type/images/14.png
new file mode 100644
index 00000000..92699bc6
Binary files /dev/null and b/docx/actions/type/images/14.png differ
diff --git a/docx/actions/type/images/15.png b/docx/actions/type/images/15.png
new file mode 100644
index 00000000..634a5c87
Binary files /dev/null and b/docx/actions/type/images/15.png differ
diff --git a/docx/actions/type/images/16.png b/docx/actions/type/images/16.png
new file mode 100644
index 00000000..ab74e9de
Binary files /dev/null and b/docx/actions/type/images/16.png differ
diff --git a/docx/actions/type/images/17.png b/docx/actions/type/images/17.png
new file mode 100644
index 00000000..2eb5bb3e
Binary files /dev/null and b/docx/actions/type/images/17.png differ
diff --git a/docx/actions/type/images/18.png b/docx/actions/type/images/18.png
new file mode 100644
index 00000000..a0612c66
Binary files /dev/null and b/docx/actions/type/images/18.png differ
diff --git a/docx/actions/type/images/19.png b/docx/actions/type/images/19.png
new file mode 100644
index 00000000..2d7f9456
Binary files /dev/null and b/docx/actions/type/images/19.png differ
diff --git a/docx/actions/type/images/20.png b/docx/actions/type/images/20.png
new file mode 100644
index 00000000..21ad6e6b
Binary files /dev/null and b/docx/actions/type/images/20.png differ
diff --git a/docx/actions/type/images/21.png b/docx/actions/type/images/21.png
new file mode 100644
index 00000000..ccbe59c1
Binary files /dev/null and b/docx/actions/type/images/21.png differ
diff --git a/docx/actions/type/images/22.png b/docx/actions/type/images/22.png
new file mode 100644
index 00000000..52601028
Binary files /dev/null and b/docx/actions/type/images/22.png differ
diff --git a/docx/actions/web/WebActionChainsCreated.md b/docx/actions/web/WebActionChainsCreated.md
deleted file mode 100644
index a798b046..00000000
--- a/docx/actions/web/WebActionChainsCreated.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 动作链*创建
-创建 *Web* 动作链
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Driver: 浏览器对象
-
-
-## 输出
-
-> 动作链 [ActionChains](../../types/ActionChains.md)
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionChainsPerform.md b/docx/actions/web/WebActionChainsPerform.md
index 5e873559..5a0363ed 100644
--- a/docx/actions/web/WebActionChainsPerform.md
+++ b/docx/actions/web/WebActionChainsPerform.md
@@ -1,25 +1,28 @@
# 动作链*执行
-执行创建的动作链。
+创建并执行 *Web* 动作链,常用来连续执行一系列 *Web* 动作。
+
+* 动作链是一种自动化低级交互的方法,例如鼠标移动、鼠标按钮操作、按键和上下文菜单交互。这对于执行更复杂的操作(例如悬停和拖放)非常有用。
+
+
## 子流程
-> 支持
+> 支持。
## 运行参数
-* Action Chains: 动作链
+* 对象
+> 浏览器对象
## 输出
-> 无输出
+> 动作链,类型: [ActionChains](./types/ActionChains.md)。
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_sendtxt.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionClick.md b/docx/actions/web/WebActionClick.md
index 4f854ae6..e7f61b11 100644
--- a/docx/actions/web/WebActionClick.md
+++ b/docx/actions/web/WebActionClick.md
@@ -1,5 +1,9 @@
# 动作链.点击
-单击一个 *Web* 元素, 此动作需要加入到动作链当中。
+模拟鼠标左键点击 *Web* 元素,参考:[点击](./actions/WebElementClick.md)。
+
+* 该动作需要加入到动作链当中。
+
+
## 子流程
> 不支持
@@ -8,19 +12,17 @@
## 运行参数
-* Action Chains: 动作链
-* Element: 要点击的元素。如果没有,则单击当前鼠标位置。
+* 元素
+> 要点击的 *Web* 元素。如果没有,则单击当前鼠标位置。
## 输出
+> 无
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_sendtxt.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionClickHold.md b/docx/actions/web/WebActionClickHold.md
index e4820849..1d27a7aa 100644
--- a/docx/actions/web/WebActionClickHold.md
+++ b/docx/actions/web/WebActionClickHold.md
@@ -1,25 +1,25 @@
# 动作链.点按
-在元素上按住鼠标左键, 此动作需要加入到动作链当中。
+在 *Web* 元素上按住鼠标左键不释放。
+* 该动作需要加入到动作链当中。
-## 子流程
-> 支持
+
+## 子流程
+> 不支持
## 运行参数
-* Action Chains:动作链
-* Element: 鼠标按下的元素。如果没有,则单击当前鼠标位置。
+* 元素
+> 鼠标按下的 *Web* 元素。如果没有设置,则在当前鼠标位置点按。
## 输出
> 无输出
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_press.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionDoubleClick.md b/docx/actions/web/WebActionDoubleClick.md
index 312fa1a9..23d7335f 100644
--- a/docx/actions/web/WebActionDoubleClick.md
+++ b/docx/actions/web/WebActionDoubleClick.md
@@ -1,26 +1,26 @@
# 动作链.双击
-双击一个元素, 此动作需要加入到动作链当中。
+双击一个 *Web* 元素。
+* 该动作需要加入到动作链当中。
+
+
## 子流程
-> 支持
+> 不支持
## 运行参数
-* Action Chains: 动作链
-* Element: 要双击的元素。如果没有,则单击当前鼠标位置
+* 元素
+> 要双击的 *Web* 元素。如果没有设置,则双击当前鼠标位置。
## 输出
+> 无
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_doubleclick.simple
-## 脚本调用
-
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionDragDrop.md b/docx/actions/web/WebActionDragDrop.md
index 96c2d12f..cc04d373 100644
--- a/docx/actions/web/WebActionDragDrop.md
+++ b/docx/actions/web/WebActionDragDrop.md
@@ -1,26 +1,29 @@
# 动作链.拖放
在源元素上按住鼠标左键,然后移动到目标元素并释放鼠标。
+* 该动作需要加入到动作链当中。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Action Chains: 动作链
-* Source:鼠标按下的元素。
-* Target:鼠标悬停的元素。
+* 源
+> 鼠标按下的 *Web* 元素。
+* 目标
+> 鼠标悬停的 *web* 元素。
## 输出
-
+> 无
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_drag.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionKeyDown.md b/docx/actions/web/WebActionKeyDown.md
index 9d2f45ee..25612400 100644
--- a/docx/actions/web/WebActionKeyDown.md
+++ b/docx/actions/web/WebActionKeyDown.md
@@ -1,5 +1,10 @@
-# 动作链.按键
-仅发送按键,不释放。只能与(Control、Alt 和 Shift)一起使用。
+# 动作链.按下修饰键
+按下键盘修饰键,仅发送键盘修饰键,不释放键盘修饰键。
+
+* 只能使用Control 、Alt 和 Shift 等修饰键。
+* 该动作需要加入到动作链当中。
+
+
## 子流程
> 不支持
@@ -7,20 +12,18 @@
## 运行参数
-* Action Chains: 动作链
-* *Element* : 元素,可选
-* *Key* :要发送的修改键。
-
-## 输出
+* 元素
+> *Web*元素, 可选。如果不提供,发送修饰键到当前有焦点的 *Web* 元素。
-
+* 修饰键
+> 要发送的修饰键,如:Control 、Alt 或 Shift 等。
+
+## 输出
+> 无
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_sendkey.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionKeyUp.md b/docx/actions/web/WebActionKeyUp.md
index 75be75f3..ded29865 100644
--- a/docx/actions/web/WebActionKeyUp.md
+++ b/docx/actions/web/WebActionKeyUp.md
@@ -1,24 +1,30 @@
-# 动作链.释放按键
-释放修改键
+# 动作链.释放修饰键
+
+释放键盘修饰键,配合 [动作链.按下修饰键 ](./actions/WebActionKeyDown.md)动作使用。 用来释放 [动作链.按下修饰键 ](./actions/WebActionKeyDown.md)动作中按下的修饰键。
+
+* 键盘修饰键包括:Control 、Alt 和 Shift 等。
+* 该动作需要加入到动作链当中。
+
+
## 子流程
-> 不支持
+> 不支持
## 运行参数
-* Action Chains: 动作链
-* *Key* :要发送的修改键。值在Keys类中定义。
-* *Element* : 元素,可选
+* 元素
+> *Web* 元素,可选。如果不提供,发送修饰键到当前有焦点的 *Web* 元素。
+
+* 修饰键
+> 要发送的修饰键。如:Control 、Alt 或 Shift 等。
## 输出
+> 无
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_sendkey.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionMoveOffset.md b/docx/actions/web/WebActionMoveOffset.md
deleted file mode 100644
index d181461a..00000000
--- a/docx/actions/web/WebActionMoveOffset.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 动作链.移动(偏移)
-将鼠标移动到当前鼠标位置的或指定 *Web* 元素的偏移量。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Action Chains: 动作链
-* Element:要移动到的 *Web* 元素, 可选
-* Point: 偏移量。
-
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionMoveTo.md b/docx/actions/web/WebActionMoveTo.md
index f2ad31c3..9db46423 100644
--- a/docx/actions/web/WebActionMoveTo.md
+++ b/docx/actions/web/WebActionMoveTo.md
@@ -1,5 +1,9 @@
# 动作链.移动
-将鼠标移动到元素上。
+此方法将鼠标移动到元素的视图中心点。这也称为 *悬停*。如果提供偏移量,首先将鼠标移动到指定的元素中心点,然后移动提供的偏移量中的像素数。
+
+* 该动作需要加入到动作链当中。
+
+
## 子流程
> 不支持
@@ -7,19 +11,26 @@
## 运行参数
-* Action Chains: 动作链
-* Element:要移动到的 *Web* 元素
+* 元素
+> 鼠标要移动到的 *Web* 元素。
+
+* 偏移
+> 位置偏移量,偏移量是相对于元素中心的。
## 输出
-
+> 无
+
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_move.simple
+* 流程(偏移):https://github.com/shelllet/WinUi/blob/main/web/action_moveto_offset.simple
+
+移动
+
-## 脚本调用
-```python
-import simple;
+偏移移动
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionPause.md b/docx/actions/web/WebActionPause.md
new file mode 100644
index 00000000..74b3449d
--- /dev/null
+++ b/docx/actions/web/WebActionPause.md
@@ -0,0 +1,26 @@
+# 动作链.暂停
+在两个动作链相关的动作之间暂停执行一段时间。
+
+* 该动作需要加入到动作链当中。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 时间
+> 暂停时间,单位(秒)。
+
+## 输出
+
+> 无输出
+
+
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_pause.simple
+
+
+
diff --git a/docx/actions/web/WebActionRelease.md b/docx/actions/web/WebActionRelease.md
index 04dd93b5..c401c279 100644
--- a/docx/actions/web/WebActionRelease.md
+++ b/docx/actions/web/WebActionRelease.md
@@ -1,5 +1,9 @@
-# 动作链.释放
-释放元素上按住的鼠标按钮。
+# 动作链.释放鼠标键
+释放 *Web* 元素上按住的鼠标键。通常配合[动作链.点按 ](./actions/WebActionClickHold.md)使用。
+
+* 该动作需要加入到动作链当中。
+
+
## 子流程
> 不支持
@@ -7,20 +11,19 @@
## 运行参数
-* Action Chains: 动作链
-* Element:鼠标悬停的元素
+* 元素
+> 要释放鼠标键的 *Web* 元素。
-## 输出
+## 输出
+> 无
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_click_release.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebActionSendText.md b/docx/actions/web/WebActionSendText.md
index ecede705..8decd4c9 100644
--- a/docx/actions/web/WebActionSendText.md
+++ b/docx/actions/web/WebActionSendText.md
@@ -1,5 +1,10 @@
# 动作链.发送文本
-设置文本
+向当前有焦点的 *Web* 元素发送文本,参考:[设置文本](./actions/WebElementSendText.md)。
+
+* 该动作需要加入到动作链当中。
+
+
+
## 子流程
> 不支持
@@ -7,21 +12,19 @@
## 运行参数
-* Action Chains: 动作链
-* Element:鼠标悬停的元素
-* Text:发送的字符串。
+* 元素
+> *Web*元素。
+* 文本
+> 设置的字符串。
-## 输出
-
+## 输出
+> 无
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/action_sendtxt.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebCookies.md b/docx/actions/web/WebCookies.md
index 485cd89d..e6e7cbd7 100644
--- a/docx/actions/web/WebCookies.md
+++ b/docx/actions/web/WebCookies.md
@@ -1,5 +1,7 @@
-# 获取 Cookies
-获取 Cookies
+# 获取 Cookies
+获取浏览器站点的 *Cookies*。
+
+
## 子流程
> 不支持
@@ -7,20 +9,25 @@
## 运行参数
-* Driver:浏览器对象
-* Name: 名称
+* 对象
+> 浏览器对象
+* 名称
+> 字段名称,如果名称为空。获取所有 *Cookies*。
+* 格式
+> 参考:[CookiesFormat](./enums/CookiesFormat.md)。
## 输出
-> 如歌名称为空,输出 [`JsonArray`](../../types/JsonArray.md), 否则输出:[`JsonObject`](../../types/JsonObject.md)。
+> 如果默认格式,输出类型参考:[`Dict`](./types/Dict.md) 和 [`NdArray`](./types/NdArray.md)。 如果选择 `Netscape` 格式, 输出类型参考:[String](./types/String.md)。
+
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/cookies.simple
-## 脚本调用
-```python
-import simple;
-```
+## 版本变化
-## 示例
\ No newline at end of file
+- 0.46
+> 增加数据格式。
\ No newline at end of file
diff --git a/docx/actions/web/WebElementAttribute.md b/docx/actions/web/WebElementAttribute.md
index 47d088ef..b493fc2f 100644
--- a/docx/actions/web/WebElementAttribute.md
+++ b/docx/actions/web/WebElementAttribute.md
@@ -1,5 +1,7 @@
# 获取属性
-获取属性
+获取元素属性。
+
+
## 子流程
> 支持
@@ -7,20 +9,19 @@
## 运行参数
-* Element:元素
-* Attribute:属性
+* 元素
+> *Web*元素。
+* 属性
+> 元素属性
## 输出
+> 元素属性,字符串类型,参考: [字符串](./types/String.md)。
-
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/attr.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebElementClear.md b/docx/actions/web/WebElementClear.md
index b8b5d02a..3a6bf0fc 100644
--- a/docx/actions/web/WebElementClear.md
+++ b/docx/actions/web/WebElementClear.md
@@ -1,6 +1,7 @@
# 清除文本
如果文本是文本输入元素,则清除文本。
+
## 子流程
> 不支持
@@ -8,19 +9,16 @@
## 运行参数
-* Element:元素
-
+* 元素
+> 文本输入框。
## 输出
> 无
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/clear.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebElementClick.md b/docx/actions/web/WebElementClick.md
index c767b9a9..88ad826c 100644
--- a/docx/actions/web/WebElementClick.md
+++ b/docx/actions/web/WebElementClick.md
@@ -1,25 +1,26 @@
-# 点击
-点击
+# 点击
+模拟鼠标左键点击 *Web* 元素。
+
+
+
## 子流程
-> 不支持
+> 不支持
## 运行参数
-* Element:元素
+* 元素
## 输出
> 无
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/click.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebElementIsSelect.md b/docx/actions/web/WebElementIsSelect.md
deleted file mode 100644
index d41c3de8..00000000
--- a/docx/actions/web/WebElementIsSelect.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# 选中检查
-返回元素是否被选中,可用于检查复选框或单选按钮是否被选中。
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-* Element:元素
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebElementSelected.md b/docx/actions/web/WebElementSelected.md
new file mode 100644
index 00000000..4a28aacb
--- /dev/null
+++ b/docx/actions/web/WebElementSelected.md
@@ -0,0 +1,26 @@
+# 选中检查
+检查元素是否被选中,可用于检查复选框或单选按钮、下拉框选项是否被选中。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+
+* 元素
+> *Web* 元素。
+
+## 输出
+> 是否被选中。参考:[Boolean](./types/Boolean.md)
+
+
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/is_selected.simple
+
+
+
+
diff --git a/docx/actions/web/WebElementSendKey.md b/docx/actions/web/WebElementSendKey.md
index c1c4a89d..f47e245e 100644
--- a/docx/actions/web/WebElementSendKey.md
+++ b/docx/actions/web/WebElementSendKey.md
@@ -1,5 +1,7 @@
# 发送按键
-发送按键
+向 *Web* 元素发送按键。
+
+
## 子流程
> 不支持
@@ -8,19 +10,19 @@
## 运行参数
-* Element:元素
-* Key: 按键
+* 元素
+
+* 按键
+> 参考: [WebKey](./enums/WebKey.md)
## 输出
> 无
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/sendkey.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebElementSendText.md b/docx/actions/web/WebElementSendText.md
index afef200e..8fc86e3c 100644
--- a/docx/actions/web/WebElementSendText.md
+++ b/docx/actions/web/WebElementSendText.md
@@ -1,7 +1,7 @@
-# 发送文本
+# 设置文本
向当前有焦点的 *Web* 元素发送文本。
-
+
## 子流程
> 不支持
@@ -9,21 +9,21 @@
## 运行参数
-* Element:*Web*元素
-* Text:输入的文本信息
+* 元素
+> *Web*元素。
+* 文本
+> 待输入的文本信息。
## 输出
> 无
-## 脚本调用
-```python
-import simple;
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/sendkey.simple
+
-```
-## 示例
-通过 *ID* 查找百度搜索输入框,输入文本`WinUi++`:https://github.com/shelllet/winui/blob/main/web/input.simple
diff --git a/docx/actions/web/WebElementSubmit.md b/docx/actions/web/WebElementSubmit.md
index 4ddf1d54..f6482af5 100644
--- a/docx/actions/web/WebElementSubmit.md
+++ b/docx/actions/web/WebElementSubmit.md
@@ -1,5 +1,9 @@
# 表单提交
-表单提交
+表单提交。
+
+* Html 中的 `form` 元素被称之为表单,`form` 元素中的内容,包含有交互控制元件,其目的是用来向 *web* 服务器提交信息,实现前后端的交互目的。
+
+
## 子流程
> 不支持
@@ -7,18 +11,17 @@
## 运行参数
-* Element:*web* 元素
-
+* 元素
+> `form` 当中的交互控件。
## 输出
+> 无
+
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/submit.simple
-## 脚本调用
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebExecute.md b/docx/actions/web/WebExecute.md
new file mode 100644
index 00000000..36d2b4b2
--- /dev/null
+++ b/docx/actions/web/WebExecute.md
@@ -0,0 +1,27 @@
+# 执行脚本
+在当前窗口/框架中同步执行 *JavaScript* 脚本。
+
+
+
+## 子流程
+
+> 不支持。
+
+## 运行参数
+
+* 对象
+> 浏览器对象。
+* 脚本
+> *JavaScript* 脚本。
+
+## 输出
+
+> 无
+
+
+## 资源
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/WebExecute.simple
+
+
+
diff --git a/docx/actions/web/WebFocusFrameDefault.md b/docx/actions/web/WebFocusFrameDefault.md
index a66a682f..cc5fff5f 100644
--- a/docx/actions/web/WebFocusFrameDefault.md
+++ b/docx/actions/web/WebFocusFrameDefault.md
@@ -1,5 +1,8 @@
-# 框架*设置焦点
-将焦点切换到默认框架。
+# 重置框架
+将焦点切换到默认框架。通常操作完 *iframe* 后,可以使用该动作切换回默认的 *html* 页面。
+
+
+
## 子流程
> 不支持
@@ -7,19 +10,17 @@
## 运行参数
-* Driver: 浏览器对象
+* 对象
+> 浏览器对象
## 输出
+> 无
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/switch_frame.simple
-## 脚本调用
-
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebGetElement.md b/docx/actions/web/WebGetElement.md
index fdc22e71..0d874c78 100644
--- a/docx/actions/web/WebGetElement.md
+++ b/docx/actions/web/WebGetElement.md
@@ -1,7 +1,7 @@
# 查找元素
-查找 *Web* 元素
+查找 *Web* 元素。
-
+
## 子流程
> 不支持
@@ -9,22 +9,23 @@
## 运行参数
-* Driver: 浏览器对象,即 *WebOpen* 动作的返回值。
-* By: 查找元素的方法, 参考 [定位策略](../../intro/webdriver/locators.md)
+* 对象
+> 浏览器,即 *WebOpen* 动作的返回值,或者已知[元素](./types/WebElement.md)(通常用来查找子元素)。
+* 元素
+> 元素标识,依据不同的查找方式,该值所表示的意义可能不同。
+* 方法
+> 查找元素的方法, 参考 [定位策略](./introduction/webdriver/locators.md)
## 输出
-> 查找到的 *Web* 元素, 类型:[WebElement](../../types/WebElement.md)
+> 查找到的 *Web* 元素, 类型:[WebElement](./types/WebElement.md)
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/openurl.simple
-```python
-import simple;
-```
-## 示例
-通过 *ID* 查找百度搜索输入框,输入文本`WinUi++`:https://github.com/shelllet/winui/blob/main/web/input.simple
diff --git a/docx/actions/web/WebOpen.md b/docx/actions/web/WebOpen.md
index 02581e8c..43be4749 100644
--- a/docx/actions/web/WebOpen.md
+++ b/docx/actions/web/WebOpen.md
@@ -1,37 +1,51 @@
-# 打开浏览器
-打开浏览器,支持,打开 *Chrome* 和 *Edge*浏览器。
+# 打开浏览器
-
+打开浏览器,支持 _Chrome_ 和 *Edge* 浏览器。由于使用浏览器用户数据的 *Default* 配置,执行该动作之前需要退出已经打开的浏览器。
+
+* *Edge* 浏览器将无法以管理员模式启动。这是微软出于安全原因而做出的明确决定。
+
+
## 子流程
-> 不支持
+> 不支持
## 运行参数
-* Url 网址,以`http://` 或者`https://`开头。
-* Browser 浏览器,可以选择 谷歌 *Chrome* 或者 微软 *Edge* 浏览器
+- 网址
+ > 以`http://` 或者`https://`开头。若是本地文件,以`file:///` 开始, 后面跟上文件路径。
+- 浏览器
+ > 可以选择 谷歌 _Chrome_ 或者 微软 _Edge_ 浏览器。
+
+- 用户目录
+ > 参考[浏览器配置目录](./introduction/webdriver/browser_directory.md)。 由于浏览器的限制,如果该目录和浏览器的默认目录一致,需要在执行流程前退出当前已经打开的浏览器。
+- 配置名称
+ > 参考[浏览器配置目录](./introduction/webdriver/browser_directory.md),配置目录名称。
## 输出
+> 参考:[WebDriver](./types/WebDriver.md)
-> [WebDriver](../../types/WebDriver.md)
+## 示例
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/openurl.simple
-## 脚本调用
+## 注意事項
-```python
-import simple;
+ * 在 Windows 上使用 Selenium 讓 Chrome 載入預設的用戶資料目錄(User Data Directory)可以保留你的登錄狀態、瀏覽歷史、書籤和擴展程序等。但是新版的Chrome浏览器似乎不支持默认的用户配置。仍然会报出来「DevToolsActivePort」的错误。
+ * **不要同時運行兩個 Chrome 實例:** 你不能在同一個時間,同時運行一個手動打開的 Chrome 瀏覽器和你用 Selenium 腳本啟動的、且使用相同用戶資料目錄的 Chrome 實例。這會導致「DevToolsActivePort」錯誤。
+ * **路徑中的斜槓:** 在 Python 中,Windows 的路徑可以使用雙反斜槓 `\\` 或單正斜槓 `/`。在 Java 中,則需要使用雙反斜槓 `\\` 來作為轉義字元。
+ * **不同作業系統的路徑:** 上述路徑是針對 Windows 10/11 的。如果你在 macOS 或 Linux 上,路徑會不同。你可以同樣使用 `chrome://version/` 來找到對應的正確路徑。
+
+## 驱动
+
+该动作如果首次运行,会检测驱动缓存目录:`%LOCALAPPDATA%\Simple\selenium` 是否有上表列出的相对应的浏览器驱动,如果不存在,则会下载相应的浏览器驱动。因此需要网络连接或者手动下载驱动放置在该目录。若需要手动下载,请参考:[浏览器 WebDriver 驱动](./introduction/webdriver/download.md)。
-```
-## 示例
-!> 该动作第一次运行,会检测缓存目录:`%LOCALAPPDATA%\Simple\WDM` 是否有相应的浏览器驱动,如果不存在,则会下载相应的浏览器驱动。可能需要代码才能成功下载以下浏览器驱动
+!> 由于浏览器的安全策略限制,使用管理员身份执行该动作,可能导致失败!
-## 驱动手动下载
-| Browser | Maintained by | Download |
-| :-------------: | :-----------: | ---------------------------------------------------------------------------------- |
-| Chromium/Chrome | Google | [Downloads](https://chromedriver.chromium.org/downloads) |
-| Edge | Microsoft | [Downloads](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) |
+## 版本变化
+- 0.46
+> 新增加 `用户目录` 和 `配置名称` 运行时参数。
\ No newline at end of file
diff --git a/docx/actions/web/WebScreenshot.md b/docx/actions/web/WebScreenshot.md
index ba899fe6..10b3538f 100644
--- a/docx/actions/web/WebScreenshot.md
+++ b/docx/actions/web/WebScreenshot.md
@@ -1,5 +1,8 @@
# 元素截图
-元素截图或者页面截图
+*Web* 元素截图或者页面截图。
+
+
+
## 子流程
> 不支持
@@ -7,19 +10,18 @@
## 运行参数
-* Source:源,如果浏览器对象,则执行页面截图, 或者 *Web* 元素,执行元素截图
+* 对象
+>如果浏览器对象,则执行页面截图, 如果是 *Web* 元素,执行元素截图
## 输出
-> [Image](../../types/Image.md)
+> 图像,[Image](./types/Image.md)
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/screenshot.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebSwitchToFrame.md b/docx/actions/web/WebSwitchToFrame.md
index 5158efbe..5cd220d5 100644
--- a/docx/actions/web/WebSwitchToFrame.md
+++ b/docx/actions/web/WebSwitchToFrame.md
@@ -1,5 +1,7 @@
# 切换框架
-将焦点切换到指定的框架
+将焦点切换到指定的 *iframe* 框架。
+
+
## 子流程
> 不支持
@@ -7,8 +9,10 @@
## 运行参数
-* Driver:浏览器对象
-* Name:模型名称或者 *ID*。
+* 对象
+> 浏览器对象。
+* 名称
+> 框架名称, 索引或者 框架 *ID*。
## 输出
@@ -16,11 +20,9 @@
> 无输出
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/switch_frame.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitAlert.md b/docx/actions/web/WebWaitAlert.md
index ab9aabbb..c34b50d5 100644
--- a/docx/actions/web/WebWaitAlert.md
+++ b/docx/actions/web/WebWaitAlert.md
@@ -1,13 +1,17 @@
# 等待*警告框
-检查当前是否存在警报并切换到它。
+检查当前浏览器窗口是否存在警报并切换到它。
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 *60* 秒。
+* 对象
+> 浏览器对象。
+* 超时
+> 超时时间,默认 *60* 秒。
## 输出
@@ -15,11 +19,9 @@
> 无输出,在超时时间内,如果存在,则返回,否则一直等待,直到超时返回。
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/waiit_alert.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitClickable.md b/docx/actions/web/WebWaitClickable.md
index b17a7e28..ed49c473 100644
--- a/docx/actions/web/WebWaitClickable.md
+++ b/docx/actions/web/WebWaitClickable.md
@@ -1,27 +1,31 @@
# 等待*可点击
-用于检查元素是可见的并已启用,以便您可以单击它。
+用于检查元素是可见的并已启用,以便您可以点击它。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 *60* 秒。
-* Element:元素值, 由 *By* 值确定。字符串类型 [`String`](../../types/String.md)
-* By:定位策略,参考:[web locators](../../intro/webdriver/locators.md)
+* 对象
+> 浏览器对象
+* 超时
+> 超时时间,默认 *60* 秒。
+* 元素
+> 由 *定位策略* 来确定。字符串类型 [`String`](./types/String.md)
+* 定位
+> 定位策略,参考:[web locators](./introduction/webdriver/locators.md)
## 输出
-> 无输出,在超时时间内,如果元素可单击,则返回,否则一直等待,直到超时返回。
+> 无输出,在超时时间内,如果元素可点击,则返回,否则一直等待,直到超时返回。
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/waiit_clickable.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitFrameAvailable.md b/docx/actions/web/WebWaitFrameAvailable.md
index cdc9eb5e..33e9c35f 100644
--- a/docx/actions/web/WebWaitFrameAvailable.md
+++ b/docx/actions/web/WebWaitFrameAvailable.md
@@ -1,27 +1,32 @@
-# 等待*框架可切换
-检查给定的框架是否可以切换到。
+# 等待*框架
+检查给定的 *iframe* 框架是否可以切换到。如果相应的 *iframe* 可用,会切换置相应的 *iframe*。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 *60* 秒。
-* Element:元素值, 由 *By* 值确定。字符串类型 [`String`](../../types/String.md)
-* By:定位策略,参考:[web locators](../../intro/webdriver/locators.md)
+* 对象
+> 浏览器对象。
+* 超时
+> 超时时间,默认 *60* 秒。
+* 元素
+> 相应的 *iframe*, 由 *定位* 值确定。字符串类型 [`String`](./types/String.md)
+* 定位
+> 定位策略,参考:[web locators](./introduction/webdriver/locators.md)
## 输出
-> 无输出,在超时时间内,模架可用,则返回,否则一直等待,直到超时返回。
+> 返回第一个定位到的框架元素,在超时时间内,框架可用,则返回,否则一直等待,直到超时返回。
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/waiit_iframe.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitPresence.md b/docx/actions/web/WebWaitPresence.md
index 8b925f54..eaacf086 100644
--- a/docx/actions/web/WebWaitPresence.md
+++ b/docx/actions/web/WebWaitPresence.md
@@ -1,28 +1,36 @@
# 等待*元素呈现
检查元素是否存在于页面的 *DOM* 中,这并不一定意味着该元素是可见的。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 *60* 秒。
-* Element:元素值, 由 *By* 值确定。
-* By:定位策略,参考:[web locators](../../intro/webdriver/locators.md)
-* Mode:模型,唯一/所有,比如 *By* 根据 *ID* 定位, 这里的 *Mode* 就是 *One* ;比如 *By* 根据 *CLASS_NAME* 定位元素,就可以使用 *ALl*。
-
+* 对象
+> 浏览器对象。
+* 超时
+> 超时时间,默认 *60* 秒。
+* 元素
+> 元素值,由 *By* 值确定。
+* 定位策略
+> 参考:[web locators](./introduction/webdriver/locators.md)。
+
+* 等待
+> 等待模式,唯一/所有,比如 *By* 根据 *ID* 定位, 这里的 *Mode* 就是 *One* ;比如 *By* 根据 *CLASS_NAME* 定位元素,就可以使用 *ALl*。参考:[WebLocated](./enums/WebLocated.md)。
+ * 等待 *一个* `One`元素。
+ * 等待 *所有* `All` 元素。
## 输出
> 无,在超时时间内,元素呈现,则返回,否则一直等待,直到超时返回。
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/presence.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitTitle.md b/docx/actions/web/WebWaitTitle.md
index 0c1fe62e..28b41dd5 100644
--- a/docx/actions/web/WebWaitTitle.md
+++ b/docx/actions/web/WebWaitTitle.md
@@ -1,15 +1,24 @@
# 等待*标题
-检查标题是否包含区分大小写的字符串。
+检查浏览器窗口标题是否包含区分大小写的字符串。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 `60` 秒。
-* Text:标题。
-* Method:分为完全匹配 `EXACT_MATCH`,和部分匹配 `PARTIAL_MATCH`
+* 对象
+> 浏览器对象
+* 超时
+> 超时时间,默认 `60` 秒。
+* 标题
+> 浏览器窗口标题。
+* 方式
+> 标题匹配方式。
+ * 完全匹配 `EXACT_MATCH`,
+ * 部分匹配 `PARTIAL_MATCH`
## 输出
@@ -17,11 +26,9 @@
> 无输出,在超时时间内,标题完全匹配或者部分匹配,则返回,否则一直等待,直到超时返回。
-## 脚本调用
+## 示例
+
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/wait_title.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitVisibilityByElement.md b/docx/actions/web/WebWaitVisibilityByElement.md
index 9f847270..87e41e75 100644
--- a/docx/actions/web/WebWaitVisibilityByElement.md
+++ b/docx/actions/web/WebWaitVisibilityByElement.md
@@ -1,27 +1,32 @@
# 等待*可见
-通过已知元素,检查已知存在于页面 *DOM* 上的元素是否可见,可见性意味着元素不仅被显示而且高度和宽度都大于 `0`
+通过已知元素,检查该元素在页面 *DOM* 上是否可见,可见性意味着元素不仅被显示而且高度和宽度都大于 `0`。
+
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 `60` 秒。
-* Element:元素,可以通过 *查找元素* :[`WebGetElement`](./WebGetElement.md)来获取 *Web* 元素。
-* Visibility:可见性:*显示* `Visible`,和 *隐藏* `Invisible`
+* 对象
+> 浏览器对象
+* 元素
+> 可以通过 *查找元素* :[`WebGetElement`](./WebGetElement.md)来获取 *Web* 元素。
+* 超时
+> 超时时间,默认 `60` 秒。
+* 选项
+> 可见性:*显示* `Visible`,和 *隐藏* `Invisible`
## 输出
-> 无输出,在超时时间内,如果 *Web* 元素可见,则返回,否则一直等待,直到超时返回。
+> 返回等待的元素。在超时时间内,如果 *Web* 元素可见,则返回,否则一直等待,直到超时返回。
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/wait_visible.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/WebWaitVisibilityByLocator.md b/docx/actions/web/WebWaitVisibilityByLocator.md
index a83083ec..42bccc1b 100644
--- a/docx/actions/web/WebWaitVisibilityByLocator.md
+++ b/docx/actions/web/WebWaitVisibilityByLocator.md
@@ -1,29 +1,41 @@
-# 等待*可见(定位器)
-通过[定位策略](../../intro/webdriver/locators.md),检查已知存在于页面 *DOM* 上的元素是否可见,可见性意味着元素不仅被显示而且高度和宽度都大于 `0`
+# 等待*可见(定位)
+通过[定位策略](./introduction/webdriver/locators.md),检查已知存在于页面 *DOM* 上的元素是否可见,可见性意味着元素不仅被显示而且高度和宽度都大于 `0`
+
+
## 子流程
> 不支持
## 运行参数
-* Driver:浏览器对象
-* Timeout:超时时间,默认 `60` 秒。
-* Element:*Web*元素,根据 *By*的选择会有所不同。
-* By: [定位策略](../../intro/webdriver/locators.md)
-* Visibility:可见性:*显示* `Visible`,和 *隐藏* `Invisible`
-* Mode:模式:*一个* `One`,*Any* : `任意` 和 *所有* `All`, 当 *Visibility* 选择 `Invisible` 时,忽略此参数
+* 对象
+> 浏览器对象。
+* 超时
+> 超时时间,默认 `60` 秒。
+* 元素
+> *Web*元素,根据 *By*的选择会有所不同。
+
+* 策略
+> 参考: [定位策略](./introduction/webdriver/locators.md)。
+
+* 可见性
+> *显示* `Visible`,和 *隐藏* `Invisible`。
+
+* 等待
+> 参考:[WebLocated](./enums/WebLocated.md)。 当 *Visibility* 选择 `Invisible` 时,忽略此参数。
+ * 等待 *一个* `One`元素。
+ * 等待 *任意* `Any` 元素。
+ * 等待 *所有* `All` 元素。
## 输出
-> 无输出,在超时时间内,如果 *Web* 元素可见 或者不可见,则返回,否则一直等待,直到超时返回。
+> 返回其中一个等待的元素。在超时时间内,如果 *Web* 元素可见 或者不可见,则返回,否则一直等待,直到超时返回。
+
+## 示例
-## 脚本调用
+* 流程:https://github.com/shelllet/WinUi/blob/main/web/wait_visible_loc.simple
-```python
-import simple;
-```
-## 示例
\ No newline at end of file
diff --git a/docx/actions/web/images/01.png b/docx/actions/web/images/01.png
index 9fb69a61..170454bd 100644
Binary files a/docx/actions/web/images/01.png and b/docx/actions/web/images/01.png differ
diff --git a/docx/actions/web/images/02.png b/docx/actions/web/images/02.png
index b07bace6..84ea8e70 100644
Binary files a/docx/actions/web/images/02.png and b/docx/actions/web/images/02.png differ
diff --git a/docx/actions/web/images/03.png b/docx/actions/web/images/03.png
index 76e841ea..6c77981d 100644
Binary files a/docx/actions/web/images/03.png and b/docx/actions/web/images/03.png differ
diff --git a/docx/actions/web/images/04.png b/docx/actions/web/images/04.png
new file mode 100644
index 00000000..4ddcf328
Binary files /dev/null and b/docx/actions/web/images/04.png differ
diff --git a/docx/actions/web/images/05.png b/docx/actions/web/images/05.png
new file mode 100644
index 00000000..07a7c1d4
Binary files /dev/null and b/docx/actions/web/images/05.png differ
diff --git a/docx/actions/web/images/06.png b/docx/actions/web/images/06.png
new file mode 100644
index 00000000..cc4fcd56
Binary files /dev/null and b/docx/actions/web/images/06.png differ
diff --git a/docx/actions/web/images/07.png b/docx/actions/web/images/07.png
new file mode 100644
index 00000000..1c53e452
Binary files /dev/null and b/docx/actions/web/images/07.png differ
diff --git a/docx/actions/web/images/08.png b/docx/actions/web/images/08.png
new file mode 100644
index 00000000..44f62716
Binary files /dev/null and b/docx/actions/web/images/08.png differ
diff --git a/docx/actions/web/images/09.png b/docx/actions/web/images/09.png
new file mode 100644
index 00000000..f534e2ff
Binary files /dev/null and b/docx/actions/web/images/09.png differ
diff --git a/docx/actions/web/images/10.png b/docx/actions/web/images/10.png
new file mode 100644
index 00000000..a532bd4c
Binary files /dev/null and b/docx/actions/web/images/10.png differ
diff --git a/docx/actions/web/images/11.png b/docx/actions/web/images/11.png
new file mode 100644
index 00000000..71e87f69
Binary files /dev/null and b/docx/actions/web/images/11.png differ
diff --git a/docx/actions/web/images/12.png b/docx/actions/web/images/12.png
new file mode 100644
index 00000000..e2b303a4
Binary files /dev/null and b/docx/actions/web/images/12.png differ
diff --git a/docx/actions/web/images/13.png b/docx/actions/web/images/13.png
new file mode 100644
index 00000000..4bc7d11e
Binary files /dev/null and b/docx/actions/web/images/13.png differ
diff --git a/docx/actions/web/images/14.png b/docx/actions/web/images/14.png
new file mode 100644
index 00000000..261d7bce
Binary files /dev/null and b/docx/actions/web/images/14.png differ
diff --git a/docx/actions/web/images/15.png b/docx/actions/web/images/15.png
new file mode 100644
index 00000000..29407c7b
Binary files /dev/null and b/docx/actions/web/images/15.png differ
diff --git a/docx/actions/web/images/16.png b/docx/actions/web/images/16.png
new file mode 100644
index 00000000..1df8b396
Binary files /dev/null and b/docx/actions/web/images/16.png differ
diff --git a/docx/actions/web/images/17.png b/docx/actions/web/images/17.png
new file mode 100644
index 00000000..403920d5
Binary files /dev/null and b/docx/actions/web/images/17.png differ
diff --git a/docx/actions/web/images/18.png b/docx/actions/web/images/18.png
new file mode 100644
index 00000000..551f2f98
Binary files /dev/null and b/docx/actions/web/images/18.png differ
diff --git a/docx/actions/web/images/19.png b/docx/actions/web/images/19.png
new file mode 100644
index 00000000..965f497d
Binary files /dev/null and b/docx/actions/web/images/19.png differ
diff --git a/docx/actions/web/images/20.png b/docx/actions/web/images/20.png
new file mode 100644
index 00000000..862aa1a1
Binary files /dev/null and b/docx/actions/web/images/20.png differ
diff --git a/docx/actions/web/images/21.png b/docx/actions/web/images/21.png
new file mode 100644
index 00000000..636fe68a
Binary files /dev/null and b/docx/actions/web/images/21.png differ
diff --git a/docx/actions/web/images/22.png b/docx/actions/web/images/22.png
new file mode 100644
index 00000000..4d5dc75a
Binary files /dev/null and b/docx/actions/web/images/22.png differ
diff --git a/docx/actions/web/images/23.png b/docx/actions/web/images/23.png
new file mode 100644
index 00000000..08c71194
Binary files /dev/null and b/docx/actions/web/images/23.png differ
diff --git a/docx/actions/web/images/24.png b/docx/actions/web/images/24.png
new file mode 100644
index 00000000..db64ec54
Binary files /dev/null and b/docx/actions/web/images/24.png differ
diff --git a/docx/actions/web/images/25.png b/docx/actions/web/images/25.png
new file mode 100644
index 00000000..278338e8
Binary files /dev/null and b/docx/actions/web/images/25.png differ
diff --git a/docx/actions/web/images/26.png b/docx/actions/web/images/26.png
new file mode 100644
index 00000000..8d1605cb
Binary files /dev/null and b/docx/actions/web/images/26.png differ
diff --git a/docx/actions/web/images/27.png b/docx/actions/web/images/27.png
new file mode 100644
index 00000000..5139c89c
Binary files /dev/null and b/docx/actions/web/images/27.png differ
diff --git a/docx/actions/web/images/28.png b/docx/actions/web/images/28.png
new file mode 100644
index 00000000..a1fbced6
Binary files /dev/null and b/docx/actions/web/images/28.png differ
diff --git a/docx/actions/web/images/29.png b/docx/actions/web/images/29.png
new file mode 100644
index 00000000..73628919
Binary files /dev/null and b/docx/actions/web/images/29.png differ
diff --git a/docx/actions/web/images/30.png b/docx/actions/web/images/30.png
new file mode 100644
index 00000000..31ad03b8
Binary files /dev/null and b/docx/actions/web/images/30.png differ
diff --git a/docx/actions/web/images/31.png b/docx/actions/web/images/31.png
new file mode 100644
index 00000000..7da7f5b0
Binary files /dev/null and b/docx/actions/web/images/31.png differ
diff --git a/docx/actions/window/ActiveWindow.md b/docx/actions/window/ActiveWindow.md
new file mode 100644
index 00000000..1c4095c7
--- /dev/null
+++ b/docx/actions/window/ActiveWindow.md
@@ -0,0 +1,28 @@
+# 激活窗口
+将创建指定窗口的线程置于前台并激活该窗口。键盘输入被定向到窗口,并且为用户改变各种视觉提示。系统为创建前台窗口的线程分配比其他线程稍高的优先级。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* [窗口](./types/Wnd.md)
+> 如果为空,返回当前的前置窗口。如果不为空,设置该窗口为前置窗口。
+
+## 输出
+
+> [`Wnd`](./types/Wnd.md)
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/ActiveWindow.simple
+
+
+
+
+
+!> 无法前置最小化的窗口
\ No newline at end of file
diff --git a/docx/actions/window/CloseWindow.md b/docx/actions/window/CloseWindow.md
new file mode 100644
index 00000000..f4c965f8
--- /dev/null
+++ b/docx/actions/window/CloseWindow.md
@@ -0,0 +1,20 @@
+# 关闭窗口
+关闭指定的窗口,如果指定的窗口是父窗口或所有者窗口,也会在销毁父窗口或所有者窗口时自动销毁关联的子窗口或所有者窗口。关闭窗口也可能会让该窗口所在的应用程序退出。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* [窗口](./types/Wnd.md)
+> 需要关闭的窗口。如果使用字符串类型,可使用 `:` 号连接窗口 *标题* 和窗口 *类名*。
+
+## 输出
+
+> 无
+
+
+## 资源
\ No newline at end of file
diff --git a/docx/actions/window/EnumWindows.md b/docx/actions/window/EnumWindows.md
index dc1c127a..5fdd60f6 100644
--- a/docx/actions/window/EnumWindows.md
+++ b/docx/actions/window/EnumWindows.md
@@ -1,25 +1,41 @@
# 枚举窗口
-枚举窗口
+枚举操作系统中的窗口,并按照指定的规则进行窗口排序。
+
+* *Win11* 系统中的计算器,记事本,多窗口仍属于同一进程。
+
+
## 子流程
-> 支持
+> 支持, 枚举到的每个窗口都会传入子流程。
## 运行参数
-* Parent:父窗口
+* [窗口](./types/Wnd.md)
+ > 如果不为空,则枚举相应的子窗口,否则,枚举所有的顶层窗口。
+* 标题
+> 根据窗口标题过滤,可为空,不执行过滤。
+* 类名
+> 根据窗口类名过滤,可为空,不执行过滤。
+* 排序
+> 参考 [WindowSortDirection](../enums/WindowSortDirection.md)
+
## 输出
-> 窗口: [`Wnds`](../../types/Wnd.md)
+> 窗口: [`Wnds`](./types/Wnd.md)
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/EnumWindows.simple
-## 脚本调用
-```python
-import simple;
+## 版本变化
-```
+* 0.41.1
+> 移动异步处理参数。
-## 示例
\ No newline at end of file
+* 0.31
+> 增加运行时参数(标题/ 类名过滤/ 排序)。
\ No newline at end of file
diff --git a/docx/actions/window/FindWindow.md b/docx/actions/window/FindWindow.md
index 34edee92..5fa4a266 100644
--- a/docx/actions/window/FindWindow.md
+++ b/docx/actions/window/FindWindow.md
@@ -1,32 +1,44 @@
# 查找窗口
-查找 *Windows* 系统中的窗口,该动作通过*窗口标题*或者*窗口类*搜索窗口。
+查找操作系统中的窗口,该动作支持通过*窗口标题*或者*窗口类*搜索窗口。
-
+* 多个相同的窗口,该动作只会返回其中一个窗口,顺序不确定。
+
+
## 子流程
> 不支持
## 运行参数
+* 父窗口
+> 默认为空,如果不为空,查找相应的子窗口,不为空,则查找当前系统所有的顶层窗口。可借助 *Spy++* 来辅助操作。
+
+* 索引
+> 如果不为空,则对应查找到的多个相同标题或类名的窗口的索引。
-* Parent: 父窗口
-* Title: 窗口标题
-* Class: 窗口类
+* 标题
+> 窗口标题,支持 [通配符匹配](./introduction/workflow/wildcard.md)。
+
+* 窗口类
+ > 窗口类名,支持 [通配符匹配](./introduction/workflow/wildcard.md)。
## 输出
-> 窗口类型:`Wnd`
+> 窗口:[`Wnd`](./types/Wnd.md)
+
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/FindWindow.simple
+
-### 脚本调用
- 脚本可以支持通过窗口标题和窗口类来查找窗口
-```python
-import simple;
+!> [Windows下的程序及热键监视神器——Spy++](https://zhuanlan.zhihu.com/p/355878952)
-simple.Wnd.findWindow('notepad.exe', None) # 不使用窗口类
-```
+!> 附件: [spy++](https://gitlab.com/junwu/winui/-/raw/main/tools/spyxx.zip)
-### 示例
+## Changed
-[https://github.com/shelllet/WinUi/blob/main/window/findwindow.simple](https://github.com/shelllet/WinUi/blob/main/window/findwindow.simple)
+* 0.48
+> 增加 *索引* 参数。
\ No newline at end of file
diff --git a/docx/actions/window/FlashWindow.md b/docx/actions/window/FlashWindow.md
new file mode 100644
index 00000000..2608bc95
--- /dev/null
+++ b/docx/actions/window/FlashWindow.md
@@ -0,0 +1,20 @@
+# 闪烁窗口
+闪烁指定的窗口,它不会更改窗口的活动状态。
+
+
+
+## 子流程
+
+> 不支持
+
+## 运行参数
+
+* 窗口
+
+## 输出
+
+> 无
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/FlashWindow.simple
diff --git a/docx/actions/window/MessageBox.md b/docx/actions/window/MessageBox.md
new file mode 100644
index 00000000..39e6ea65
--- /dev/null
+++ b/docx/actions/window/MessageBox.md
@@ -0,0 +1,42 @@
+# 消息框
+弹出一个消息框,该动作会阻止流程继续执行,直到消息框关闭。
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* [caption](./types/String.md)
+> 对话框标题。如果此参数为NULL,则默认标题为Error。
+* [msg](./types/String.md)
+> 要显示的消息。如果字符串包含多行,则可以在每行之间使用回车符和/或换行符分隔行。
+* [flag](./enums/MessageBoxFlags.md):
+> 消息框中显示的按钮样式,
+
+## 输出
+
+> 无
+
+
+## 脚本调用
+
+```python
+import * from simple;
+
+flags = MessageBoxFlags.MB_OK
+Wnd.MessageBox('caption', 'msg', flags)
+```
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/MessageBox.simple
+
+
+
+
+
+
+!> 消息框关闭之后,才会继续执行后续动作。
\ No newline at end of file
diff --git a/docx/actions/window/PositionWindow.md b/docx/actions/window/PositionWindow.md
new file mode 100644
index 00000000..08bb204b
--- /dev/null
+++ b/docx/actions/window/PositionWindow.md
@@ -0,0 +1,39 @@
+# 窗口置顶
+更改子窗口、弹出窗口或顶级窗口为顶层窗口或者非顶层窗口。
+
+
+
+## 权限
+> 无要求, 但是对于*UWP* 应用程序来说,它不符合 *Win32* 应用程序的窗口规则(据微软官方消息:操作系统中没有任何 *API* 可以使 *UWP*应用程序的窗口置顶),因此该动作无效。例如:*Win11* 的记事本程序。
+## 子流程
+> 不支持
+
+## 运行参数
+
+* [窗口](./types/Wnd.md)
+ > 要设置的窗口
+* [方式](./enums/WindowHandle.md)
+ > 位置,比如设置为最顶层窗口,
+
+
+## 输出
+
+> [`Boolean`](./types/Boolean.md)
+
+
+### 脚本调用
+
+```python
+import simple;
+
+```
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/PositionWindow.simple
+
+
+
+
+
+!> 对于 *UWP* 应用解决办法参考:https://github.com/microsoft/Xaml-Islands-Samples/blob/master/Samples/Win32/SampleCppApp/ReadMe.md
\ No newline at end of file
diff --git a/docx/actions/window/SendKeyMessage.md b/docx/actions/window/SendKeyMessage.md
deleted file mode 100644
index 8f707d68..00000000
--- a/docx/actions/window/SendKeyMessage.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 发送键盘消息
-向窗口发送键盘消息
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Window:窗口
-* Key:键
-* [Mode](../../enums/MessagePlaceMode.md):消息发送方式
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/window/SendMouseClick.md b/docx/actions/window/SendMouseClick.md
deleted file mode 100644
index 7d804b3d..00000000
--- a/docx/actions/window/SendMouseClick.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# 发送鼠标消息
-发送鼠标消息
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Window:窗口
-* Point:坐标
-* [Mode](../../enums/MessagePlaceMode.md):消息发送方式
-
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/window/SetForegroundWindow.md b/docx/actions/window/SetForegroundWindow.md
deleted file mode 100644
index 9842178f..00000000
--- a/docx/actions/window/SetForegroundWindow.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 前置窗口
-设置前置窗口
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Window:窗口
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/window/ShowMessageBox.md b/docx/actions/window/ShowMessageBox.md
deleted file mode 100644
index fe53a83e..00000000
--- a/docx/actions/window/ShowMessageBox.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 提示框
-显示一个提示框
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Caption:标题
-* Text:内容
-
-* [Flags](../../enums/MessageBoxFlags.md):提示框样式
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/window/SpecialWindow.md b/docx/actions/window/SpecialWindow.md
index e629cc3a..0bae3b1f 100644
--- a/docx/actions/window/SpecialWindow.md
+++ b/docx/actions/window/SpecialWindow.md
@@ -1,14 +1,15 @@
# 特定窗口
此动作用来选择已知的特定窗口。
-
+
## 子流程
> 不支持
## 运行参数
-* [Type](../../enums/KnownWindowType.md):窗口类型
+* [type](./enums/KnownWindow.md)
+ > 窗口类型
@@ -24,6 +25,9 @@ import simple;
```
-### 示例
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/SpecialWindow.simple
+
+
-[https://github.com/shelllet/WinUi/blob/main/window/special_window.simple](https://github.com/shelllet/WinUi/blob/main/window/special_window.simple)
diff --git a/docx/actions/window/WinRun.md b/docx/actions/window/WinRun.md
index 5ad7d38e..1f7c2f47 100644
--- a/docx/actions/window/WinRun.md
+++ b/docx/actions/window/WinRun.md
@@ -1,5 +1,7 @@
# 运行对话框
-打开操作系统中的 *运行* 对话框
+打开操作系统中的 *运行* 对话框, 可以使用快捷键打开此窗口: Windows + R。
+
+
## 子流程
> 不支持
@@ -7,12 +9,11 @@
## 运行参数
-
+> 无
## 输出
-
-
+> 无
## 脚本调用
@@ -22,4 +23,13 @@ import simple;
```
-## 示例
\ No newline at end of file
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WinRun.simple
+
+
+
+
+
+* 操作系统中的运行框
+ > 
diff --git a/docx/actions/window/WindowAncestor.md b/docx/actions/window/WindowAncestor.md
new file mode 100644
index 00000000..3c8b7cc3
--- /dev/null
+++ b/docx/actions/window/WindowAncestor.md
@@ -0,0 +1,34 @@
+# 祖先窗口
+检索指定窗口的祖先窗口
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* [window](./type/Wnd.md)
+ > 窗口
+* [ancestor](./enums/AncestorWindow.md)
+ > 要检索的祖先类型,默认获取父窗口
+
+
+## 输出
+
+> 窗口:[`Wnd`](./types/Wnd.md)
+
+
+### 脚本调用
+
+```python
+import simple;
+
+```
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowAncestor.simple
+
+
+
diff --git a/docx/actions/window/WindowCaption.md b/docx/actions/window/WindowCaption.md
new file mode 100644
index 00000000..8cbfe498
--- /dev/null
+++ b/docx/actions/window/WindowCaption.md
@@ -0,0 +1,35 @@
+# 窗口标题
+获取或者设置窗口的标题
+
+
+
+## 子流程
+> 不支持
+
+
+## 运行参数
+
+* [window](./types/Wnd.md)
+ > 窗口
+* [caption](./types/String.md)
+ > 窗口标题,如果为空(不是空字符串),则获取窗口标题,否则设置窗口标题
+
+
+## 输出
+
+> 窗口标题 [String](./types/String.md)
+
+
+## 脚本调用
+
+```python
+import simple;
+
+```
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowCaption.simple
+
+
+
diff --git a/docx/actions/window/WindowPoint.md b/docx/actions/window/WindowPoint.md
new file mode 100644
index 00000000..851cd7a8
--- /dev/null
+++ b/docx/actions/window/WindowPoint.md
@@ -0,0 +1,36 @@
+# 窗口坐标
+
+这个动作可以获取窗口当中几个特定位置的窗口坐标。比如:左上角、左下角、右上角、右下角、中心位置坐标。
+
+
+
+## 权限
+> 无要求
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* 窗口
+ > 参考:[Wnd](./types/Wnd.md)
+* 相对位置
+ > 相对位置,参考:[RelativePosition](./enums/RelativePosition.md),坐标轴 (X,Y) 方向根据不同的位置方向有所不同,参考下图。
+
+ 
+
+* 偏移
+ > 原点偏移量(坐标系参考上图)。坐标轴(x, y)方向参考上面草图。
+
+
+
+## 输出
+> 窗口坐标 [Point](./types/Point.md)
+
+
+## 资源
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowPoint.simple
+
+
+
diff --git a/docx/actions/window/WindowRect.md b/docx/actions/window/WindowRect.md
deleted file mode 100644
index aef54246..00000000
--- a/docx/actions/window/WindowRect.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 窗口矩形
-获取或设置指定窗口的尺寸和位置,该位置相对于屏幕坐标左上角的屏幕坐标给出。
-
-
-
-## 子流程
-> 不支持
-
-## 运行参数
-
-* [Window](../../types/Wnd.md):窗口
-* [Rect](../../types/Rect.md):矩形
-
-
-## 输出
-
-> 窗口类型:`Wnd`
-
-
-### 脚本调用
-
-```python
-import simple;
-
-```
-
-### 示例
-
-[https://github.com/shelllet/WinUi/blob/main/window/special_window.simple](https://github.com/shelllet/WinUi/blob/main/window/special_window.simple)
diff --git a/docx/actions/window/WindowSize.md b/docx/actions/window/WindowSize.md
index eec6ef23..6e6f197e 100644
--- a/docx/actions/window/WindowSize.md
+++ b/docx/actions/window/WindowSize.md
@@ -1,21 +1,22 @@
-# 窗口尺寸
-获取或设置窗口尺寸(长和宽)
+# 窗口大小
+获取或设置窗口的大小(长和宽)。
-
+
## 子流程
> 不支持
## 运行参数
-* [Window](../../types/Wnd.md):窗口
-* [Size](../../types/Size.md):尺寸
-
+* [window](./types/Wnd.md)
+ > 窗口
+* [size](./types/Size.md)
+ > 长宽,如果设置为空,可以获取窗口大小。如果设置长宽,则可以设置窗口的大小。
## 输出
-> 窗口类型:`Wnd`
+> 窗口尺寸:[`Size`](./types/Size.md), 由于 *Window* 系统窗口的奇葩逻辑,该尺寸不一定等于窗口所设置的尺寸。
### 脚本调用
@@ -25,4 +26,9 @@ import simple;
```
-### 示例
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowSize.simple
+
+
+
diff --git a/docx/actions/window/WindowTitle.md b/docx/actions/window/WindowTitle.md
deleted file mode 100644
index b27adfe6..00000000
--- a/docx/actions/window/WindowTitle.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 窗口标题
-获取或者设置窗口标题
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Window:窗口
-* Title:新窗口标题
-
-
-## 输出
-
-> 窗口标题
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/window/WindowVisible.md b/docx/actions/window/WindowVisible.md
index 3a101b44..1c4d4117 100644
--- a/docx/actions/window/WindowVisible.md
+++ b/docx/actions/window/WindowVisible.md
@@ -1,16 +1,18 @@
# 窗口可视
-此动作用来设置窗口显示或者隐藏。
+此动作用来显示或者隐藏窗口。
-
+
## 子流程
> 不支持
## 运行参数
-* Window:窗口
+* [window](./types/Wnd.md)
+ > 窗口
-* Action: 隐藏或者显示
+* [action](./enums/Visibility.md)
+ > 隐藏或者显示, 默认隐藏。如果选择`Default` 取回当前窗口的显示状态
## 输出
@@ -24,6 +26,10 @@ import simple;
```
-### 示例
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowVisible.simple
+
+
+
-[https://github.com/shelllet/WinUi/blob/main/window/visible.simple](https://github.com/shelllet/WinUi/blob/main/window/visible.simple)
diff --git a/docx/actions/window/WindowXy.md b/docx/actions/window/WindowXy.md
new file mode 100644
index 00000000..589ee83e
--- /dev/null
+++ b/docx/actions/window/WindowXy.md
@@ -0,0 +1,34 @@
+# 窗口位置
+获取或设置指定窗口的位置,该位置是相对于屏幕的左上角(屏幕坐标系)给出。
+
+
+
+## 子流程
+> 不支持
+
+## 运行参数
+
+* [window](./types/Wnd.md)
+ > 窗口
+* [Xy](./types/Point.md)
+ > 坐标位置, 如果设置为空,可以获取窗口位置。如果设置为坐标,则可以设置窗口的位置。
+
+
+## 输出
+
+> 窗口的屏幕坐标位置:[`Point`](./types/Point.md)
+
+
+### 脚本调用
+
+```python
+import simple;
+
+```
+
+### 其它
+
+示例:https://github.com/shelllet/WinUi/blob/main/window/WindowXy.simple
+
+
+
diff --git a/docx/actions/window/images/01.png b/docx/actions/window/images/01.png
new file mode 100644
index 00000000..558cbb61
Binary files /dev/null and b/docx/actions/window/images/01.png differ
diff --git a/docx/actions/window/images/02.png b/docx/actions/window/images/02.png
new file mode 100644
index 00000000..504b5987
Binary files /dev/null and b/docx/actions/window/images/02.png differ
diff --git a/docx/actions/window/images/03.png b/docx/actions/window/images/03.png
new file mode 100644
index 00000000..a2d8e24c
Binary files /dev/null and b/docx/actions/window/images/03.png differ
diff --git a/docx/actions/window/images/04.png b/docx/actions/window/images/04.png
new file mode 100644
index 00000000..2ff83722
Binary files /dev/null and b/docx/actions/window/images/04.png differ
diff --git a/docx/actions/window/images/05.png b/docx/actions/window/images/05.png
new file mode 100644
index 00000000..8e6c1ffa
Binary files /dev/null and b/docx/actions/window/images/05.png differ
diff --git a/docx/actions/window/images/06.png b/docx/actions/window/images/06.png
new file mode 100644
index 00000000..19dffbaf
Binary files /dev/null and b/docx/actions/window/images/06.png differ
diff --git a/docx/actions/window/images/07.png b/docx/actions/window/images/07.png
new file mode 100644
index 00000000..7eaf3b91
Binary files /dev/null and b/docx/actions/window/images/07.png differ
diff --git a/docx/actions/window/images/08.png b/docx/actions/window/images/08.png
new file mode 100644
index 00000000..9dbf093a
Binary files /dev/null and b/docx/actions/window/images/08.png differ
diff --git a/docx/actions/window/images/09.png b/docx/actions/window/images/09.png
new file mode 100644
index 00000000..e3a40d0e
Binary files /dev/null and b/docx/actions/window/images/09.png differ
diff --git a/docx/actions/window/images/10.png b/docx/actions/window/images/10.png
new file mode 100644
index 00000000..f62d5038
Binary files /dev/null and b/docx/actions/window/images/10.png differ
diff --git a/docx/actions/window/images/11.png b/docx/actions/window/images/11.png
new file mode 100644
index 00000000..831dbdeb
Binary files /dev/null and b/docx/actions/window/images/11.png differ
diff --git a/docx/actions/window/images/12.png b/docx/actions/window/images/12.png
new file mode 100644
index 00000000..355e7825
Binary files /dev/null and b/docx/actions/window/images/12.png differ
diff --git a/docx/actions/window/images/13.png b/docx/actions/window/images/13.png
new file mode 100644
index 00000000..9f115557
Binary files /dev/null and b/docx/actions/window/images/13.png differ
diff --git a/docx/actions/window/images/14.png b/docx/actions/window/images/14.png
new file mode 100644
index 00000000..0456dfee
Binary files /dev/null and b/docx/actions/window/images/14.png differ
diff --git a/docx/actions/window/images/15.png b/docx/actions/window/images/15.png
new file mode 100644
index 00000000..d9fe4f7a
Binary files /dev/null and b/docx/actions/window/images/15.png differ
diff --git a/docx/actions/window/images/xy.png b/docx/actions/window/images/xy.png
new file mode 100644
index 00000000..536d49f8
Binary files /dev/null and b/docx/actions/window/images/xy.png differ
diff --git a/docx/actions/xml/XmlDocumentElement.md b/docx/actions/xml/XmlDocumentElement.md
deleted file mode 100644
index d014db7f..00000000
--- a/docx/actions/xml/XmlDocumentElement.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 元素
-*Xml* 元素
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-* Doc: *Xml* 文档
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/xml/XmlGetNodeList.md b/docx/actions/xml/XmlGetNodeList.md
deleted file mode 100644
index b6b5de54..00000000
--- a/docx/actions/xml/XmlGetNodeList.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 获取节点
-获取 *Xml* 节点
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-* Source: 源
-* Name:名称
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/xml/XmlLoadDocument.md b/docx/actions/xml/XmlLoadDocument.md
deleted file mode 100644
index 5372ed27..00000000
--- a/docx/actions/xml/XmlLoadDocument.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 文档
-加载*Xml* 文档
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* File:*Xml* 文件
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/xml/XmlNodeName.md b/docx/actions/xml/XmlNodeName.md
deleted file mode 100644
index 41e7a15d..00000000
--- a/docx/actions/xml/XmlNodeName.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# 节点名称
-*Xml* 节点名称
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Node:节点
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/xml/XmlReplaceText.md b/docx/actions/xml/XmlReplaceText.md
deleted file mode 100644
index 640df60e..00000000
--- a/docx/actions/xml/XmlReplaceText.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 文本替换
-替换 *节点* 文本
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-* Node:节点
-* Text:文本
-
-
-
-## 输出
-
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/actions/xml/XmlSaveDocument.md b/docx/actions/xml/XmlSaveDocument.md
deleted file mode 100644
index a5a6b32a..00000000
--- a/docx/actions/xml/XmlSaveDocument.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 保存
-保存 *Xml* 文件
-
-## 子流程
-> 不支持
-
-
-## 运行参数
-
-
-* Doc:文档
-* Folder:文件夹
-* Name:文件名称
-
-## 输出
-
-
-
-## 脚本调用
-
-```python
-import simple;
-
-```
-
-## 示例
\ No newline at end of file
diff --git a/docx/enums/AncestorWindow.md b/docx/enums/AncestorWindow.md
new file mode 100644
index 00000000..73e08c5a
--- /dev/null
+++ b/docx/enums/AncestorWindow.md
@@ -0,0 +1,5 @@
+# AncestorWindow
+
+* WA_PARENT
+* WA_ROOT
+* WA_ROOTOWNER
\ No newline at end of file
diff --git a/docx/enums/BARCODE_Encoding.md b/docx/enums/BARCODE_Encoding.md
new file mode 100644
index 00000000..1c0d818d
--- /dev/null
+++ b/docx/enums/BARCODE_Encoding.md
@@ -0,0 +1,13 @@
+# BARCODE_Encoding
+
+* CODE128
+* CODE39
+* CODE93
+* EAN13
+* UPCA
+* UPCE
+* ITF
+* CODABAR
+* QR_CODE
+* PDF417
+* DATA_MATRIX
\ No newline at end of file
diff --git a/docx/enums/BlurOperation.md b/docx/enums/BlurOperation.md
new file mode 100644
index 00000000..9b742580
--- /dev/null
+++ b/docx/enums/BlurOperation.md
@@ -0,0 +1,10 @@
+# BlurOperation
+
+* Simple
+> 简单模糊(平均值),获取中心像素周围的像素区域,将所有这些像素平均在一起,然后用平均值替换中心像素。
+* Gaussian
+> 加权高斯模糊,使用加权平均值,其中更接近中心像素的邻域像素对平均值贡献更多的 *权重*。高斯平滑用于去除近似服从高斯分布的噪声。与简单模糊相比,基于此权重,我们将能够保留图像中更多的边缘。使用此方法,图像不会那么模糊,但会更加 *自然模糊*。
+* Median
+> 中值滤波,此方法在消除椒盐噪声时最为有效。这种类型的噪音正如它听起来的那样:想象一下拍一张照片,把它放在餐桌上,然后在上面撒上盐和胡椒粉。使用中值模糊方法,您可以从图像中去除盐和胡椒。
+* Bilateral
+> 双边模糊,模糊方法的目的是减少图像中的噪声和细节。然而,作为一个副作用,我们往往会丢失图像的边缘。为了在保持边缘的同时减少噪音,我们可以使用双边模糊。这种方法的最大缺点是它比平均、高斯和中值模糊方法慢得多。
\ No newline at end of file
diff --git a/docx/enums/CameraTriggerActivation.md b/docx/enums/CameraTriggerActivation.md
new file mode 100644
index 00000000..8d723240
--- /dev/null
+++ b/docx/enums/CameraTriggerActivation.md
@@ -0,0 +1,13 @@
+# CameraTriggerActivation
+
+* RisingEdge
+> 上升沿
+* FallingEdge
+> 下降沿
+* LevelHigh
+
+> 高电平
+
+* LevelLow
+
+> 低电平
\ No newline at end of file
diff --git a/docx/enums/CameraTriggerSource.md b/docx/enums/CameraTriggerSource.md
new file mode 100644
index 00000000..2acbd320
--- /dev/null
+++ b/docx/enums/CameraTriggerSource.md
@@ -0,0 +1,11 @@
+# CameraTriggerSource
+- Line0
+> 非隔离输入(如海康相机)。
+- Line1
+
+- Line2
+
+> 可配置为输入/输出的双向I/O(如LEO系列相机)。
+- Software
+
+> 通过主机发送软件命令触发拍照,优点是配置灵活,但触发速度和精度低于硬件触发
\ No newline at end of file
diff --git a/docx/enums/CameraType.md b/docx/enums/CameraType.md
new file mode 100644
index 00000000..9161d9b9
--- /dev/null
+++ b/docx/enums/CameraType.md
@@ -0,0 +1,8 @@
+# CameraType
+
+- USB2
+
+- USB3
+> 常见于工业相机接口
+- GIGE
+> 常见于工业相机接口
\ No newline at end of file
diff --git a/docx/enums/ColorConversionCodes.md b/docx/enums/ColorConversionCodes.md
index 1d0537e8..08bb33f7 100644
--- a/docx/enums/ColorConversionCodes.md
+++ b/docx/enums/ColorConversionCodes.md
@@ -1 +1,7 @@
-# ColorConversionCodes
\ No newline at end of file
+# ColorConversionCodes
+
+* COLOR_BGR2BGRA
+* COLOR_BGRA2BGR
+* COLOR_BGR2GRAY
+* COLOR_RGB2GRAY
+* COLOR_RGBA2GRAY
\ No newline at end of file
diff --git a/docx/enums/Colors.md b/docx/enums/Colors.md
new file mode 100644
index 00000000..26f6b565
--- /dev/null
+++ b/docx/enums/Colors.md
@@ -0,0 +1,12 @@
+# Colors
+
+* BLACK
+> 黑色,*RGB* 颜色值(0, 0, 0)
+* WHITE
+> 白色,*RGB* 颜色值(255, 255, 255)
+* RED
+> 红色,*RGB* 颜色值(255, 0, 0);*BGR* 颜色值(0, 0, 255)。
+* GREEN
+> 绿色,*RGB* 颜色值(0, 255, 0)
+* BLUE
+> 蓝色,*RGB* 颜色值(0, 0, 255);*BGR* 颜色值(255, 0, 0)。
diff --git a/docx/enums/ContourApproximationMode.md b/docx/enums/ContourApproximationMode.md
new file mode 100644
index 00000000..9ac502d3
--- /dev/null
+++ b/docx/enums/ContourApproximationMode.md
@@ -0,0 +1,12 @@
+# ContourApproximationMode
+
+轮廓近似方法
+
+* CHAIN_APPROX_NONE
+> 不使用近似值并返回所有点。
+* CHAIN_APPROX_SIMPLE
+> 简单的近似算法,在形状为多边形时效果很好。对于四边形它将返回 4 个点,对于三角形将返回 3 个点,依此类推。
+* CHAIN_APPROX_TC89_L1
+> 更精确的近似算法。当形状弯曲且不是简单的多边形时应使用此方法。
+* CHAIN_APPROX_TC89_KCOS
+> 与 *CHAIN_APPROX_TC89_L1* 算法相比,该算法的计算成本更高,并且稍微更准确。当形状是弯曲的并且不是简单的多边形时,应该使用此方法。
\ No newline at end of file
diff --git a/docx/enums/ContourShape.md b/docx/enums/ContourShape.md
index 88d0d8bd..d20dd32a 100644
--- a/docx/enums/ContourShape.md
+++ b/docx/enums/ContourShape.md
@@ -1,5 +1,8 @@
# ContourShape
-* Default
+* Triangle
+> 三角形
* Rectangle
-* Square
\ No newline at end of file
+> 矩形
+* Square
+> 正方形
\ No newline at end of file
diff --git a/docx/enums/CookiesFormat.md b/docx/enums/CookiesFormat.md
new file mode 100644
index 00000000..f5d1ee90
--- /dev/null
+++ b/docx/enums/CookiesFormat.md
@@ -0,0 +1,59 @@
+# CookiesFormat
+
+* Default
+> 默认数据类型
+
+* Netscape
+
+> 指的是一种文本文件格式,用于存储网络浏览器中的 HTTP Cookies。这种格式最初由 Netscape Navigator 浏览器定义和使用,尽管现在浏览器内部通常使用更复杂的数据库或二进制格式来管理 Cookies,但 Netscape 格式因其简单性,在某些场景下(例如自动化测试、数据导出/导入或调试)仍然被用作一种通用的交换格式。
+
+
+"Cookies Netscape 格式" (Cookies Netscape Format) 指的是一种**文本文件格式**,用于存储网络浏览器中的 HTTP Cookies。这种格式最初由 Netscape Navigator 浏览器定义和使用,尽管现在浏览器内部通常使用更复杂的数据库或二进制格式来管理 Cookies,但 Netscape 格式因其简单性,在某些场景下(例如**自动化测试、数据导出/导入或调试**)仍然被用作一种通用的交换格式。
+
+-----
+
+## Netscape Cookies 格式的结构
+
+在这种格式中,每个 Cookie 都占据文件中的**一行**,并且行的不同字段之间使用 **制表符 (tab)** 分隔。
+
+典型的字段顺序和含义如下:
+
+1. **域 (Domain)**: Cookie 有效的域名。
+ * 如果以点开头(例如 `.example.com`),表示该 Cookie 对主域及其所有子域都有效。
+ * 如果不是以点开头(例如 `www.example.com`),表示该 Cookie 只对该特定主机名有效。
+2. **标志 (Flag)**: 一个布尔值 (`TRUE` 或 `FALSE`)。
+ * `TRUE` 通常表示该 Cookie 是域级别的(即对主域和子域都有效)。
+ * `FALSE` 通常表示该 Cookie 是主机级别的(只对特定主机有效)。
+ * 这个字段与域字段的含义有重叠,但在旧的 Netscape 规范中是独立的。
+3. **路径 (Path)**: Cookie 有效的 URL 路径(例如 `/` 表示对整个网站有效,`/blog` 表示只对 `/blog` 路径及其子路径有效)。
+4. **安全 (Secure)**: 一个布尔值 (`TRUE` 或 `FALSE`)。
+ * `TRUE` 表示该 Cookie 只能通过安全的 HTTPS 连接发送。
+ * `FALSE` 表示可以通过 HTTP 或 HTTPS 连接发送。
+5. **过期时间 (Expiration)**: Cookie 的过期时间,表示为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数)。会话 Cookie(浏览器关闭即失效)可能没有此字段或为 0。
+6. **名称 (Name)**: Cookie 的名称(例如 `session_id`、`user_preference`)。
+7. **值 (Value)**: Cookie 存储的数据值。
+
+-----
+
+### Netscape 格式示例
+
+以下是一个 Netscape 格式的 Cookie 文件内容示例:
+
+```
+.example.com TRUE / FALSE 1735689600 session_id abcde12345
+www.google.com FALSE / TRUE 1735689600 PREF ID=a1b2c3d4e5f6
+.github.com TRUE /api/ FALSE 1704067200 _gh_sess eyJzZXNzaW9uX2lkIjoiMTIzNDUifQ==
+```
+
+-----
+
+### 为什么它仍然相关?
+
+尽管现代浏览器已经不再直接使用这种文本文件来存储所有 Cookies,但在以下场景中,"Netscape 格式"的 Cookies 仍然会遇到或被使用:
+
+ * **Selenium WebDriver 或其他自动化工具**: 在进行 Web 自动化测试时,你可能需要从文件中加载 Cookies 以模拟登录状态,或者将当前会话的 Cookies 导出保存。许多工具和脚本会支持或生成这种格式。
+ * **Cookie 编辑器或插件**: 某些浏览器扩展或工具提供了导入/导出 Cookies 的功能,其中就可能包含 Netscape 格式选项。
+ * **调试和分析**: 对于开发者来说,能够以简单、可读的文本格式查看 Cookie 的详细信息有助于调试网络请求和会话管理问题。
+ * **遗留系统或工具**: 某些较旧的系统或特定的网络爬虫可能仍然依赖这种格式来处理 Cookies。
+
+理解这种格式可以帮助你更好地与这些工具和场景交互,尤其是在需要手动管理或共享 Cookies 信息时。
\ No newline at end of file
diff --git a/docx/enums/FeatureAlgorithm.md b/docx/enums/FeatureAlgorithm.md
new file mode 100644
index 00000000..b8c7e08b
--- /dev/null
+++ b/docx/enums/FeatureAlgorithm.md
@@ -0,0 +1,12 @@
+# FeatureAlgorithm
+
+* SIFT
+> 用于检测和描述图像中的局部特征。它对图像缩放、方向和仿射失真具有鲁棒性。在不同尺度的图像中 *SIFT* 都比 *SURF* 要好。
+* SURF
+> *SURF* 在旋转不变性、模糊和扭曲变换方面优于 *SIFT*。
+* BRISK
+> 比*SURF* 快的一种检测方法。
+* ORB
+> 计算速度快,并且对光照和旋转变化具有鲁棒性,*ORB* 比 *SURF* 和 *SIFT* 快得多,而且性能也比 *SURF* 更好。
+* AKAZE
+> 在过滤匹配项并删除异常值之后,与 *ORB* 相比,*AKAZE* 呈现出更多数量的正确匹配项。计算速度比 *ORB* 慢。
\ No newline at end of file
diff --git a/docx/enums/FileExtension.md b/docx/enums/FileExtension.md
new file mode 100644
index 00000000..2ea976bd
--- /dev/null
+++ b/docx/enums/FileExtension.md
@@ -0,0 +1,13 @@
+# FileExtension
+
+* DEFAULT
+> 根据文件扩展名判断类型
+* XML
+> *XML* 文件是描述数据结构的可读文件。可参考:https://aws.amazon.com/cn/what-is/xml/
+* JSON
+> JSON(JavaScript 对象表示法)是一种用于共享数据的开放标准文件格式,它使用人类可读的文本来存储和传输数据。可参考:https://docs.fileformat.com/zh/web/json/
+* CSV
+> 逗号分隔值的文件。可参考:https://www.freecodecamp.org/chinese/news/what-is-a-csv-file-and-how-to-open-the-csv-file-format/
+* XLSX
+
+> *XLSX* 是 Microsoft 在 Microsoft Office 2007 发布时引入的 Microsoft Excel 文档的知名格式。可参考:https://docs.fileformat.com/zh/spreadsheet/xlsx/
\ No newline at end of file
diff --git a/docx/enums/GlobOptions.md b/docx/enums/GlobOptions.md
index 3a8bf3b3..befd2d83 100644
--- a/docx/enums/GlobOptions.md
+++ b/docx/enums/GlobOptions.md
@@ -1 +1,10 @@
-# GlobOptions
\ No newline at end of file
+# GlobOptions
+
+* Default
+> 默认行为
+* DotSpecial
+> `*` 和 `?` 不会匹配 `.`
+* FollowSymlinks
+> 匹配符号链接
+* Caseless
+> 比较字符时忽略大小写
diff --git a/docx/enums/KnownFolder.md b/docx/enums/KnownFolder.md
new file mode 100644
index 00000000..3f9072cb
--- /dev/null
+++ b/docx/enums/KnownFolder.md
@@ -0,0 +1,12 @@
+# KnownFolder
+
+* DOWNLOADS
+> *下载* 文件夹
+* DOCUMENTS
+> *我的文档* 文件夹
+* LOCALAPPDATA
+> *本地应用数据* 文件夹
+* PICTURES
+> *图片* 文件夹
+* MUSIC
+> *音乐* 文件夹
\ No newline at end of file
diff --git a/docx/enums/KnownWindow.md b/docx/enums/KnownWindow.md
new file mode 100644
index 00000000..265f6ae8
--- /dev/null
+++ b/docx/enums/KnownWindow.md
@@ -0,0 +1,8 @@
+# KnownWindow
+
+* Desktop
+ > 桌面
+* Forground
+ > 前置窗口, 就是系统将创建指定窗口的线程置于前台并激活该窗口。键盘输入被定向到窗口,并且为用户改变各种视觉提示。系统为创建前台窗口的线程分配比其他线程稍高的优先级。
+* TopMost
+> 置顶窗口
\ No newline at end of file
diff --git a/docx/enums/KnownWindowType.md b/docx/enums/KnownWindowType.md
deleted file mode 100644
index 31efac77..00000000
--- a/docx/enums/KnownWindowType.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# KnownWindowType
-
-* Desktop: 桌面
-* Forground: 前置窗口。
\ No newline at end of file
diff --git a/docx/enums/LogStatus.md b/docx/enums/LogStatus.md
new file mode 100644
index 00000000..f3a8e9f9
--- /dev/null
+++ b/docx/enums/LogStatus.md
@@ -0,0 +1,7 @@
+# LogStatus
+
+* `Enabled`
+> 用来启用日志输出。
+
+* `Disabled`
+> 用来禁用日志输出。
\ No newline at end of file
diff --git a/docx/enums/LogicalOperators.md b/docx/enums/LogicalOperators.md
index 257689c7..cc23c6fd 100644
--- a/docx/enums/LogicalOperators.md
+++ b/docx/enums/LogicalOperators.md
@@ -1,5 +1,8 @@
# LogicalOperators
* AND
+> 逻辑与是一个双目运算符,使用时&&的两边各一个表达式,如果运算符的左右两边的表达式都为真,表达式整体才为真,否则即为假。
* OR
-* NOT
\ No newline at end of file
+> 逻辑或运算符也是一个双目运算符,使用时候要求两边各一个表达式,如果运算符左右两边的表达式只要有一个为真,那么逻辑或表达式的整体就为真,否则都为假。
+* NOT
+>逻辑非是一个单目运算符,它表示取反的意思,放在表达式的左边,如!a ,即原先为真的表达式取反之后变为假,原先为假的表达式取反之后变为真。
\ No newline at end of file
diff --git a/docx/enums/ModuleOption.md b/docx/enums/ModuleOption.md
new file mode 100644
index 00000000..e3a841ef
--- /dev/null
+++ b/docx/enums/ModuleOption.md
@@ -0,0 +1,13 @@
+# ModuleOption
+
+* API
+> 映射 *pywin32* 中的 `win32api` 模块。
+* GUI
+> 映射 *pywin32* 中的 `win32gui` 模块。
+* CDLL
+> `__cdecl` 调用约定的模块。
+* WINDLL
+> `__stdcall` 调用约定的模块。
+
+* COM
+> 微软的 *COM* 组件,参考:https://learn.microsoft.com/zh-cn/windows/win32/com/component-object-model--com--portal
\ No newline at end of file
diff --git a/docx/enums/MorphologicalOperations.md b/docx/enums/MorphologicalOperations.md
new file mode 100644
index 00000000..11dc1937
--- /dev/null
+++ b/docx/enums/MorphologicalOperations.md
@@ -0,0 +1,13 @@
+# MorphologicalOperations
+
+* Erosion
+> 侵蚀,根据内核的大小,边界附近的所有像素都将被丢弃。因此,前景物体的厚度或尺寸会减小,或者图像中的白色区域会减小。它对于消除小的白噪声、分离两个连接的对象等很有用。通常进行侵蚀后的影像,黑色区域会扩张,白色区域会缩小。
+* Dilation
+> 膨胀,它与侵蚀正好相反,它增加了图像中的白色区域或前景物体的尺寸,对于连接物体的破损部分也很有用。通常进行膨胀后的影像,白色区域会扩张,黑色区域会缩小。
+
+* MorphOpen
+> 先应用腐蚀,然后应用膨胀!此操作对于消除噪声很有用。这是因为第一次腐蚀将删除原始图像中小于结构元素的任何形状,但也会缩小我们想要的形状。然后,膨胀将逆转收缩,但不会带回“噪音”。
+* MorphClose
+> 首先应用膨胀,然后应用腐蚀!此操作对于“关闭”我们想要的形状或前景中的孔非常有用。这是因为当我们第一次应用膨胀时,孔将被关闭,但主要形状会放大。然后侵蚀将逆转主要形状的扩大,因此闭合的效果实际上只是“闭合”孔。
+* MorphGradient
+> 这是图像的膨胀和腐蚀之间的区别,结果将看起来像对象的轮廓。
\ No newline at end of file
diff --git a/docx/enums/MouseButtons.md b/docx/enums/MouseButtons.md
index d3c0cfb6..f4c61c9d 100644
--- a/docx/enums/MouseButtons.md
+++ b/docx/enums/MouseButtons.md
@@ -1 +1,10 @@
-# MouseButtons
\ No newline at end of file
+# MouseButtons
+
+* Left
+> 鼠标左键
+* Middle
+> 鼠标中键
+* Right
+> 鼠标右键
+* XButton
+> 鼠标侧键
\ No newline at end of file
diff --git a/docx/enums/MouseMessage.md b/docx/enums/MouseMessage.md
new file mode 100644
index 00000000..6d08958e
--- /dev/null
+++ b/docx/enums/MouseMessage.md
@@ -0,0 +1,13 @@
+# MouseMessage
+* None
+* MouseMove
+* LeftButtonDown
+* LeftButtonUp
+* RightButtonDown
+* RightButtonUp
+* MouseWheelForward
+* MouseWheelBackward
+* MouseHorizontalWheelLeft
+* MouseHorizontalWheelRight
+* MiddleButtonDown
+* MiddleButtonUp
\ No newline at end of file
diff --git a/docx/enums/Orientation.md b/docx/enums/Orientation.md
new file mode 100644
index 00000000..0f29efdd
--- /dev/null
+++ b/docx/enums/Orientation.md
@@ -0,0 +1,12 @@
+# Orientation
+
+* Left
+>
+* Right
+>
+
+* Up
+>
+
+* Down
+>
\ No newline at end of file
diff --git a/docx/enums/PageSegMode.md b/docx/enums/PageSegMode.md
new file mode 100644
index 00000000..28302e56
--- /dev/null
+++ b/docx/enums/PageSegMode.md
@@ -0,0 +1,24 @@
+# PageSegMode
+
+* AUTO (3)
+> 自动检测页面布局并进行识别。这是最常用的模式之一,Tesseract 会自动分析图像的布局,尝试确定文字的行、段落等结构,然后进行识别。适用于大多数普通文档图像。
+* SINGLE_COLUMN (4)
+> 假定图像包含一个垂直排列的单列文本。当图像中的文字是以单列形式排列时,使用此模式可以更准确地识别文字,引擎会按照单列文本的结构进行处理。
+* SINGLE_BLOCK_VERT_TEXT (5)
+> 假定图像包含一个垂直排列的文本块。如果图像中的文字是垂直书写的,并且形成一个整体的文本块,使用该模式可以更好地进行识别。
+* SINGLE_BLOCK (6)
+> 假定图像包含一个统一的文本块。对于没有明显分行或段落结构的图像,如一些标语、横幅等,使用此模式可以将整个图像作为一个文本块进行识别。
+* SINGLE_LINE (7)
+> 将图像视为单行文本进行识别。适用于只包含一行文字的图像,如标题、菜单等,引擎会专注于识别这一行文字。
+* SINGLE_WORD (8)
+> 将图像视为单个单词进行识别。当图像中只包含一个单词时,使用此模式可以提高识别的准确性。
+* CIRCLE_WORD (9)
+> 将图像视为单个单词,且该单词可能是圆形排列的。对于一些以圆形方式排列的文字,如商标、徽章上的文字,此模式可以更好地进行识别。
+* SINGLE_CHAR (10)
+> 将图像视为单个字符进行识别。用于识别只包含一个字符的图像,例如验证码中的单个字符。
+* SPARSE_TEXT (11)
+> 在图像中查找稀疏分布的文本,不进行特定的页面布局分析。当图像中的文字分布比较分散,没有明显的布局结构时,使用此模式可以找出所有的文字。
+* SPARSE_TEXT_OSD (12)
+> 在图像中查找稀疏分布的文本,并进行方向和脚本检测。结合了方向和脚本检测功能,适用于文字分布稀疏且方向不确定的图像。
+* RAW_LINE (13)
+> 直接将图像中的像素作为原始文本行进行识别,不进行任何页面分割或预处理。这种模式适用于一些特殊情况,如手写文字或经过特殊处理的图像,引擎会尽量直接识别像素中的文字信息。
\ No newline at end of file
diff --git a/docx/enums/RelationalOperators.md b/docx/enums/RelationalOperators.md
index d74e5158..988fdc01 100644
--- a/docx/enums/RelationalOperators.md
+++ b/docx/enums/RelationalOperators.md
@@ -13,6 +13,6 @@
| == | 等于 | 如果第一个操作数等于第二个操作数,则等于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 *==* 操作数 2 |
| != | 不等于 | 如果第一个操作数不等于第二个操作数,则不等于运算符返回 `True`。否则,它返回 `False` | 操作数 1 *!=* 操作数 2 |
| > | 大于 | 如果第一个操作数大于第二个操作数,则大于运算符返回 `True`。否则,它返回 `False` | 操作数 1 *>* 操作数 2 |
-| < | 小于 | 如果第一个操作数小于第二个,则小于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 *<* 操作数 2 |
+| `<` | 小于 | 如果第一个操作数小于第二个,则小于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 `<` 操作数 2 |
| >= | 大于或等于 | 如果第一个操作数大于或等于第二个操作数,则大于或等于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 *>=* 操作数 2 |
-| <= | 小于或等于 | 如果第一个操作数小于或等于第二个操作数,则小于或等于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 *<=* 操作数 2 |
\ No newline at end of file
+| `<=` | 小于或等于 | 如果第一个操作数小于或等于第二个操作数,则小于或等于运算符返回 `True`。否则,它返回 `False`。 | 操作数 1 `<=` 操作数 2 |
\ No newline at end of file
diff --git a/docx/enums/RelativePosition.md b/docx/enums/RelativePosition.md
new file mode 100644
index 00000000..8dae2bf6
--- /dev/null
+++ b/docx/enums/RelativePosition.md
@@ -0,0 +1,22 @@
+# RelativePosition
+
+* TopLeft
+> 左上角
+
+* TopRight
+> 右上角
+* Center
+> 中心
+* BottomLeft
+ > 左下角
+* BottomRight
+ >右下角
+
+* CENTER_LEFT
+> 左中
+* CENTER_RIGHT
+> 右中
+* CENTER_TOP
+> 上中
+* CENTER_BOTTOM
+> 下中
\ No newline at end of file
diff --git a/docx/enums/RetrievalModes.md b/docx/enums/RetrievalModes.md
index 5d1a32bd..8c0502e4 100644
--- a/docx/enums/RetrievalModes.md
+++ b/docx/enums/RetrievalModes.md
@@ -1 +1,10 @@
-# RetrievalModes
\ No newline at end of file
+# RetrievalModes
+
+* EXTERNAL
+> 仅检索最外轮廓
+* RETR_LIST
+> 检索所有轮廓而不建立任何层次关系
+* RETR_CCOMP
+> 检索所有轮廓并将它们组织成两级层次结构。在顶层,存在组件的外部边界。在第二层,有孔的边界。如果连接组件的孔内还有另一个轮廓,则它仍然放在顶层。
+* RETR_TREE
+> 检索所有轮廓并重建嵌套轮廓的完整层次结构。
\ No newline at end of file
diff --git a/docx/enums/SeverityLevel.md b/docx/enums/SeverityLevel.md
new file mode 100644
index 00000000..a5eda5ae
--- /dev/null
+++ b/docx/enums/SeverityLevel.md
@@ -0,0 +1,13 @@
+# SeverityLevel
+
+
+* Info
+ > 一般信息。
+
+* Warning
+ > 警告信息。
+
+* Error
+ > 错误信息。
+
+
diff --git a/docx/enums/SuspendStateOption.md b/docx/enums/SuspendStateOption.md
new file mode 100644
index 00000000..27854b97
--- /dev/null
+++ b/docx/enums/SuspendStateOption.md
@@ -0,0 +1,10 @@
+# SuspendStateOption
+
+* Logoff
+> 注销。
+* Reboot
+> 重启。
+* Shutdown
+> 关机。
+* Hibernate
+> 休眠
diff --git a/docx/enums/ThresholdTypes.md b/docx/enums/ThresholdTypes.md
index 4dc20834..86e6aced 100644
--- a/docx/enums/ThresholdTypes.md
+++ b/docx/enums/ThresholdTypes.md
@@ -1,4 +1,6 @@
# ThresholdTypes
-* `BINARY` : 如果像素强度大于设置的阈值,值设置为 255,否则设置为 0(黑色)
-* `BINARY_INV`:`BINARY` 的反转或相反情况
\ No newline at end of file
+* `BINARY`
+> 如果像素强度大于设置的阈值,值设置为 255,否则设置为 0(黑色)
+* `BINARY_INV`
+ > `BINARY` 的反转或相反情况
\ No newline at end of file
diff --git a/docx/enums/WebKey.md b/docx/enums/WebKey.md
new file mode 100644
index 00000000..eb0aaf35
--- /dev/null
+++ b/docx/enums/WebKey.md
@@ -0,0 +1,7 @@
+# WebKey
+
+* Null
+* Cancel
+* Shift
+* Enter
+* Return
\ No newline at end of file
diff --git a/docx/enums/WebLocated.md b/docx/enums/WebLocated.md
new file mode 100644
index 00000000..3f5e4558
--- /dev/null
+++ b/docx/enums/WebLocated.md
@@ -0,0 +1,7 @@
+# WebLocatedMode
+
+* ONE
+
+* ANY
+
+* ALL
\ No newline at end of file
diff --git a/docx/enums/WindowHandle.md b/docx/enums/WindowHandle.md
new file mode 100644
index 00000000..8b55afe4
--- /dev/null
+++ b/docx/enums/WindowHandle.md
@@ -0,0 +1,6 @@
+# WindowHandle
+
+* WH_BOTTOM
+* WH_NOTOPMOST
+* WH_TOP
+* WH_TOPMOST
\ No newline at end of file
diff --git a/docx/enums/WindowSortDirection.md b/docx/enums/WindowSortDirection.md
new file mode 100644
index 00000000..9b28d513
--- /dev/null
+++ b/docx/enums/WindowSortDirection.md
@@ -0,0 +1,9 @@
+# WindowSortDirection
+
+* Z
+> 窗口的 z 顺序指示窗口在重叠窗口堆栈中的位置。该窗口堆栈沿假想轴(即 z 轴)定向,从屏幕垂直向外延伸,用户可以通过激活不同的窗口来更改 z 顺序。因此按照该方式排序,窗口顺序每次会不同。
+* XY
+> 优先沿屏幕 X (水平) 方向排序。 如果窗口的 *X* 坐标相同,则进行 *Y* (垂直)方向排序 。
+* YX
+
+> 优先沿屏幕 Y (垂直) 方向排序。 如果窗口的 *Y* 坐标相同,则进行 *X* (水平)方向排序 。
diff --git a/docx/enums/WorkState.md b/docx/enums/WorkState.md
new file mode 100644
index 00000000..74ee0db4
--- /dev/null
+++ b/docx/enums/WorkState.md
@@ -0,0 +1,8 @@
+# WorkState
+
+* Auto
+> 自动,线程或者定时器的状态自动切换 *运行* 或者 *停止*。对于 `WinEvent` ,对信号自动重置,
+* On
+> 启动 *线程* 或者 *定时器*,对于 *WhenEvent* 动作,可以让 *WhenEvent* 执行子流程。
+* Off
+> 停止*线程* 或者 *定时器*,对于 *WhenEvent* 动作,则会让 *WhenEvent* 动作处于等待状态。
\ No newline at end of file
diff --git a/docx/enums/WorkStatus.md b/docx/enums/WorkStatus.md
deleted file mode 100644
index 5c23aeb6..00000000
--- a/docx/enums/WorkStatus.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# WorkStatus
-
-* `Enabled`
-> 用来启用日志
-* `Disabled`
-> 用来禁用日志输出
\ No newline at end of file
diff --git a/docx/index.html b/docx/index.html
index ee05a521..b902048f 100644
--- a/docx/index.html
+++ b/docx/index.html
@@ -3,19 +3,23 @@
- WinUi++
+ 小友+
-
+
+
+
+
+
@@ -44,6 +74,8 @@
+
+