├── .gitattributes ├── .gitignore ├── LICENSE ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── Readme.md ├── Windows Store Downloader.csproj ├── Windows Store Downloader.sln ├── acrylic ├── .gitignore ├── WindowCompositionAttribute.h ├── acrylic.vcxproj ├── acrylic.vcxproj.filters ├── dllmain.cpp ├── framework.h ├── pch.cpp └── pch.h ├── app.config ├── code ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Form2.Designer.cs ├── Form2.cs ├── Form2.resx ├── Language.cs ├── Post.cs ├── Program.cs ├── WinAPI.cs ├── WriteToTemp.cs ├── global.cs └── zh-CN.cs ├── doc ├── cn.md ├── cn.webp └── example.webp ├── packages.config ├── resource ├── error-cn.html ├── error.html ├── icon.ico ├── img │ ├── bg.png │ └── error.png ├── modify.txt ├── padding.css ├── res.zip ├── table-example.html └── table │ ├── table-1-cn.txt │ ├── table-1.txt │ ├── table-2-cn.txt │ └── table-2.txt └── resources ├── acrylic.dll ├── icon.ico └── store.png /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | # https://www.davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/ 3 | * text=auto 4 | 5 | *.cs text diff=csharp 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Ignore Visual Studio temporary files, build results, and 4 | ## files generated by popular Visual Studio add-ons. 5 | ## 6 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 7 | 8 | # User-specific files 9 | *.rsuser 10 | *.suo 11 | *.user 12 | *.userosscache 13 | *.sln.docstates 14 | 15 | # User-specific files (MonoDevelop/Xamarin Studio) 16 | *.userprefs 17 | 18 | # Mono auto generated files 19 | mono_crash.* 20 | 21 | # Build results 22 | [Dd]ebug/ 23 | [Dd]ebugPublic/ 24 | [Rr]elease/ 25 | [Rr]eleases/ 26 | x64/ 27 | x86/ 28 | [Ww][Ii][Nn]32/ 29 | [Aa][Rr][Mm]/ 30 | [Aa][Rr][Mm]64/ 31 | bld/ 32 | [Bb]in/ 33 | [Oo]bj/ 34 | [Ll]og/ 35 | [Ll]ogs/ 36 | 37 | # Visual Studio 2015/2017 cache/options directory 38 | .vs/ 39 | # Uncomment if you have tasks that create the project's static files in wwwroot 40 | #wwwroot/ 41 | 42 | # Visual Studio 2017 auto generated files 43 | Generated\ Files/ 44 | 45 | # MSTest test Results 46 | [Tt]est[Rr]esult*/ 47 | [Bb]uild[Ll]og.* 48 | 49 | # NUnit 50 | *.VisualState.xml 51 | TestResult.xml 52 | nunit-*.xml 53 | 54 | # Build Results of an ATL Project 55 | [Dd]ebugPS/ 56 | [Rr]eleasePS/ 57 | dlldata.c 58 | 59 | # Benchmark Results 60 | BenchmarkDotNet.Artifacts/ 61 | 62 | # .NET Core 63 | project.lock.json 64 | project.fragment.lock.json 65 | artifacts/ 66 | 67 | # ASP.NET Scaffolding 68 | ScaffoldingReadMe.txt 69 | 70 | # StyleCop 71 | StyleCopReport.xml 72 | 73 | # Files built by Visual Studio 74 | *_i.c 75 | *_p.c 76 | *_h.h 77 | *.ilk 78 | *.meta 79 | *.obj 80 | *.iobj 81 | *.pch 82 | *.pdb 83 | *.ipdb 84 | *.pgc 85 | *.pgd 86 | *.rsp 87 | *.sbr 88 | *.tlb 89 | *.tli 90 | *.tlh 91 | *.tmp 92 | *.tmp_proj 93 | *_wpftmp.csproj 94 | *.log 95 | *.vspscc 96 | *.vssscc 97 | .builds 98 | *.pidb 99 | *.svclog 100 | *.scc 101 | 102 | # Chutzpah Test files 103 | _Chutzpah* 104 | 105 | # Visual C++ cache files 106 | ipch/ 107 | *.aps 108 | *.ncb 109 | *.opendb 110 | *.opensdf 111 | *.sdf 112 | *.cachefile 113 | *.VC.db 114 | *.VC.VC.opendb 115 | 116 | # Visual Studio profiler 117 | *.psess 118 | *.vsp 119 | *.vspx 120 | *.sap 121 | 122 | # Visual Studio Trace Files 123 | *.e2e 124 | 125 | # TFS 2012 Local Workspace 126 | $tf/ 127 | 128 | # Guidance Automation Toolkit 129 | *.gpState 130 | 131 | # ReSharper is a .NET coding add-in 132 | _ReSharper*/ 133 | *.[Rr]e[Ss]harper 134 | *.DotSettings.user 135 | 136 | # TeamCity is a build add-in 137 | _TeamCity* 138 | 139 | # DotCover is a Code Coverage Tool 140 | *.dotCover 141 | 142 | # AxoCover is a Code Coverage Tool 143 | .axoCover/* 144 | !.axoCover/settings.json 145 | 146 | # Coverlet is a free, cross platform Code Coverage Tool 147 | coverage*.json 148 | coverage*.xml 149 | coverage*.info 150 | 151 | # Visual Studio code coverage results 152 | *.coverage 153 | *.coveragexml 154 | 155 | # NCrunch 156 | _NCrunch_* 157 | .*crunch*.local.xml 158 | nCrunchTemp_* 159 | 160 | # MightyMoose 161 | *.mm.* 162 | AutoTest.Net/ 163 | 164 | # Web workbench (sass) 165 | .sass-cache/ 166 | 167 | # Installshield output folder 168 | [Ee]xpress/ 169 | 170 | # DocProject is a documentation generator add-in 171 | DocProject/buildhelp/ 172 | DocProject/Help/*.HxT 173 | DocProject/Help/*.HxC 174 | DocProject/Help/*.hhc 175 | DocProject/Help/*.hhk 176 | DocProject/Help/*.hhp 177 | DocProject/Help/Html2 178 | DocProject/Help/html 179 | 180 | # Click-Once directory 181 | publish/ 182 | 183 | # Publish Web Output 184 | *.[Pp]ublish.xml 185 | *.azurePubxml 186 | # Note: Comment the next line if you want to checkin your web deploy settings, 187 | # but database connection strings (with potential passwords) will be unencrypted 188 | *.pubxml 189 | *.publishproj 190 | 191 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 192 | # checkin your Azure Web App publish settings, but sensitive information contained 193 | # in these scripts will be unencrypted 194 | PublishScripts/ 195 | 196 | # NuGet Packages 197 | *.nupkg 198 | # NuGet Symbol Packages 199 | *.snupkg 200 | # The packages folder can be ignored because of Package Restore 201 | **/[Pp]ackages/* 202 | # except build/, which is used as an MSBuild target. 203 | !**/[Pp]ackages/build/ 204 | # Uncomment if necessary however generally it will be regenerated when needed 205 | #!**/[Pp]ackages/repositories.config 206 | # NuGet v3's project.json files produces more ignorable files 207 | *.nuget.props 208 | *.nuget.targets 209 | 210 | # Microsoft Azure Build Output 211 | csx/ 212 | *.build.csdef 213 | 214 | # Microsoft Azure Emulator 215 | ecf/ 216 | rcf/ 217 | 218 | # Windows Store app package directories and files 219 | AppPackages/ 220 | BundleArtifacts/ 221 | Package.StoreAssociation.xml 222 | _pkginfo.txt 223 | *.appx 224 | *.appxbundle 225 | *.appxupload 226 | 227 | # Visual Studio cache files 228 | # files ending in .cache can be ignored 229 | *.[Cc]ache 230 | # but keep track of directories ending in .cache 231 | !?*.[Cc]ache/ 232 | 233 | # Others 234 | ClientBin/ 235 | ~$* 236 | *~ 237 | *.dbmdl 238 | *.dbproj.schemaview 239 | *.jfm 240 | *.pfx 241 | *.publishsettings 242 | orleans.codegen.cs 243 | 244 | # Including strong name files can present a security risk 245 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 246 | #*.snk 247 | 248 | # Since there are multiple workflows, uncomment next line to ignore bower_components 249 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 250 | #bower_components/ 251 | 252 | # RIA/Silverlight projects 253 | Generated_Code/ 254 | 255 | # Backup & report files from converting an old project file 256 | # to a newer Visual Studio version. Backup files are not needed, 257 | # because we have git ;-) 258 | _UpgradeReport_Files/ 259 | Backup*/ 260 | UpgradeLog*.XML 261 | UpgradeLog*.htm 262 | ServiceFabricBackup/ 263 | *.rptproj.bak 264 | 265 | # SQL Server files 266 | *.mdf 267 | *.ldf 268 | *.ndf 269 | 270 | # Business Intelligence projects 271 | *.rdl.data 272 | *.bim.layout 273 | *.bim_*.settings 274 | *.rptproj.rsuser 275 | *- [Bb]ackup.rdl 276 | *- [Bb]ackup ([0-9]).rdl 277 | *- [Bb]ackup ([0-9][0-9]).rdl 278 | 279 | # Microsoft Fakes 280 | FakesAssemblies/ 281 | 282 | # GhostDoc plugin setting file 283 | *.GhostDoc.xml 284 | 285 | # Node.js Tools for Visual Studio 286 | .ntvs_analysis.dat 287 | node_modules/ 288 | 289 | # Visual Studio 6 build log 290 | *.plg 291 | 292 | # Visual Studio 6 workspace options file 293 | *.opt 294 | 295 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 296 | *.vbw 297 | 298 | # Visual Studio LightSwitch build output 299 | **/*.HTMLClient/GeneratedArtifacts 300 | **/*.DesktopClient/GeneratedArtifacts 301 | **/*.DesktopClient/ModelManifest.xml 302 | **/*.Server/GeneratedArtifacts 303 | **/*.Server/ModelManifest.xml 304 | _Pvt_Extensions 305 | 306 | # Paket dependency manager 307 | .paket/paket.exe 308 | paket-files/ 309 | 310 | # FAKE - F# Make 311 | .fake/ 312 | 313 | # CodeRush personal settings 314 | .cr/personal 315 | 316 | # Python Tools for Visual Studio (PTVS) 317 | __pycache__/ 318 | *.pyc 319 | 320 | # Cake - Uncomment if you are using it 321 | # tools/** 322 | # !tools/packages.config 323 | 324 | # Tabs Studio 325 | *.tss 326 | 327 | # Telerik's JustMock configuration file 328 | *.jmconfig 329 | 330 | # BizTalk build output 331 | *.btp.cs 332 | *.btm.cs 333 | *.odx.cs 334 | *.xsd.cs 335 | 336 | # OpenCover UI analysis results 337 | OpenCover/ 338 | 339 | # Azure Stream Analytics local run output 340 | ASALocalRun/ 341 | 342 | # MSBuild Binary and Structured Log 343 | *.binlog 344 | 345 | # NVidia Nsight GPU debugger configuration file 346 | *.nvuser 347 | 348 | # MFractors (Xamarin productivity tool) working folder 349 | .mfractor/ 350 | 351 | # Local History for Visual Studio 352 | .localhistory/ 353 | 354 | # BeatPulse healthcheck temp database 355 | healthchecksdb 356 | 357 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 358 | MigrationBackup/ 359 | 360 | # Ionide (cross platform F# VS Code tools) working folder 361 | .ionide/ 362 | 363 | # Fody - auto-generated XML schema 364 | FodyWeavers.xsd 365 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 2.1, February 1999 3 | 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | [This is the first released version of the Lesser GPL. It also counts 10 | as the successor of the GNU Library Public License, version 2, hence 11 | the version number 2.1.] 12 | 13 | Preamble 14 | 15 | The licenses for most software are designed to take away your 16 | freedom to share and change it. By contrast, the GNU General Public 17 | Licenses are intended to guarantee your freedom to share and change 18 | free software--to make sure the software is free for all its users. 19 | 20 | This license, the Lesser General Public License, applies to some 21 | specially designated software packages--typically libraries--of the 22 | Free Software Foundation and other authors who decide to use it. You 23 | can use it too, but we suggest you first think carefully about whether 24 | this license or the ordinary General Public License is the better 25 | strategy to use in any particular case, based on the explanations below. 26 | 27 | When we speak of free software, we are referring to freedom of use, 28 | not price. Our General Public Licenses are designed to make sure that 29 | you have the freedom to distribute copies of free software (and charge 30 | for this service if you wish); that you receive source code or can get 31 | it if you want it; that you can change the software and use pieces of 32 | it in new free programs; and that you are informed that you can do 33 | these things. 34 | 35 | To protect your rights, we need to make restrictions that forbid 36 | distributors to deny you these rights or to ask you to surrender these 37 | rights. These restrictions translate to certain responsibilities for 38 | you if you distribute copies of the library or if you modify it. 39 | 40 | For example, if you distribute copies of the library, whether gratis 41 | or for a fee, you must give the recipients all the rights that we gave 42 | you. You must make sure that they, too, receive or can get the source 43 | code. If you link other code with the library, you must provide 44 | complete object files to the recipients, so that they can relink them 45 | with the library after making changes to the library and recompiling 46 | it. And you must show them these terms so they know their rights. 47 | 48 | We protect your rights with a two-step method: (1) we copyright the 49 | library, and (2) we offer you this license, which gives you legal 50 | permission to copy, distribute and/or modify the library. 51 | 52 | To protect each distributor, we want to make it very clear that 53 | there is no warranty for the free library. Also, if the library is 54 | modified by someone else and passed on, the recipients should know 55 | that what they have is not the original version, so that the original 56 | author's reputation will not be affected by problems that might be 57 | introduced by others. 58 | 59 | Finally, software patents pose a constant threat to the existence of 60 | any free program. We wish to make sure that a company cannot 61 | effectively restrict the users of a free program by obtaining a 62 | restrictive license from a patent holder. Therefore, we insist that 63 | any patent license obtained for a version of the library must be 64 | consistent with the full freedom of use specified in this license. 65 | 66 | Most GNU software, including some libraries, is covered by the 67 | ordinary GNU General Public License. This license, the GNU Lesser 68 | General Public License, applies to certain designated libraries, and 69 | is quite different from the ordinary General Public License. We use 70 | this license for certain libraries in order to permit linking those 71 | libraries into non-free programs. 72 | 73 | When a program is linked with a library, whether statically or using 74 | a shared library, the combination of the two is legally speaking a 75 | combined work, a derivative of the original library. The ordinary 76 | General Public License therefore permits such linking only if the 77 | entire combination fits its criteria of freedom. The Lesser General 78 | Public License permits more lax criteria for linking other code with 79 | the library. 80 | 81 | We call this license the "Lesser" General Public License because it 82 | does Less to protect the user's freedom than the ordinary General 83 | Public License. It also provides other free software developers Less 84 | of an advantage over competing non-free programs. These disadvantages 85 | are the reason we use the ordinary General Public License for many 86 | libraries. However, the Lesser license provides advantages in certain 87 | special circumstances. 88 | 89 | For example, on rare occasions, there may be a special need to 90 | encourage the widest possible use of a certain library, so that it becomes 91 | a de-facto standard. To achieve this, non-free programs must be 92 | allowed to use the library. A more frequent case is that a free 93 | library does the same job as widely used non-free libraries. In this 94 | case, there is little to gain by limiting the free library to free 95 | software only, so we use the Lesser General Public License. 96 | 97 | In other cases, permission to use a particular library in non-free 98 | programs enables a greater number of people to use a large body of 99 | free software. For example, permission to use the GNU C Library in 100 | non-free programs enables many more people to use the whole GNU 101 | operating system, as well as its variant, the GNU/Linux operating 102 | system. 103 | 104 | Although the Lesser General Public License is Less protective of the 105 | users' freedom, it does ensure that the user of a program that is 106 | linked with the Library has the freedom and the wherewithal to run 107 | that program using a modified version of the Library. 108 | 109 | The precise terms and conditions for copying, distribution and 110 | modification follow. Pay close attention to the difference between a 111 | "work based on the library" and a "work that uses the library". The 112 | former contains code derived from the library, whereas the latter must 113 | be combined with the library in order to run. 114 | 115 | GNU LESSER GENERAL PUBLIC LICENSE 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 117 | 118 | 0. This License Agreement applies to any software library or other 119 | program which contains a notice placed by the copyright holder or 120 | other authorized party saying it may be distributed under the terms of 121 | this Lesser General Public License (also called "this License"). 122 | Each licensee is addressed as "you". 123 | 124 | A "library" means a collection of software functions and/or data 125 | prepared so as to be conveniently linked with application programs 126 | (which use some of those functions and data) to form executables. 127 | 128 | The "Library", below, refers to any such software library or work 129 | which has been distributed under these terms. A "work based on the 130 | Library" means either the Library or any derivative work under 131 | copyright law: that is to say, a work containing the Library or a 132 | portion of it, either verbatim or with modifications and/or translated 133 | straightforwardly into another language. (Hereinafter, translation is 134 | included without limitation in the term "modification".) 135 | 136 | "Source code" for a work means the preferred form of the work for 137 | making modifications to it. For a library, complete source code means 138 | all the source code for all modules it contains, plus any associated 139 | interface definition files, plus the scripts used to control compilation 140 | and installation of the library. 141 | 142 | Activities other than copying, distribution and modification are not 143 | covered by this License; they are outside its scope. The act of 144 | running a program using the Library is not restricted, and output from 145 | such a program is covered only if its contents constitute a work based 146 | on the Library (independent of the use of the Library in a tool for 147 | writing it). Whether that is true depends on what the Library does 148 | and what the program that uses the Library does. 149 | 150 | 1. You may copy and distribute verbatim copies of the Library's 151 | complete source code as you receive it, in any medium, provided that 152 | you conspicuously and appropriately publish on each copy an 153 | appropriate copyright notice and disclaimer of warranty; keep intact 154 | all the notices that refer to this License and to the absence of any 155 | warranty; and distribute a copy of this License along with the 156 | Library. 157 | 158 | You may charge a fee for the physical act of transferring a copy, 159 | and you may at your option offer warranty protection in exchange for a 160 | fee. 161 | 162 | 2. You may modify your copy or copies of the Library or any portion 163 | of it, thus forming a work based on the Library, and copy and 164 | distribute such modifications or work under the terms of Section 1 165 | above, provided that you also meet all of these conditions: 166 | 167 | a) The modified work must itself be a software library. 168 | 169 | b) You must cause the files modified to carry prominent notices 170 | stating that you changed the files and the date of any change. 171 | 172 | c) You must cause the whole of the work to be licensed at no 173 | charge to all third parties under the terms of this License. 174 | 175 | d) If a facility in the modified Library refers to a function or a 176 | table of data to be supplied by an application program that uses 177 | the facility, other than as an argument passed when the facility 178 | is invoked, then you must make a good faith effort to ensure that, 179 | in the event an application does not supply such function or 180 | table, the facility still operates, and performs whatever part of 181 | its purpose remains meaningful. 182 | 183 | (For example, a function in a library to compute square roots has 184 | a purpose that is entirely well-defined independent of the 185 | application. Therefore, Subsection 2d requires that any 186 | application-supplied function or table used by this function must 187 | be optional: if the application does not supply it, the square 188 | root function must still compute square roots.) 189 | 190 | These requirements apply to the modified work as a whole. If 191 | identifiable sections of that work are not derived from the Library, 192 | and can be reasonably considered independent and separate works in 193 | themselves, then this License, and its terms, do not apply to those 194 | sections when you distribute them as separate works. But when you 195 | distribute the same sections as part of a whole which is a work based 196 | on the Library, the distribution of the whole must be on the terms of 197 | this License, whose permissions for other licensees extend to the 198 | entire whole, and thus to each and every part regardless of who wrote 199 | it. 200 | 201 | Thus, it is not the intent of this section to claim rights or contest 202 | your rights to work written entirely by you; rather, the intent is to 203 | exercise the right to control the distribution of derivative or 204 | collective works based on the Library. 205 | 206 | In addition, mere aggregation of another work not based on the Library 207 | with the Library (or with a work based on the Library) on a volume of 208 | a storage or distribution medium does not bring the other work under 209 | the scope of this License. 210 | 211 | 3. You may opt to apply the terms of the ordinary GNU General Public 212 | License instead of this License to a given copy of the Library. To do 213 | this, you must alter all the notices that refer to this License, so 214 | that they refer to the ordinary GNU General Public License, version 2, 215 | instead of to this License. (If a newer version than version 2 of the 216 | ordinary GNU General Public License has appeared, then you can specify 217 | that version instead if you wish.) Do not make any other change in 218 | these notices. 219 | 220 | Once this change is made in a given copy, it is irreversible for 221 | that copy, so the ordinary GNU General Public License applies to all 222 | subsequent copies and derivative works made from that copy. 223 | 224 | This option is useful when you wish to copy part of the code of 225 | the Library into a program that is not a library. 226 | 227 | 4. You may copy and distribute the Library (or a portion or 228 | derivative of it, under Section 2) in object code or executable form 229 | under the terms of Sections 1 and 2 above provided that you accompany 230 | it with the complete corresponding machine-readable source code, which 231 | must be distributed under the terms of Sections 1 and 2 above on a 232 | medium customarily used for software interchange. 233 | 234 | If distribution of object code is made by offering access to copy 235 | from a designated place, then offering equivalent access to copy the 236 | source code from the same place satisfies the requirement to 237 | distribute the source code, even though third parties are not 238 | compelled to copy the source along with the object code. 239 | 240 | 5. A program that contains no derivative of any portion of the 241 | Library, but is designed to work with the Library by being compiled or 242 | linked with it, is called a "work that uses the Library". Such a 243 | work, in isolation, is not a derivative work of the Library, and 244 | therefore falls outside the scope of this License. 245 | 246 | However, linking a "work that uses the Library" with the Library 247 | creates an executable that is a derivative of the Library (because it 248 | contains portions of the Library), rather than a "work that uses the 249 | library". The executable is therefore covered by this License. 250 | Section 6 states terms for distribution of such executables. 251 | 252 | When a "work that uses the Library" uses material from a header file 253 | that is part of the Library, the object code for the work may be a 254 | derivative work of the Library even though the source code is not. 255 | Whether this is true is especially significant if the work can be 256 | linked without the Library, or if the work is itself a library. The 257 | threshold for this to be true is not precisely defined by law. 258 | 259 | If such an object file uses only numerical parameters, data 260 | structure layouts and accessors, and small macros and small inline 261 | functions (ten lines or less in length), then the use of the object 262 | file is unrestricted, regardless of whether it is legally a derivative 263 | work. (Executables containing this object code plus portions of the 264 | Library will still fall under Section 6.) 265 | 266 | Otherwise, if the work is a derivative of the Library, you may 267 | distribute the object code for the work under the terms of Section 6. 268 | Any executables containing that work also fall under Section 6, 269 | whether or not they are linked directly with the Library itself. 270 | 271 | 6. As an exception to the Sections above, you may also combine or 272 | link a "work that uses the Library" with the Library to produce a 273 | work containing portions of the Library, and distribute that work 274 | under terms of your choice, provided that the terms permit 275 | modification of the work for the customer's own use and reverse 276 | engineering for debugging such modifications. 277 | 278 | You must give prominent notice with each copy of the work that the 279 | Library is used in it and that the Library and its use are covered by 280 | this License. You must supply a copy of this License. If the work 281 | during execution displays copyright notices, you must include the 282 | copyright notice for the Library among them, as well as a reference 283 | directing the user to the copy of this License. Also, you must do one 284 | of these things: 285 | 286 | a) Accompany the work with the complete corresponding 287 | machine-readable source code for the Library including whatever 288 | changes were used in the work (which must be distributed under 289 | Sections 1 and 2 above); and, if the work is an executable linked 290 | with the Library, with the complete machine-readable "work that 291 | uses the Library", as object code and/or source code, so that the 292 | user can modify the Library and then relink to produce a modified 293 | executable containing the modified Library. (It is understood 294 | that the user who changes the contents of definitions files in the 295 | Library will not necessarily be able to recompile the application 296 | to use the modified definitions.) 297 | 298 | b) Use a suitable shared library mechanism for linking with the 299 | Library. A suitable mechanism is one that (1) uses at run time a 300 | copy of the library already present on the user's computer system, 301 | rather than copying library functions into the executable, and (2) 302 | will operate properly with a modified version of the library, if 303 | the user installs one, as long as the modified version is 304 | interface-compatible with the version that the work was made with. 305 | 306 | c) Accompany the work with a written offer, valid for at 307 | least three years, to give the same user the materials 308 | specified in Subsection 6a, above, for a charge no more 309 | than the cost of performing this distribution. 310 | 311 | d) If distribution of the work is made by offering access to copy 312 | from a designated place, offer equivalent access to copy the above 313 | specified materials from the same place. 314 | 315 | e) Verify that the user has already received a copy of these 316 | materials or that you have already sent this user a copy. 317 | 318 | For an executable, the required form of the "work that uses the 319 | Library" must include any data and utility programs needed for 320 | reproducing the executable from it. However, as a special exception, 321 | the materials to be distributed need not include anything that is 322 | normally distributed (in either source or binary form) with the major 323 | components (compiler, kernel, and so on) of the operating system on 324 | which the executable runs, unless that component itself accompanies 325 | the executable. 326 | 327 | It may happen that this requirement contradicts the license 328 | restrictions of other proprietary libraries that do not normally 329 | accompany the operating system. Such a contradiction means you cannot 330 | use both them and the Library together in an executable that you 331 | distribute. 332 | 333 | 7. You may place library facilities that are a work based on the 334 | Library side-by-side in a single library together with other library 335 | facilities not covered by this License, and distribute such a combined 336 | library, provided that the separate distribution of the work based on 337 | the Library and of the other library facilities is otherwise 338 | permitted, and provided that you do these two things: 339 | 340 | a) Accompany the combined library with a copy of the same work 341 | based on the Library, uncombined with any other library 342 | facilities. This must be distributed under the terms of the 343 | Sections above. 344 | 345 | b) Give prominent notice with the combined library of the fact 346 | that part of it is a work based on the Library, and explaining 347 | where to find the accompanying uncombined form of the same work. 348 | 349 | 8. You may not copy, modify, sublicense, link with, or distribute 350 | the Library except as expressly provided under this License. Any 351 | attempt otherwise to copy, modify, sublicense, link with, or 352 | distribute the Library is void, and will automatically terminate your 353 | rights under this License. However, parties who have received copies, 354 | or rights, from you under this License will not have their licenses 355 | terminated so long as such parties remain in full compliance. 356 | 357 | 9. You are not required to accept this License, since you have not 358 | signed it. However, nothing else grants you permission to modify or 359 | distribute the Library or its derivative works. These actions are 360 | prohibited by law if you do not accept this License. Therefore, by 361 | modifying or distributing the Library (or any work based on the 362 | Library), you indicate your acceptance of this License to do so, and 363 | all its terms and conditions for copying, distributing or modifying 364 | the Library or works based on it. 365 | 366 | 10. Each time you redistribute the Library (or any work based on the 367 | Library), the recipient automatically receives a license from the 368 | original licensor to copy, distribute, link with or modify the Library 369 | subject to these terms and conditions. You may not impose any further 370 | restrictions on the recipients' exercise of the rights granted herein. 371 | You are not responsible for enforcing compliance by third parties with 372 | this License. 373 | 374 | 11. If, as a consequence of a court judgment or allegation of patent 375 | infringement or for any other reason (not limited to patent issues), 376 | conditions are imposed on you (whether by court order, agreement or 377 | otherwise) that contradict the conditions of this License, they do not 378 | excuse you from the conditions of this License. If you cannot 379 | distribute so as to satisfy simultaneously your obligations under this 380 | License and any other pertinent obligations, then as a consequence you 381 | may not distribute the Library at all. For example, if a patent 382 | license would not permit royalty-free redistribution of the Library by 383 | all those who receive copies directly or indirectly through you, then 384 | the only way you could satisfy both it and this License would be to 385 | refrain entirely from distribution of the Library. 386 | 387 | If any portion of this section is held invalid or unenforceable under any 388 | particular circumstance, the balance of the section is intended to apply, 389 | and the section as a whole is intended to apply in other circumstances. 390 | 391 | It is not the purpose of this section to induce you to infringe any 392 | patents or other property right claims or to contest validity of any 393 | such claims; this section has the sole purpose of protecting the 394 | integrity of the free software distribution system which is 395 | implemented by public license practices. Many people have made 396 | generous contributions to the wide range of software distributed 397 | through that system in reliance on consistent application of that 398 | system; it is up to the author/donor to decide if he or she is willing 399 | to distribute software through any other system and a licensee cannot 400 | impose that choice. 401 | 402 | This section is intended to make thoroughly clear what is believed to 403 | be a consequence of the rest of this License. 404 | 405 | 12. If the distribution and/or use of the Library is restricted in 406 | certain countries either by patents or by copyrighted interfaces, the 407 | original copyright holder who places the Library under this License may add 408 | an explicit geographical distribution limitation excluding those countries, 409 | so that distribution is permitted only in or among countries not thus 410 | excluded. In such case, this License incorporates the limitation as if 411 | written in the body of this License. 412 | 413 | 13. The Free Software Foundation may publish revised and/or new 414 | versions of the Lesser General Public License from time to time. 415 | Such new versions will be similar in spirit to the present version, 416 | but may differ in detail to address new problems or concerns. 417 | 418 | Each version is given a distinguishing version number. If the Library 419 | specifies a version number of this License which applies to it and 420 | "any later version", you have the option of following the terms and 421 | conditions either of that version or of any later version published by 422 | the Free Software Foundation. If the Library does not specify a 423 | license version number, you may choose any version ever published by 424 | the Free Software Foundation. 425 | 426 | 14. If you wish to incorporate parts of the Library into other free 427 | programs whose distribution conditions are incompatible with these, 428 | write to the author to ask for permission. For software which is 429 | copyrighted by the Free Software Foundation, write to the Free 430 | Software Foundation; we sometimes make exceptions for this. Our 431 | decision will be guided by the two goals of preserving the free status 432 | of all derivatives of our free software and of promoting the sharing 433 | and reuse of software generally. 434 | 435 | NO WARRANTY 436 | 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 446 | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 456 | DAMAGES. 457 | 458 | END OF TERMS AND CONDITIONS 459 | 460 | How to Apply These Terms to Your New Libraries 461 | 462 | If you develop a new library, and you want it to be of the greatest 463 | possible use to the public, we recommend making it free software that 464 | everyone can redistribute and change. You can do so by permitting 465 | redistribution under these terms (or, alternatively, under the terms of the 466 | ordinary General Public License). 467 | 468 | To apply these terms, attach the following notices to the library. It is 469 | safest to attach them to the start of each source file to most effectively 470 | convey the exclusion of warranty; and each file should have at least the 471 | "copyright" line and a pointer to where the full notice is found. 472 | 473 | 474 | Copyright (C) 475 | 476 | This library is free software; you can redistribute it and/or 477 | modify it under the terms of the GNU Lesser General Public 478 | License as published by the Free Software Foundation; either 479 | version 2.1 of the License, or (at your option) any later version. 480 | 481 | This library is distributed in the hope that it will be useful, 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 484 | Lesser General Public License for more details. 485 | 486 | You should have received a copy of the GNU Lesser General Public 487 | License along with this library; if not, write to the Free Software 488 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 489 | USA 490 | 491 | Also add information on how to contact you by electronic and paper mail. 492 | 493 | You should also get your employer (if you work as a programmer) or your 494 | school, if any, to sign a "copyright disclaimer" for the library, if 495 | necessary. Here is a sample; alter the names: 496 | 497 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 498 | library `Frob' (a library for tweaking knobs) written by James Random 499 | Hacker. 500 | 501 | , 1 April 1990 502 | Ty Coon, President of Vice 503 | 504 | That's all there is to it! 505 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("Microsoft Store Downloader")] 9 | [assembly: AssemblyDescription("Download Microsoft Store content")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Microsoft Store Downloader")] 13 | [assembly: AssemblyCopyright("ThebestkillerTBK")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("b41bb8c5-767d-46e3-99d1-d6b7ecc144a6")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 33 | //通过使用 "*",如下所示: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.1.6.0")] 36 | [assembly: AssemblyFileVersion("1.1.6.0")] 37 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Windows_Store_Downloader.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Windows_Store_Downloader.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 重写当前线程的 CurrentUICulture 属性,对 51 | /// 使用此强类型资源类的所有资源查找执行重写。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 65 | /// 66 | internal static System.Drawing.Bitmap icon { 67 | get { 68 | object obj = ResourceManager.GetObject("icon", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// 查找 System.Byte[] 类型的本地化资源。 75 | /// 76 | internal static byte[] res { 77 | get { 78 | object obj = ResourceManager.GetObject("res", resourceCulture); 79 | return ((byte[])(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// 查找 System.Drawing.Bitmap 类型的本地化资源。 85 | /// 86 | internal static System.Drawing.Bitmap store { 87 | get { 88 | object obj = ResourceManager.GetObject("store", resourceCulture); 89 | return ((System.Drawing.Bitmap)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// 查找类似 <!doctype html> 95 | ///<html lang="zh-cmn-Hans"> 96 | /// <head> 97 | /// <meta charset="utf-8"> 98 | /// <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no"/> 99 | /// <meta name="renderer" content="webkit"/> 100 | /// <meta name="force-rendering" content="webkit"/> 101 | /// <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 102 | /// <!-- MDUI CSS --> 103 | /// <link 104 | /// rel="stylesheet" 105 | /// href="https://cdn.jsdelivr.net/npm/mdui@1.0.1/dist/css/mdui.min.css" 106 | /// integrity="s [字符串的其余部分被截断]"; 的本地化字符串。 107 | /// 108 | internal static string table_1 { 109 | get { 110 | return ResourceManager.GetString("table_1", resourceCulture); 111 | } 112 | } 113 | 114 | /// 115 | /// 查找类似 <!doctype html> 116 | ///<html lang="zh-cmn-Hans"> 117 | /// <head> 118 | /// <meta charset="utf-8"> 119 | /// <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no"/> 120 | /// <meta name="renderer" content="webkit"/> 121 | /// <meta name="force-rendering" content="webkit"/> 122 | /// <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 123 | /// <!-- MDUI CSS --> 124 | /// <link 125 | /// rel="stylesheet" 126 | /// href="https://cdn.jsdelivr.net/npm/mdui@1.0.1/dist/css/mdui.min.css" 127 | /// integrity="s [字符串的其余部分被截断]"; 的本地化字符串。 128 | /// 129 | internal static string table_1_cn { 130 | get { 131 | return ResourceManager.GetString("table_1_cn", resourceCulture); 132 | } 133 | } 134 | 135 | /// 136 | /// 查找类似 <!-- END CHANGE --> 137 | /// </div> 138 | /// 139 | /// <button class="mdui-btn mdui-btn-raised mdui-ripple mdui-color-indigo mdui-valign mdui-center" 140 | /// onClick="document.title = 'IAMOKAY';" style="margin-top: 20px;">Okay 141 | /// <i class="mdui-icon material-icons"> 142 | /// check</i></button> 143 | /// </div> 144 | /// <!-- MDUI JavaScript --> 145 | /// <script 146 | /// src="https://cdn.jsdelivr.net/npm/mdui@1.0.1/dist/js/mdui.min.js" 147 | /// integrity="sha384-gCMZcshYKOGRX9r6wbDrvF+TcCCswSHFucUzUPwka+Gr+uHgjlYvk [字符串的其余部分被截断]"; 的本地化字符串。 148 | /// 149 | internal static string table_2 { 150 | get { 151 | return ResourceManager.GetString("table_2", resourceCulture); 152 | } 153 | } 154 | 155 | /// 156 | /// 查找类似 <!-- END CHANGE --> 157 | /// </div> 158 | /// 159 | /// <button class="mdui-btn mdui-btn-raised mdui-ripple mdui-color-indigo mdui-valign mdui-center" 160 | /// onClick="document.title = 'IAMOKAY';" style="margin-top: 20px;">确认 161 | /// <i class="mdui-icon material-icons"> 162 | /// check</i></button> 163 | /// </div> 164 | /// <!-- MDUI JavaScript --> 165 | /// <script 166 | /// src="https://cdn.jsdelivr.net/npm/mdui@1.0.1/dist/js/mdui.min.js" 167 | /// integrity="sha384-gCMZcshYKOGRX9r6wbDrvF+TcCCswSHFucUzUPwka+Gr+uHgjlYvkAB [字符串的其余部分被截断]"; 的本地化字符串。 168 | /// 169 | internal static string table_2_cn { 170 | get { 171 | return ResourceManager.GetString("table_2_cn", resourceCulture); 172 | } 173 | } 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\resource\table\table-1.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 123 | 124 | 125 | ..\resource\table\table-2.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 126 | 127 | 128 | ..\resource\table\table-1-cn.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 129 | 130 | 131 | ..\resource\res.zip;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 132 | 133 | 134 | ..\resources\store.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 135 | 136 | 137 | ..\resource\table\table-2-cn.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 138 | 139 | 140 | ..\resources\icon.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 141 | 142 | -------------------------------------------------------------------------------- /Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Windows_Store_Downloader.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | **[中文文档](doc/cn.md)** 2 | 3 | 4 | ## Microsoft Store Downloader 5 | 6 | ![stars](https://img.shields.io/github/stars/ThebestkillerTBK/Windows-Store-Downloader.svg?label=GitHub) 7 | ![License](https://img.shields.io/badge/License-LGPL-green.svg) 8 | ### Introduction 9 | A tool helps you to download Microsoft Store applications without any limitations. 10 | 11 | You can download paid, restricted and free Apps. 12 | 13 | You should download packages of your system and install them all. 14 | 15 | Some codes are from the Internet. 16 | 17 | Example: 18 | 19 | ![image](doc/example.webp) 20 | 21 | ### Features 22 | * Download Microsoft Store Apps 23 | * Download without any limitations 24 | * Download paid and restricted Apps 25 | 26 | ### Links and contributors 27 | * Github repo: https://github.com/ThebestkillerTBK/Windows-Store-Downloader 28 | 29 | [![Stargazers repo roster for @ThebestkillerTBK/Windows-Store-Downloader](https://reporoster.com/stars/ThebestkillerTBK/Windows-Store-Downloader)](https://github.com/ThebestkillerTBK/Windows-Store-Downloader/stargazers) 30 | 31 | [![Forkers repo roster for @ThebestkillerTBK/Windows-Store-Downloader](https://reporoster.com/forks/ThebestkillerTBK/Windows-Store-Downloader)](https://github.com/ThebestkillerTBK/Windows-Store-Downloader/network/members) 32 | -------------------------------------------------------------------------------- /Windows Store Downloader.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6} 8 | WinExe 9 | Windows_Store_Downloader 10 | Microsoft Store Downloader 11 | v4.5.2 12 | 512 13 | true 14 | false 15 | 16 | publish\ 17 | true 18 | Disk 19 | false 20 | Foreground 21 | 7 22 | Days 23 | false 24 | false 25 | true 26 | 0 27 | 1.0.0.%2a 28 | false 29 | true 30 | 31 | 32 | AnyCPU 33 | true 34 | full 35 | false 36 | bin\Debug\ 37 | DEBUG;TRACE 38 | prompt 39 | 4 40 | true 41 | 42 | 43 | AnyCPU 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | true 51 | true 52 | 53 | 54 | false 55 | 56 | 57 | true 58 | bin\x64\Debug\ 59 | DEBUG;TRACE 60 | full 61 | x64 62 | 7.3 63 | prompt 64 | false 65 | 66 | 67 | bin\x64\Release\ 68 | TRACE 69 | true 70 | pdbonly 71 | x64 72 | 7.3 73 | prompt 74 | false 75 | 76 | 77 | resources\icon.ico 78 | 79 | 80 | true 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | Form 108 | 109 | 110 | Form1.cs 111 | 112 | 113 | Form 114 | 115 | 116 | Form2.cs 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | Form1.cs 128 | 129 | 130 | Form2.cs 131 | 132 | 133 | ResXFileCodeGenerator 134 | Resources.Designer.cs 135 | Designer 136 | 137 | 138 | True 139 | Resources.resx 140 | True 141 | 142 | 143 | 144 | 145 | SettingsSingleFileGenerator 146 | Settings.Designer.cs 147 | 148 | 149 | True 150 | Settings.settings 151 | True 152 | 153 | 154 | 155 | 156 | 157 | False 158 | .NET Framework 3.5 SP1 159 | false 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | copy "$(ProjectDir)\resources\acrylic.dll" "$(TargetDir)\acrylic.dll" 174 | rem E:\Program\upx.exe "$(TargetDir)\acrylic.dll" 175 | 176 | -------------------------------------------------------------------------------- /Windows Store Downloader.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30804.86 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Windows Store Downloader", "Windows Store Downloader.csproj", "{B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}" 7 | ProjectSection(ProjectDependencies) = postProject 8 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E} = {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E} 9 | EndProjectSection 10 | EndProject 11 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "acrylic", "acrylic\acrylic.vcxproj", "{A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}" 12 | EndProject 13 | Global 14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 15 | Debug|Any CPU = Debug|Any CPU 16 | Debug|x64 = Debug|x64 17 | Debug|x86 = Debug|x86 18 | Release|Any CPU = Release|Any CPU 19 | Release|x64 = Release|x64 20 | Release|x86 = Release|x86 21 | EndGlobalSection 22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 23 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 24 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|Any CPU.Build.0 = Debug|Any CPU 25 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|x64.ActiveCfg = Debug|x64 26 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|x64.Build.0 = Debug|x64 27 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|x86.ActiveCfg = Debug|Any CPU 28 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Debug|x86.Build.0 = Debug|Any CPU 29 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|Any CPU.ActiveCfg = Release|Any CPU 30 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|Any CPU.Build.0 = Release|Any CPU 31 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|x64.ActiveCfg = Release|x64 32 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|x64.Build.0 = Release|x64 33 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|x86.ActiveCfg = Release|Any CPU 34 | {B41BB8C5-767D-46E3-99D1-D6B7ECC144A6}.Release|x86.Build.0 = Release|Any CPU 35 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|Any CPU.ActiveCfg = Debug|Win32 36 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|Any CPU.Build.0 = Debug|Win32 37 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|x64.ActiveCfg = Debug|x64 38 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|x64.Build.0 = Debug|x64 39 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|x86.ActiveCfg = Debug|Win32 40 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Debug|x86.Build.0 = Debug|Win32 41 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|Any CPU.ActiveCfg = Release|Win32 42 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|Any CPU.Build.0 = Release|Win32 43 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|x64.ActiveCfg = Release|x64 44 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|x64.Build.0 = Release|x64 45 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|x86.ActiveCfg = Release|Win32 46 | {A448B8A7-E8A6-4E3F-BF2F-9C4CA904BB9E}.Release|x86.Build.0 = Release|Win32 47 | EndGlobalSection 48 | GlobalSection(SolutionProperties) = preSolution 49 | HideSolutionNode = FALSE 50 | EndGlobalSection 51 | GlobalSection(ExtensibilityGlobals) = postSolution 52 | SolutionGuid = {64614681-20DF-4AE5-B846-66DCBF123E8C} 53 | EndGlobalSection 54 | EndGlobal 55 | -------------------------------------------------------------------------------- /acrylic/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Ignore Visual Studio temporary files, build results, and 4 | ## files generated by popular Visual Studio add-ons. 5 | ## 6 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 7 | 8 | # User-specific files 9 | *.rsuser 10 | *.suo 11 | *.user 12 | *.userosscache 13 | *.sln.docstates 14 | 15 | # User-specific files (MonoDevelop/Xamarin Studio) 16 | *.userprefs 17 | 18 | # Mono auto generated files 19 | mono_crash.* 20 | 21 | # Build results 22 | [Dd]ebug/ 23 | [Dd]ebugPublic/ 24 | [Rr]elease/ 25 | [Rr]eleases/ 26 | x64/ 27 | x86/ 28 | [Ww][Ii][Nn]32/ 29 | [Aa][Rr][Mm]/ 30 | [Aa][Rr][Mm]64/ 31 | bld/ 32 | [Bb]in/ 33 | [Oo]bj/ 34 | [Ll]og/ 35 | [Ll]ogs/ 36 | 37 | # Visual Studio 2015/2017 cache/options directory 38 | .vs/ 39 | # Uncomment if you have tasks that create the project's static files in wwwroot 40 | #wwwroot/ 41 | 42 | # Visual Studio 2017 auto generated files 43 | Generated\ Files/ 44 | 45 | # MSTest test Results 46 | [Tt]est[Rr]esult*/ 47 | [Bb]uild[Ll]og.* 48 | 49 | # NUnit 50 | *.VisualState.xml 51 | TestResult.xml 52 | nunit-*.xml 53 | 54 | # Build Results of an ATL Project 55 | [Dd]ebugPS/ 56 | [Rr]eleasePS/ 57 | dlldata.c 58 | 59 | # Benchmark Results 60 | BenchmarkDotNet.Artifacts/ 61 | 62 | # .NET Core 63 | project.lock.json 64 | project.fragment.lock.json 65 | artifacts/ 66 | 67 | # ASP.NET Scaffolding 68 | ScaffoldingReadMe.txt 69 | 70 | # StyleCop 71 | StyleCopReport.xml 72 | 73 | # Files built by Visual Studio 74 | *_i.c 75 | *_p.c 76 | *_h.h 77 | *.ilk 78 | *.meta 79 | *.obj 80 | *.iobj 81 | *.pch 82 | *.pdb 83 | *.ipdb 84 | *.pgc 85 | *.pgd 86 | *.rsp 87 | *.sbr 88 | *.tlb 89 | *.tli 90 | *.tlh 91 | *.tmp 92 | *.tmp_proj 93 | *_wpftmp.csproj 94 | *.log 95 | *.vspscc 96 | *.vssscc 97 | .builds 98 | *.pidb 99 | *.svclog 100 | *.scc 101 | 102 | # Chutzpah Test files 103 | _Chutzpah* 104 | 105 | # Visual C++ cache files 106 | ipch/ 107 | *.aps 108 | *.ncb 109 | *.opendb 110 | *.opensdf 111 | *.sdf 112 | *.cachefile 113 | *.VC.db 114 | *.VC.VC.opendb 115 | 116 | # Visual Studio profiler 117 | *.psess 118 | *.vsp 119 | *.vspx 120 | *.sap 121 | 122 | # Visual Studio Trace Files 123 | *.e2e 124 | 125 | # TFS 2012 Local Workspace 126 | $tf/ 127 | 128 | # Guidance Automation Toolkit 129 | *.gpState 130 | 131 | # ReSharper is a .NET coding add-in 132 | _ReSharper*/ 133 | *.[Rr]e[Ss]harper 134 | *.DotSettings.user 135 | 136 | # TeamCity is a build add-in 137 | _TeamCity* 138 | 139 | # DotCover is a Code Coverage Tool 140 | *.dotCover 141 | 142 | # AxoCover is a Code Coverage Tool 143 | .axoCover/* 144 | !.axoCover/settings.json 145 | 146 | # Coverlet is a free, cross platform Code Coverage Tool 147 | coverage*.json 148 | coverage*.xml 149 | coverage*.info 150 | 151 | # Visual Studio code coverage results 152 | *.coverage 153 | *.coveragexml 154 | 155 | # NCrunch 156 | _NCrunch_* 157 | .*crunch*.local.xml 158 | nCrunchTemp_* 159 | 160 | # MightyMoose 161 | *.mm.* 162 | AutoTest.Net/ 163 | 164 | # Web workbench (sass) 165 | .sass-cache/ 166 | 167 | # Installshield output folder 168 | [Ee]xpress/ 169 | 170 | # DocProject is a documentation generator add-in 171 | DocProject/buildhelp/ 172 | DocProject/Help/*.HxT 173 | DocProject/Help/*.HxC 174 | DocProject/Help/*.hhc 175 | DocProject/Help/*.hhk 176 | DocProject/Help/*.hhp 177 | DocProject/Help/Html2 178 | DocProject/Help/html 179 | 180 | # Click-Once directory 181 | publish/ 182 | 183 | # Publish Web Output 184 | *.[Pp]ublish.xml 185 | *.azurePubxml 186 | # Note: Comment the next line if you want to checkin your web deploy settings, 187 | # but database connection strings (with potential passwords) will be unencrypted 188 | *.pubxml 189 | *.publishproj 190 | 191 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 192 | # checkin your Azure Web App publish settings, but sensitive information contained 193 | # in these scripts will be unencrypted 194 | PublishScripts/ 195 | 196 | # NuGet Packages 197 | *.nupkg 198 | # NuGet Symbol Packages 199 | *.snupkg 200 | # The packages folder can be ignored because of Package Restore 201 | **/[Pp]ackages/* 202 | # except build/, which is used as an MSBuild target. 203 | !**/[Pp]ackages/build/ 204 | # Uncomment if necessary however generally it will be regenerated when needed 205 | #!**/[Pp]ackages/repositories.config 206 | # NuGet v3's project.json files produces more ignorable files 207 | *.nuget.props 208 | *.nuget.targets 209 | 210 | # Microsoft Azure Build Output 211 | csx/ 212 | *.build.csdef 213 | 214 | # Microsoft Azure Emulator 215 | ecf/ 216 | rcf/ 217 | 218 | # Windows Store app package directories and files 219 | AppPackages/ 220 | BundleArtifacts/ 221 | Package.StoreAssociation.xml 222 | _pkginfo.txt 223 | *.appx 224 | *.appxbundle 225 | *.appxupload 226 | 227 | # Visual Studio cache files 228 | # files ending in .cache can be ignored 229 | *.[Cc]ache 230 | # but keep track of directories ending in .cache 231 | !?*.[Cc]ache/ 232 | 233 | # Others 234 | ClientBin/ 235 | ~$* 236 | *~ 237 | *.dbmdl 238 | *.dbproj.schemaview 239 | *.jfm 240 | *.pfx 241 | *.publishsettings 242 | orleans.codegen.cs 243 | 244 | # Including strong name files can present a security risk 245 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 246 | #*.snk 247 | 248 | # Since there are multiple workflows, uncomment next line to ignore bower_components 249 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 250 | #bower_components/ 251 | 252 | # RIA/Silverlight projects 253 | Generated_Code/ 254 | 255 | # Backup & report files from converting an old project file 256 | # to a newer Visual Studio version. Backup files are not needed, 257 | # because we have git ;-) 258 | _UpgradeReport_Files/ 259 | Backup*/ 260 | UpgradeLog*.XML 261 | UpgradeLog*.htm 262 | ServiceFabricBackup/ 263 | *.rptproj.bak 264 | 265 | # SQL Server files 266 | *.mdf 267 | *.ldf 268 | *.ndf 269 | 270 | # Business Intelligence projects 271 | *.rdl.data 272 | *.bim.layout 273 | *.bim_*.settings 274 | *.rptproj.rsuser 275 | *- [Bb]ackup.rdl 276 | *- [Bb]ackup ([0-9]).rdl 277 | *- [Bb]ackup ([0-9][0-9]).rdl 278 | 279 | # Microsoft Fakes 280 | FakesAssemblies/ 281 | 282 | # GhostDoc plugin setting file 283 | *.GhostDoc.xml 284 | 285 | # Node.js Tools for Visual Studio 286 | .ntvs_analysis.dat 287 | node_modules/ 288 | 289 | # Visual Studio 6 build log 290 | *.plg 291 | 292 | # Visual Studio 6 workspace options file 293 | *.opt 294 | 295 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 296 | *.vbw 297 | 298 | # Visual Studio LightSwitch build output 299 | **/*.HTMLClient/GeneratedArtifacts 300 | **/*.DesktopClient/GeneratedArtifacts 301 | **/*.DesktopClient/ModelManifest.xml 302 | **/*.Server/GeneratedArtifacts 303 | **/*.Server/ModelManifest.xml 304 | _Pvt_Extensions 305 | 306 | # Paket dependency manager 307 | .paket/paket.exe 308 | paket-files/ 309 | 310 | # FAKE - F# Make 311 | .fake/ 312 | 313 | # CodeRush personal settings 314 | .cr/personal 315 | 316 | # Python Tools for Visual Studio (PTVS) 317 | __pycache__/ 318 | *.pyc 319 | 320 | # Cake - Uncomment if you are using it 321 | # tools/** 322 | # !tools/packages.config 323 | 324 | # Tabs Studio 325 | *.tss 326 | 327 | # Telerik's JustMock configuration file 328 | *.jmconfig 329 | 330 | # BizTalk build output 331 | *.btp.cs 332 | *.btm.cs 333 | *.odx.cs 334 | *.xsd.cs 335 | 336 | # OpenCover UI analysis results 337 | OpenCover/ 338 | 339 | # Azure Stream Analytics local run output 340 | ASALocalRun/ 341 | 342 | # MSBuild Binary and Structured Log 343 | *.binlog 344 | 345 | # NVidia Nsight GPU debugger configuration file 346 | *.nvuser 347 | 348 | # MFractors (Xamarin productivity tool) working folder 349 | .mfractor/ 350 | 351 | # Local History for Visual Studio 352 | .localhistory/ 353 | 354 | # BeatPulse healthcheck temp database 355 | healthchecksdb 356 | 357 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 358 | MigrationBackup/ 359 | 360 | # Ionide (cross platform F# VS Code tools) working folder 361 | .ionide/ 362 | 363 | # Fody - auto-generated XML schema 364 | FodyWeavers.xsd 365 | -------------------------------------------------------------------------------- /acrylic/WindowCompositionAttribute.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexadecimal233/Windows-Store-Downloader/8c8bffe21623e9c62578ed6f2877e2343ca8472d/acrylic/WindowCompositionAttribute.h -------------------------------------------------------------------------------- /acrylic/acrylic.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | Win32Proj 24 | {a448b8a7-e8a6-4e3f-bf2f-9c4ca904bb9e} 25 | acrylic 26 | 10.0 27 | 28 | 29 | 30 | DynamicLibrary 31 | true 32 | v142 33 | Unicode 34 | 35 | 36 | DynamicLibrary 37 | false 38 | v142 39 | true 40 | Unicode 41 | 42 | 43 | DynamicLibrary 44 | true 45 | v142 46 | Unicode 47 | 48 | 49 | DynamicLibrary 50 | false 51 | v142 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | false 78 | 79 | 80 | true 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Level3 88 | true 89 | WIN32;_DEBUG;ACRYLIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 90 | true 91 | Use 92 | pch.h 93 | 94 | 95 | Windows 96 | true 97 | false 98 | 99 | 100 | 101 | 102 | Level3 103 | true 104 | true 105 | true 106 | WIN32;NDEBUG;ACRYLIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 107 | true 108 | Use 109 | pch.h 110 | MultiThreaded 111 | 112 | 113 | Windows 114 | true 115 | true 116 | true 117 | false 118 | 119 | 120 | copy "$(SolutionDir)$(Configuration)\acrylic.dll" "$(SolutionDir)resources\acrylic.dll" 121 | 122 | 123 | 124 | 125 | Level3 126 | true 127 | _DEBUG;ACRYLIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 128 | true 129 | Use 130 | pch.h 131 | 132 | 133 | Windows 134 | true 135 | false 136 | 137 | 138 | 139 | 140 | Level3 141 | true 142 | true 143 | true 144 | NDEBUG;ACRYLIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) 145 | true 146 | Use 147 | pch.h 148 | MultiThreaded 149 | 150 | 151 | Windows 152 | true 153 | true 154 | true 155 | false 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | Create 167 | Create 168 | Create 169 | Create 170 | 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /acrylic/acrylic.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /acrylic/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : 定义 DLL 应用程序的入口点。 2 | #include "pch.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /acrylic/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 4 | // Windows 头文件 5 | #include 6 | -------------------------------------------------------------------------------- /acrylic/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: 与预编译标头对应的源文件 2 | 3 | #include "pch.h" 4 | 5 | 6 | // 当使用预编译的头时,需要使用此源文件,编译才能成功。 7 | 8 | void SetBlur(HWND hWnd,DWORD gradientColor) 9 | { 10 | HMODULE hUser = GetModuleHandle(L"user32.dll"); 11 | if (hUser) 12 | { 13 | 14 | pfnSetWindowCompositionAttribute setWindowCompositionAttribute = (pfnSetWindowCompositionAttribute)GetProcAddress(hUser, "SetWindowCompositionAttribute"); 15 | if (setWindowCompositionAttribute) 16 | { 17 | ACCENT_POLICY accent = { ACCENT_ENABLE_ACRYLICBLURBEHIND, 0, gradientColor, 0 }; 18 | WINDOWCOMPOSITIONATTRIBDATA data; 19 | data.Attrib = WCA_ACCENT_POLICY; 20 | data.pvData = &accent; 21 | data.cbData = sizeof(accent); 22 | setWindowCompositionAttribute(hWnd, &data); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /acrylic/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: 这是预编译标头文件。 2 | // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 3 | // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 4 | // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 5 | // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // 添加要在此处预编译的标头 11 | #include "framework.h" 12 | 13 | extern "C" _declspec(dllexport) void SetBlur(HWND hWnd,DWORD gradientColor=0x3FFFFFFF); 14 | 15 | #include 16 | #include"WindowCompositionAttribute.h" 17 | #endif //PCH_H 18 | -------------------------------------------------------------------------------- /app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /code/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Windows_Store_Downloader 3 | { 4 | partial class Form1 5 | { 6 | /// 7 | /// 必需的设计器变量。 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// 清理所有正在使用的资源。 13 | /// 14 | /// 如果应释放托管资源,为 true;否则为 false。 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows 窗体设计器生成的代码 25 | 26 | /// 27 | /// 设计器支持所需的方法 - 不要修改 28 | /// 使用代码编辑器修改此方法的内容。 29 | /// 30 | private void InitializeComponent() 31 | { 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 33 | this.routeText = new System.Windows.Forms.Label(); 34 | this.routeBox = new System.Windows.Forms.ComboBox(); 35 | this.typeLinkText = new System.Windows.Forms.Label(); 36 | this.typeBox = new System.Windows.Forms.ComboBox(); 37 | this.attributeText = new System.Windows.Forms.TextBox(); 38 | this.langPackText = new System.Windows.Forms.Label(); 39 | this.langText = new System.Windows.Forms.TextBox(); 40 | this.langBox = new System.Windows.Forms.ComboBox(); 41 | this.label1 = new System.Windows.Forms.Label(); 42 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 43 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 44 | this.progressText = new System.Windows.Forms.Label(); 45 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 46 | this.CloseButton = new System.Windows.Forms.Label(); 47 | this.title = new System.Windows.Forms.Label(); 48 | this.pictureBox2 = new System.Windows.Forms.PictureBox(); 49 | this.label2 = new System.Windows.Forms.Label(); 50 | this.downloadButton = new System.Windows.Forms.Label(); 51 | this.MinimizeButton = new System.Windows.Forms.Label(); 52 | this.button1 = new System.Windows.Forms.Button(); 53 | this.groupBox1.SuspendLayout(); 54 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 55 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); 56 | this.SuspendLayout(); 57 | // 58 | // routeText 59 | // 60 | this.routeText.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 61 | this.routeText.Location = new System.Drawing.Point(801, 31); 62 | this.routeText.Name = "routeText"; 63 | this.routeText.Size = new System.Drawing.Size(238, 77); 64 | this.routeText.TabIndex = 1; 65 | this.routeText.Text = "Download Route"; 66 | this.routeText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 67 | // 68 | // routeBox 69 | // 70 | this.routeBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 71 | this.routeBox.FormattingEnabled = true; 72 | this.routeBox.Items.AddRange(new object[] { 73 | "Fast", 74 | "Slow", 75 | "RP", 76 | "Retail"}); 77 | this.routeBox.Location = new System.Drawing.Point(807, 111); 78 | this.routeBox.Name = "routeBox"; 79 | this.routeBox.Size = new System.Drawing.Size(219, 32); 80 | this.routeBox.TabIndex = 2; 81 | // 82 | // typeLinkText 83 | // 84 | this.typeLinkText.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 85 | this.typeLinkText.Location = new System.Drawing.Point(19, 28); 86 | this.typeLinkText.Name = "typeLinkText"; 87 | this.typeLinkText.Size = new System.Drawing.Size(294, 80); 88 | this.typeLinkText.TabIndex = 3; 89 | this.typeLinkText.Text = "Download Link Type"; 90 | this.typeLinkText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 91 | // 92 | // typeBox 93 | // 94 | this.typeBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 95 | this.typeBox.FormattingEnabled = true; 96 | this.typeBox.Items.AddRange(new object[] { 97 | "Url(Link)", 98 | "ProductID", 99 | "PackageFamilyName", 100 | "CategoryID"}); 101 | this.typeBox.Location = new System.Drawing.Point(57, 111); 102 | this.typeBox.Name = "typeBox"; 103 | this.typeBox.Size = new System.Drawing.Size(239, 32); 104 | this.typeBox.TabIndex = 4; 105 | this.typeBox.SelectedIndexChanged += new System.EventHandler(this.RefreshText); 106 | // 107 | // attributeText 108 | // 109 | this.attributeText.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); 110 | this.attributeText.ForeColor = System.Drawing.SystemColors.WindowText; 111 | this.attributeText.Location = new System.Drawing.Point(57, 197); 112 | this.attributeText.Name = "attributeText"; 113 | this.attributeText.Size = new System.Drawing.Size(969, 29); 114 | this.attributeText.TabIndex = 5; 115 | this.attributeText.Text = "Input here..."; 116 | this.attributeText.Enter += new System.EventHandler(this.AttributeInputReady); 117 | this.attributeText.Leave += new System.EventHandler(this.AttributeInputDeselect); 118 | // 119 | // langPackText 120 | // 121 | this.langPackText.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 122 | this.langPackText.Location = new System.Drawing.Point(302, 31); 123 | this.langPackText.Name = "langPackText"; 124 | this.langPackText.Size = new System.Drawing.Size(477, 77); 125 | this.langPackText.TabIndex = 6; 126 | this.langPackText.Text = "Language(Example:zh-CN)"; 127 | this.langPackText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 128 | // 129 | // langText 130 | // 131 | this.langText.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); 132 | this.langText.Location = new System.Drawing.Point(446, 111); 133 | this.langText.Name = "langText"; 134 | this.langText.Size = new System.Drawing.Size(219, 29); 135 | this.langText.TabIndex = 7; 136 | // 137 | // langBox 138 | // 139 | this.langBox.Cursor = System.Windows.Forms.Cursors.Default; 140 | this.langBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 141 | this.langBox.FormattingEnabled = true; 142 | this.langBox.Items.AddRange(new object[] { 143 | "English", 144 | "中文(简体)"}); 145 | this.langBox.Location = new System.Drawing.Point(17, 557); 146 | this.langBox.Name = "langBox"; 147 | this.langBox.Size = new System.Drawing.Size(146, 32); 148 | this.langBox.TabIndex = 8; 149 | this.langBox.SelectedIndexChanged += new System.EventHandler(this.ChangeLanguage); 150 | // 151 | // label1 152 | // 153 | this.label1.AutoSize = true; 154 | this.label1.BackColor = System.Drawing.Color.Transparent; 155 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.142858F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 156 | this.label1.Location = new System.Drawing.Point(12, 525); 157 | this.label1.Name = "label1"; 158 | this.label1.Size = new System.Drawing.Size(157, 25); 159 | this.label1.TabIndex = 9; 160 | this.label1.Text = "Language/语言"; 161 | // 162 | // groupBox1 163 | // 164 | this.groupBox1.BackColor = System.Drawing.Color.Transparent; 165 | this.groupBox1.Controls.Add(this.langText); 166 | this.groupBox1.Controls.Add(this.langPackText); 167 | this.groupBox1.Controls.Add(this.attributeText); 168 | this.groupBox1.Controls.Add(this.typeBox); 169 | this.groupBox1.Controls.Add(this.typeLinkText); 170 | this.groupBox1.Controls.Add(this.routeBox); 171 | this.groupBox1.Controls.Add(this.routeText); 172 | this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.142858F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 173 | this.groupBox1.Location = new System.Drawing.Point(12, 68); 174 | this.groupBox1.Name = "groupBox1"; 175 | this.groupBox1.Size = new System.Drawing.Size(1062, 307); 176 | this.groupBox1.TabIndex = 10; 177 | this.groupBox1.TabStop = false; 178 | this.groupBox1.Text = "Download"; 179 | // 180 | // pictureBox1 181 | // 182 | this.pictureBox1.BackColor = System.Drawing.Color.Transparent; 183 | this.pictureBox1.BackgroundImage = global::Windows_Store_Downloader.Properties.Resources.store; 184 | this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; 185 | this.pictureBox1.Location = new System.Drawing.Point(824, 437); 186 | this.pictureBox1.Name = "pictureBox1"; 187 | this.pictureBox1.Size = new System.Drawing.Size(273, 176); 188 | this.pictureBox1.TabIndex = 8; 189 | this.pictureBox1.TabStop = false; 190 | // 191 | // progressText 192 | // 193 | this.progressText.BackColor = System.Drawing.Color.Transparent; 194 | this.progressText.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 195 | this.progressText.Location = new System.Drawing.Point(11, 378); 196 | this.progressText.Name = "progressText"; 197 | this.progressText.Size = new System.Drawing.Size(158, 74); 198 | this.progressText.TabIndex = 12; 199 | this.progressText.Text = "Query Progress"; 200 | // 201 | // progressBar1 202 | // 203 | this.progressBar1.ForeColor = System.Drawing.Color.DarkGreen; 204 | this.progressBar1.Location = new System.Drawing.Point(164, 381); 205 | this.progressBar1.Name = "progressBar1"; 206 | this.progressBar1.Size = new System.Drawing.Size(910, 38); 207 | this.progressBar1.Step = 1; 208 | this.progressBar1.TabIndex = 13; 209 | // 210 | // CloseButton 211 | // 212 | this.CloseButton.BackColor = System.Drawing.Color.Transparent; 213 | this.CloseButton.Font = new System.Drawing.Font("Webdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(2))); 214 | this.CloseButton.ForeColor = System.Drawing.Color.Ivory; 215 | this.CloseButton.Location = new System.Drawing.Point(1032, 9); 216 | this.CloseButton.Name = "CloseButton"; 217 | this.CloseButton.Size = new System.Drawing.Size(65, 44); 218 | this.CloseButton.TabIndex = 15; 219 | this.CloseButton.Text = "r"; 220 | this.CloseButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 221 | this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); 222 | this.CloseButton.MouseEnter += new System.EventHandler(this.CloseButton_MouseHover); 223 | this.CloseButton.MouseLeave += new System.EventHandler(this.CloseButton_MouseLeave); 224 | // 225 | // title 226 | // 227 | this.title.AutoSize = true; 228 | this.title.BackColor = System.Drawing.Color.Transparent; 229 | this.title.Font = new System.Drawing.Font("Consolas", 10.71429F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 230 | this.title.Location = new System.Drawing.Point(48, 15); 231 | this.title.Name = "title"; 232 | this.title.Size = new System.Drawing.Size(378, 31); 233 | this.title.TabIndex = 16; 234 | this.title.Text = "Microsoft Store Downloader"; 235 | // 236 | // pictureBox2 237 | // 238 | this.pictureBox2.BackColor = System.Drawing.Color.Transparent; 239 | this.pictureBox2.BackgroundImage = global::Windows_Store_Downloader.Properties.Resources.icon; 240 | this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 241 | this.pictureBox2.Location = new System.Drawing.Point(6, 10); 242 | this.pictureBox2.Name = "pictureBox2"; 243 | this.pictureBox2.Size = new System.Drawing.Size(36, 36); 244 | this.pictureBox2.TabIndex = 17; 245 | this.pictureBox2.TabStop = false; 246 | // 247 | // label2 248 | // 249 | this.label2.BackColor = System.Drawing.Color.Transparent; 250 | this.label2.Font = new System.Drawing.Font("Microsoft YaHei UI", 11.14286F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 251 | this.label2.ForeColor = System.Drawing.SystemColors.ControlDarkDark; 252 | this.label2.Location = new System.Drawing.Point(-12, -14); 253 | this.label2.Name = "label2"; 254 | this.label2.Size = new System.Drawing.Size(1148, 79); 255 | this.label2.TabIndex = 18; 256 | this.label2.Text = "\r\n_______________________________________________________________________________" + 257 | "__________________"; 258 | this.label2.TextAlign = System.Drawing.ContentAlignment.BottomLeft; 259 | this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown); 260 | // 261 | // downloadButton 262 | // 263 | this.downloadButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(81)))), ((int)(((byte)(181))))); 264 | this.downloadButton.Cursor = System.Windows.Forms.Cursors.Hand; 265 | this.downloadButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 266 | this.downloadButton.Font = new System.Drawing.Font("Comic Sans MS", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 267 | this.downloadButton.ForeColor = System.Drawing.SystemColors.ButtonHighlight; 268 | this.downloadButton.Location = new System.Drawing.Point(381, 485); 269 | this.downloadButton.Name = "downloadButton"; 270 | this.downloadButton.Size = new System.Drawing.Size(343, 98); 271 | this.downloadButton.TabIndex = 19; 272 | this.downloadButton.Text = "Download"; 273 | this.downloadButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 274 | this.downloadButton.Click += new System.EventHandler(this.DownloadButton_Click); 275 | this.downloadButton.MouseEnter += new System.EventHandler(this.downloadButton_MouseEnter); 276 | this.downloadButton.MouseLeave += new System.EventHandler(this.downloadButton_MouseLeave); 277 | // 278 | // MinimizeButton 279 | // 280 | this.MinimizeButton.BackColor = System.Drawing.Color.Transparent; 281 | this.MinimizeButton.Font = new System.Drawing.Font("Webdings", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(2))); 282 | this.MinimizeButton.ForeColor = System.Drawing.Color.Ivory; 283 | this.MinimizeButton.Location = new System.Drawing.Point(973, 9); 284 | this.MinimizeButton.Name = "MinimizeButton"; 285 | this.MinimizeButton.Size = new System.Drawing.Size(65, 44); 286 | this.MinimizeButton.TabIndex = 20; 287 | this.MinimizeButton.Text = "0"; 288 | this.MinimizeButton.TextAlign = System.Drawing.ContentAlignment.TopCenter; 289 | this.MinimizeButton.Click += new System.EventHandler(this.MinimizeButton_Click); 290 | this.MinimizeButton.MouseEnter += new System.EventHandler(this.label3_MouseEnter); 291 | this.MinimizeButton.MouseLeave += new System.EventHandler(this.label3_MouseLeave); 292 | // 293 | // button1 294 | // 295 | this.button1.BackColor = System.Drawing.Color.Transparent; 296 | this.button1.Font = new System.Drawing.Font("Calibri Light", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 297 | this.button1.Location = new System.Drawing.Point(184, 558); 298 | this.button1.Name = "button1"; 299 | this.button1.Size = new System.Drawing.Size(124, 32); 300 | this.button1.TabIndex = 21; 301 | this.button1.Text = "Disable blur effect"; 302 | this.button1.UseVisualStyleBackColor = false; 303 | this.button1.Click += new System.EventHandler(this.button1_Click); 304 | // 305 | // Form1 306 | // 307 | this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); 308 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 309 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(241)))), ((int)(((byte)(240))))); 310 | this.ClientSize = new System.Drawing.Size(1109, 625); 311 | this.Controls.Add(this.button1); 312 | this.Controls.Add(this.MinimizeButton); 313 | this.Controls.Add(this.downloadButton); 314 | this.Controls.Add(this.pictureBox2); 315 | this.Controls.Add(this.title); 316 | this.Controls.Add(this.CloseButton); 317 | this.Controls.Add(this.progressBar1); 318 | this.Controls.Add(this.pictureBox1); 319 | this.Controls.Add(this.progressText); 320 | this.Controls.Add(this.groupBox1); 321 | this.Controls.Add(this.label1); 322 | this.Controls.Add(this.langBox); 323 | this.Controls.Add(this.label2); 324 | this.Cursor = System.Windows.Forms.Cursors.Default; 325 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); 326 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 327 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 328 | this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); 329 | this.MaximizeBox = false; 330 | this.Name = "Form1"; 331 | this.Text = "Microsoft Store Downloader"; 332 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed); 333 | this.Load += new System.EventHandler(this.Form1_Load); 334 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint); 335 | this.groupBox1.ResumeLayout(false); 336 | this.groupBox1.PerformLayout(); 337 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 338 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); 339 | this.ResumeLayout(false); 340 | this.PerformLayout(); 341 | 342 | } 343 | 344 | #endregion 345 | private System.Windows.Forms.Label routeText; 346 | private System.Windows.Forms.Label typeLinkText; 347 | private System.Windows.Forms.Label langPackText; 348 | public System.Windows.Forms.ComboBox routeBox; 349 | public System.Windows.Forms.ComboBox typeBox; 350 | public System.Windows.Forms.TextBox attributeText; 351 | public System.Windows.Forms.TextBox langText; 352 | private System.Windows.Forms.Label label1; 353 | public System.Windows.Forms.ComboBox langBox; 354 | private System.Windows.Forms.GroupBox groupBox1; 355 | private System.Windows.Forms.Label progressText; 356 | private System.Windows.Forms.PictureBox pictureBox1; 357 | private System.Windows.Forms.ProgressBar progressBar1; 358 | private System.Windows.Forms.Label CloseButton; 359 | private System.Windows.Forms.Label title; 360 | private System.Windows.Forms.PictureBox pictureBox2; 361 | private System.Windows.Forms.Label label2; 362 | public System.Windows.Forms.Label downloadButton; 363 | private System.Windows.Forms.Label MinimizeButton; 364 | private System.Windows.Forms.Button button1; 365 | } 366 | } 367 | 368 | -------------------------------------------------------------------------------- /code/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Drawing; 4 | using System.Drawing.Drawing2D; 5 | using System.IO; 6 | using System.Runtime.InteropServices; 7 | using System.Threading; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.Management; 11 | 12 | namespace Windows_Store_Downloader 13 | { 14 | public partial class Form1 : Form 15 | { 16 | 17 | 18 | public static string OSVersion = get_OSVersion(); 19 | 20 | public Form1() 21 | { 22 | InitializeComponent(); 23 | 24 | } 25 | 26 | private bool textBoxHasText = false; 27 | Form2 Form2 = new Form2(); 28 | 29 | WriteToTemp WriteToTemp = new WriteToTemp(); 30 | public static string postContent; 31 | private void AttributeInputReady(object sender, EventArgs e) 32 | { 33 | HasText(); 34 | if (textBoxHasText == false) 35 | { 36 | attributeText.Text = ""; 37 | attributeText.ForeColor = Color.Black; 38 | } 39 | else 40 | { 41 | attributeText.ForeColor = Color.Black; 42 | } 43 | 44 | 45 | }//灰色文本 46 | private void HasText() 47 | { 48 | 49 | if (attributeText.Text == "" || attributeText.Text == Language.lang_attributes[0] || 50 | attributeText.Text == Language.lang_input || attributeText.Text == Language.lang_attributes[1] || 51 | attributeText.Text == Language.lang_attributes[2] || attributeText.Text == Language.lang_attributes[3]) 52 | { 53 | textBoxHasText = false; 54 | } 55 | else 56 | { 57 | textBoxHasText = true; 58 | } 59 | 60 | 61 | }//编辑框是否有文字 62 | private void AttributeInputDeselect(object sender, EventArgs e) 63 | { 64 | HasText(); 65 | if (textBoxHasText == false) 66 | { 67 | attributeText.Text = SetAttributeText(); 68 | attributeText.ForeColor = Color.Gray; 69 | textBoxHasText = false; 70 | } 71 | else 72 | { 73 | textBoxHasText = true; 74 | } 75 | }//灰色文本 76 | private string SetAttributeText() { 77 | return Language.lang_attributes[typeBox.SelectedIndex]; 78 | }//获取当前项的本地化文本 79 | 80 | 81 | private void DownloadButton_Click(object sender, EventArgs e) 82 | { 83 | progressBar1.Value = 0; 84 | this.Enabled = false;//禁止重复点击 85 | Form2.complete = false; 86 | HasText(); 87 | if (typeBox.SelectedIndex == -1 || routeBox.SelectedIndex == -1 || textBoxHasText == false) 88 | { 89 | 90 | MessageBox.Show(Language.lang_baddown,Language.lang_baddowninfo,MessageBoxButtons.OK,MessageBoxIcon.Error); 91 | this.Enabled = true; 92 | return; 93 | }//参数完整 94 | if (langText.Text == "") 95 | { 96 | langText.Text = Thread.CurrentThread.CurrentCulture.Name; 97 | }//提交语言 98 | postContent = "type=" + Http_Post.type[typeBox.SelectedIndex] + "&url=" + attributeText.Text + "&ring=" + 99 | Http_Post.ring[routeBox.SelectedIndex] + "&lang=" + langText.Text; 100 | 101 | 102 | Thread post = new Thread(Form2.Browse); 103 | post.IsBackground = true; 104 | post.SetApartmentState(ApartmentState.STA); 105 | post.Start(); //POST线程 106 | 107 | 108 | while (Form2.complete == false) 109 | { 110 | if (this.progressBar1.Value <= 99) 111 | { 112 | Random random = new Random(new Guid().GetHashCode()); 113 | Thread.Sleep(random.Next(67, 101)); 114 | this.progressBar1.PerformStep(); 115 | 116 | } 117 | 118 | }//伪装进度条 119 | this.progressBar1.Value = 100; 120 | this.Enabled = true; 121 | 122 | 123 | 124 | if (Form2.returnid == -1) 125 | { 126 | MessageBox.Show(Language.lang_interr, Language.lang_interr, MessageBoxButtons.OK, MessageBoxIcon.Error); 127 | return; 128 | }//意外 129 | if (Form2.returnid == 2) 130 | { 131 | 132 | Form2.ShowDialog(); 133 | }//空响应 134 | if (Form2.returnid == 1)//浏览 135 | { 136 | try 137 | { 138 | new Form2().ShowDialog(); 139 | } 140 | catch (Exception ex) 141 | { 142 | Language.InternalErrMsgBox(ex); 143 | } 144 | }//OK 145 | 146 | 147 | 148 | }//下载&浏览 149 | 150 | private void ChangeLanguage(object sender, EventArgs e)//更改语言 151 | { 152 | if (langBox.Text == "English") 153 | { 154 | English_Lang(); 155 | } else if (langBox.Text == "中文(简体)") { 156 | Chinese_Lang(); 157 | } 158 | } 159 | private void Better() 160 | { 161 | this.DoubleBuffered = true;//设置本窗体 162 | SetStyle(ControlStyles.UserPaint, true); 163 | SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. 164 | SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲 165 | //SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); 166 | 167 | //UpdateStyles(); 168 | } 169 | private void Form1_Load(object sender, EventArgs e) 170 | { 171 | Better(); 172 | if (File.Exists(WriteToTemp.tmpPath + "\\..\\forcewin7") ) 173 | { 174 | forceWin7 = true; 175 | } 176 | 177 | SetWindowRegion(); 178 | RefreshForm(); 179 | WriteToTemp.ReadFrom(); 180 | if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "zh-CN") { 181 | Chinese_Lang(); 182 | langBox.SelectedIndex = 1; 183 | } else { 184 | English_Lang(); 185 | langBox.SelectedIndex = 0; 186 | } 187 | 188 | if (IsWinLess10()) 189 | { 190 | CloseButton.ForeColor = Color.DodgerBlue; 191 | User32.AnimateWindow(this.Handle, 200, User32.AW_BLEND | User32.AW_ACTIVE | User32.AW_VER_NEGATIVE); 192 | RefreshForm(); 193 | this.Opacity = 0.90; 194 | }// Win7淡入淡出 195 | else 196 | { 197 | this.TransparencyKey = Color.FromArgb(0xf1f1f0);//R不等于B 198 | RefreshForm(); 199 | Acrylic.SetBlur(this.Handle, 0x3FFFFFFF);//亚克力效果 200 | }//WIN10亚克力 201 | 202 | } 203 | 204 | private void Chinese_Lang() 205 | { 206 | Language.Chinese_Lang(); 207 | SetLang(); 208 | } 209 | private void English_Lang() 210 | { 211 | Language.English_Lang(); 212 | SetLang(); 213 | } 214 | private void SetLang() { 215 | typeLinkText.Text = Language.lang_typelink; 216 | langPackText.Text = Language.lang_language; 217 | routeText.Text = Language.lang_route; 218 | downloadButton.Text = Language.lang_downbutton; 219 | this.Text = Language.lang_title; 220 | title.Text = Language.lang_title; 221 | groupBox1.Text = Language.lang_downbutton; 222 | attributeText.Text = Language.lang_input; 223 | progressText.Text = Language.lang_prog; 224 | button1.Text = Language.lang_forcewin7; 225 | }//设置语言文本 226 | 227 | private void RefreshText(object sender, EventArgs e)//刷新文本 228 | { 229 | HasText(); 230 | if (textBoxHasText == false) 231 | { 232 | attributeText.Text = SetAttributeText(); 233 | attributeText.ForeColor = Color.Gray; 234 | textBoxHasText = false; 235 | } 236 | else 237 | { 238 | textBoxHasText = true; 239 | } 240 | } 241 | 242 | private void Form1_FormClosed(object sender, FormClosedEventArgs e)//淡出 243 | { 244 | 245 | if (IsWinLess10()) 246 | { 247 | this.Opacity = 1; 248 | User32.AnimateWindow(this.Handle, 300, User32.AW_BLEND | User32.AW_HIDE); 249 | } 250 | 251 | } 252 | private void RefreshForm()//初始化窗口 253 | { 254 | if (forceWin7) 255 | { 256 | button1.Visible = false; 257 | 258 | } 259 | if (!IsWinLess10()) 260 | { 261 | if (File.Exists("acrylic.dll") == false) 262 | { 263 | MessageBox.Show("acrylic.dll not found.Please put the dll to current directory." + 264 | "\n无法找到acrylic.dll。请把它放到当前目录。"); 265 | Environment.Exit(0); 266 | } 267 | }//容错dll 268 | Bitmap a = Properties.Resources.store; 269 | a.MakeTransparent(Color.FromArgb(0, 255, 0));//透明图片 270 | pictureBox1.BackgroundImage = a; 271 | if (System.Diagnostics.Debugger.IsAttached != true) 272 | { 273 | langText.Visible = false; 274 | langPackText.Visible = false; 275 | }//调试内容 276 | typeBox.SelectedIndex = 0; 277 | routeBox.SelectedIndex = 2; 278 | //初始化选择框 279 | 280 | attributeText.Text = SetAttributeText(); 281 | attributeText.ForeColor = Color.Gray; 282 | textBoxHasText = false; 283 | //初始化文字 284 | 285 | } 286 | 287 | private Rectangle rect; 288 | private bool firstPaint = true; 289 | private void Form1_Paint(object sender, PaintEventArgs e) 290 | { 291 | //防止画窗口出错 292 | if (firstPaint == true) 293 | { 294 | firstPaint = false; 295 | rect = this.ClientRectangle; 296 | } 297 | 298 | if (IsWinLess10()) 299 | { 300 | 301 | 302 | Graphics g = e.Graphics; //实例化Graphics 对象g 303 | Color FColor = Color.FromArgb(0xE8, 0xF1, 0xE7); //颜色1 304 | Color TColor = Color.FromArgb(0xCA, 0xC7, 0xC7); //颜色2 305 | Brush b = new LinearGradientBrush(rect, FColor, TColor, LinearGradientMode.BackwardDiagonal); //实例化刷子,第一个参数指示上色区域,第二个和第三个参数分别渐变颜色的开始和结束,第四个参数表示颜色的方向。 306 | g.FillRectangle(b, this.ClientRectangle); //进行上色 307 | 308 | } //WIN7渐变背景 309 | 310 | 311 | } 312 | 313 | 314 | private bool forceWin7 = false;//强制win7透明 315 | public static string get_OSVersion() 316 | { 317 | try 318 | { 319 | 320 | ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * From Win32_OperatingSystem"); 321 | string version = null; 322 | foreach (ManagementObject mo in mos.Get()) 323 | { 324 | version = mo["Version"].ToString().Trim(); 325 | break; 326 | } 327 | if (null == version) 328 | return string.Empty; 329 | 330 | return version; 331 | } 332 | catch (Exception) 333 | { 334 | return string.Empty; 335 | } 336 | } 337 | private bool IsWinLess10() 338 | { 339 | if (forceWin7) 340 | { 341 | return true; 342 | } 343 | 344 | 345 | if ((Environment.OSVersion.Version.Major <= 6 && Environment.OSVersion.Version.Minor < 2 ) || 346 | OSVersion.IndexOf("10.0.") == -1) 347 | { 348 | return true; 349 | } else 350 | { 351 | return false; 352 | } 353 | 354 | } 355 | Thread thread1; 356 | Thread thread2; 357 | Thread thread3; 358 | Thread thread4; 359 | private void CloseButton_MouseLeave(object sender, EventArgs e) 360 | { 361 | thread2 = new Thread(GoIntoB); 362 | thread2.IsBackground = true; 363 | thread2.Start(); 364 | } 365 | 366 | private void CloseButton_Click(object sender, EventArgs e) 367 | { 368 | this.Close(); 369 | } 370 | 371 | private void CloseButton_MouseHover(object sender, EventArgs e) 372 | { 373 | thread1 = new Thread(GoIntoA); 374 | thread1.IsBackground = true; 375 | try { thread1.Start(); } catch { } 376 | 377 | 378 | } 379 | private void GoIntoA() 380 | { 381 | for (int i = 0; i < 228; i += 4) 382 | { 383 | Thread.Sleep(1); 384 | this.CloseButton.BackColor = Color.FromArgb(i, i, 5, 0); 385 | } 386 | 387 | } 388 | private void GoIntoB() 389 | { 390 | thread1.Abort(); 391 | for (int i = this.CloseButton.BackColor.A; i > 0; i -= 4) 392 | { 393 | Thread.Sleep(1); 394 | this.CloseButton.BackColor = Color.FromArgb(i, i, 0, 0); 395 | } 396 | this.CloseButton.BackColor = Color.FromArgb(0, 0, 0, 0); 397 | } 398 | private void GoIntoC() 399 | { 400 | for (int i = 0; i < 231; i += 3) 401 | { 402 | Thread.Sleep(1); 403 | this.MinimizeButton.BackColor = Color.FromArgb(i, i+3, i+2, i); 404 | } 405 | 406 | } 407 | private void GoIntoD() 408 | { 409 | thread3.Abort(); 410 | for (int i = this.MinimizeButton.BackColor.B; i > 0; i -= 3) 411 | { 412 | Thread.Sleep(1); 413 | this.MinimizeButton.BackColor = Color.FromArgb(i, i + 3, i + 2, i); 414 | } 415 | this.MinimizeButton.BackColor = Color.FromArgb(0, 0, 0, 0); 416 | } 417 | 418 | public void SetWindowRegion() 419 | { 420 | GraphicsPath FormPath1, FormPath2; 421 | 422 | FormPath1 = new GraphicsPath(); 423 | FormPath2 = new GraphicsPath(); 424 | Rectangle rect1 = new Rectangle(0, 0, this.Width, this.Height); 425 | FormPath1 = GetRoundedRectPath(rect1, 50); 426 | Rectangle rect2 = new Rectangle(0, 0, downloadButton.Width, downloadButton.Height); 427 | FormPath2 = GetRoundedRectPath(rect2, 30); 428 | this.Region = new Region(FormPath1); 429 | downloadButton.Region = new Region(FormPath2); 430 | 431 | } 432 | 433 | /// 434 | /// 435 | /// 436 | /// 窗体大小 437 | /// 圆角大小 438 | /// 439 | private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius) 440 | { 441 | int diameter =radius; 442 | Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter)); 443 | GraphicsPath path = new GraphicsPath(); 444 | 445 | path.AddArc(arcRect, 180, 90);//左上角 446 | 447 | arcRect.X = rect.Right - diameter;//右上角 448 | path.AddArc(arcRect, 270, 90); 449 | 450 | arcRect.Y = rect.Bottom - diameter;// 右下角 451 | path.AddArc(arcRect, 0, 90); 452 | 453 | arcRect.X = rect.Left;// 左下角 454 | path.AddArc(arcRect, 90, 90); 455 | path.CloseFigure(); 456 | return path; 457 | } 458 | 459 | public static void DragWindow(IntPtr hwnd) 460 | { 461 | WinAPI.ReleaseCapture(); 462 | WinAPI.SendMessage(hwnd, Constants.WM_SYSCOMMAND, (IntPtr)(Constants.SC_MOVE + Constants.HTCAPTION), IntPtr.Zero); 463 | } 464 | 465 | private void label2_MouseDown(object sender, MouseEventArgs e) 466 | { 467 | if (e.Button == MouseButtons.Right) 468 | { 469 | 470 | } else 471 | { 472 | DragWindow(this.Handle); 473 | } 474 | 475 | }//拖拽窗口 476 | 477 | private void downloadButton_MouseEnter(object sender, EventArgs e) 478 | { 479 | downloadButton.BackColor = Color.FromArgb(0x4a,0x5f,0xbd); 480 | } 481 | 482 | private void downloadButton_MouseLeave(object sender, EventArgs e) 483 | { 484 | downloadButton.BackColor = Color.FromArgb(0x3f,0x51,0xb5); 485 | } 486 | 487 | private void label3_MouseEnter(object sender, EventArgs e) 488 | { 489 | thread3 = new Thread(GoIntoC); 490 | thread3.IsBackground = true; 491 | try { thread3.Start(); } catch { } 492 | 493 | } 494 | 495 | private void label3_MouseLeave(object sender, EventArgs e) { 496 | thread4 = new Thread(GoIntoD); 497 | thread4.IsBackground = true; 498 | thread4.Start(); 499 | 500 | } 501 | 502 | private void MinimizeButton_Click(object sender, EventArgs e) 503 | { 504 | 505 | this.WindowState = FormWindowState.Minimized; 506 | } 507 | 508 | private void button1_Click(object sender, EventArgs e) 509 | { 510 | if (MessageBox.Show(Language.lang_forcewin7, Language.lang_title, MessageBoxButtons.OKCancel, 511 | MessageBoxIcon.Question) != DialogResult.OK) 512 | return; 513 | button1.Enabled = false; 514 | try 515 | { 516 | File.Create(WriteToTemp.tmpPath + "\\..\\forcewin7"); 517 | } catch { } 518 | 519 | } 520 | } 521 | class User32 522 | { 523 | /// 524 | /// 窗体动画函数 525 | /// 526 | /// 指定产生动画的窗口的句柄 527 | /// 指定动画持续的时间 528 | /// 指定动画类型,可以是一个或多个标志的组合。 529 | /// 530 | [DllImport("user32")] 531 | public static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); 532 | [DllImport("user32")] 533 | public static extern IntPtr FindWindow(string a, string b); 534 | [DllImport("user32")] 535 | public static extern IntPtr PostMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 536 | 537 | //下面是可用的常量,根据不同的动画效果声明自己需要的 538 | public const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 539 | public const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 540 | public const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 541 | public const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志 542 | public const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展 543 | public const int AW_HIDE = 0x10000;//隐藏窗口 544 | public const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志 545 | public const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略 546 | public const int AW_BLEND = 0x80000;//使用淡入淡出效果 547 | }//淡入淡出 548 | class Acrylic 549 | { 550 | 551 | [DllImport("acrylic", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] 552 | public static extern void SetBlur(IntPtr hWnd, int gradientColor); 553 | } 554 | } 555 | -------------------------------------------------------------------------------- /code/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAEAMDAAAAAAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAA 124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 136 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 138 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 140 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 141 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 142 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 143 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 144 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 145 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 147 | ACMAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAA 148 | ACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAA 149 | ACoAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAACAAAAfQAAAPQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 151 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 152 | AP8AAAD/AAAA/wAAAP8AAAC8AAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 153 | AAAAAAAAAAAAAAAAAAAAAAAwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 154 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 155 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 157 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 158 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAmwAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAA 160 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 161 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAA 162 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAA 163 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 164 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 165 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 166 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAuAAAAFIAAABSAAAAUgAA 167 | AFIAAABSAAAAUgAAAOoAAACDAAAAUgAAAFIAAABSAAAAUgAAAFIAAAB8AAAA/wAAAP8AAAD/AAAA/wAA 168 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 169 | AAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAjwAA 170 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAA/wAA 171 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 172 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 173 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAABJAAAAAAAAAAAAAAAAAAAAAAAA 174 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAA 175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAA 176 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAABJAAAAAAAA 177 | AAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAA 178 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAA 179 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 180 | AOAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 181 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 182 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAkQAAAAAAAAAAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAN8AAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1AAAA/wAAAP8AAAD/AAAA/wAA 184 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 185 | AAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqwAA 186 | ADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAAOYAAABtAAAAMgAAADIAAAAyAAAAMgAAADIAAABkAAAA/wAA 187 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 189 | AP8AAAD/AAAA9gAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAPwAAADvAAAA6AAAAOgAAADoAAAA6AAA 190 | AOgAAADuAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAA 192 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAnAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAOIAAABTAAAADgAA 193 | AA4AAAAOAAAADgAAAA4AAABIAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAA 194 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAA 195 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 196 | AN8AAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 197 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 198 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAOAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAA 200 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 201 | AAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAA 202 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAA 203 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 204 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 205 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAABJAAAAAAAAAAAAAAAAAAAAAAAA 206 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAA 207 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAA 208 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN0AAAA6AAAAAAAA 209 | AAAAAAAAAAAAAAAAAAAAAAAuAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAA 210 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAA 211 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAygAAAH8AAAB/AAAAfwAAAH8AAAB/AAAAfwAA 212 | AO8AAACjAAAAfwAAAH8AAAB/AAAAfwAAAH8AAACeAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 213 | AP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 214 | AAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 215 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 216 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 217 | AAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 218 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 219 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 220 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 221 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 222 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAA 223 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAA/wAAAP8AAAD/AAAA/wAA 224 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 225 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAmwAA 226 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAA5wAA 227 | AOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAPwAAAD2AAAA6gAAAP8AAADwAAAA5wAA 228 | AOcAAADnAAAA5wAAAOcAAADnAAAA7gAAAP8AAADrAAAA9AAAAPsAAADnAAAA5wAAAOcAAADnAAAA5wAA 229 | AOcAAADnAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 230 | AAAAAAADAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAOQAAAClAAAAKgAA 231 | AP8AAABqAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAAVwAAAP8AAAA6AAAAjQAAANgAAAAPAAAACwAA 232 | AAsAAAALAAAACwAAAAsAAAALAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 233 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 234 | AOUAAACdAAAAGAAAAP8AAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAP8AAAAuAAAAiQAA 235 | ANQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 236 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 237 | AAAAAAAAAAAAAAAAANwAAACuAAAABQAAAOYAAAC2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAA 238 | AP8AAAAoAAAArAAAAK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 239 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 240 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK8AAADkAAAAAAAAAIMAAAD/AAAARAAAAAAAAAAAAAAAAAAA 241 | AAAAAAAAAAAAlgAAAPUAAAAjAAAAwwAAAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 242 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 243 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAAD/AAAAWgAAAAIAAADNAAAA+QAA 244 | AEsAAAAAAAAAAAAAAAAAAAAfAAAA8wAAAK0AAABBAAAAlwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 245 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 246 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAADPAAAA9gAA 247 | ADIAAAANAAAAnAAAAOUAAACbAAAATQAAAE8AAADEAAAA/wAAAEIAAABLAAAAFgAAAAAAAAAAAAAAAAAA 248 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 249 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 250 | AAAAAAApAAAA4AAAAPsAAAB6AAAAJQAAAC8AAABtAAAAqQAAAPkAAAD/AAAAaQAAAAAAAAACAAAAAAAA 251 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 252 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 253 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAALAAAAD/AAAA+wAAAOwAAADrAAAA/wAAANYAAABXAAAAAAAA 254 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 255 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 256 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAdgAAAJYAAACIAAAATQAA 257 | AA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 258 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 259 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 260 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 261 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 262 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 263 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 264 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 265 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 266 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 267 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 268 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 269 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 271 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 272 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 273 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 274 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 275 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 276 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 277 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 278 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 279 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 280 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 281 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 282 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 283 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 284 | AAA= 285 | 286 | 287 | -------------------------------------------------------------------------------- /code/Form2.Designer.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Windows_Store_Downloader 3 | { 4 | partial class Form2 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2)); 33 | this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); 34 | this.webBrowser1 = new System.Windows.Forms.WebBrowser(); 35 | this.SuspendLayout(); 36 | // 37 | // webBrowser1 38 | // 39 | this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; 40 | this.webBrowser1.IsWebBrowserContextMenuEnabled = false; 41 | this.webBrowser1.Location = new System.Drawing.Point(0, 0); 42 | this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 23); 43 | this.webBrowser1.Name = "webBrowser1"; 44 | this.webBrowser1.ScriptErrorsSuppressed = true; 45 | this.webBrowser1.Size = new System.Drawing.Size(1256, 750); 46 | this.webBrowser1.TabIndex = 0; 47 | this.webBrowser1.Url = new System.Uri("", System.UriKind.Relative); 48 | // 49 | // Form2 50 | // 51 | this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); 52 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 53 | this.ClientSize = new System.Drawing.Size(1256, 750); 54 | this.Controls.Add(this.webBrowser1); 55 | this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); 56 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 57 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 58 | this.MaximizeBox = false; 59 | this.MinimizeBox = false; 60 | this.Name = "Form2"; 61 | this.Text = "Download"; 62 | this.Load += new System.EventHandler(this.Form2_Load); 63 | this.ResumeLayout(false); 64 | 65 | } 66 | 67 | #endregion 68 | private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; 69 | public System.Windows.Forms.WebBrowser webBrowser1; 70 | } 71 | } -------------------------------------------------------------------------------- /code/Form2.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Diagnostics; 7 | using System.Drawing; 8 | using System.IO; 9 | using System.Text; 10 | using System.Threading; 11 | using System.Windows.Forms; 12 | 13 | namespace Windows_Store_Downloader 14 | { 15 | public partial class Form2 : Form 16 | { 17 | 18 | public Form2() 19 | { 20 | InitializeComponent(); 21 | } 22 | public static string result; //post返回的表格 23 | public static int returnid; 24 | /// 25 | /// Returnid: 26 | /// -1:意外 27 | /// 1:完成 28 | /// 2:空响应 29 | /// 30 | public static bool complete = false; 31 | Http_Post Http_Post = new Http_Post(); 32 | public void Browse() 33 | { 34 | zh_CN zh_CN = new zh_CN(); 35 | global global = new global(); 36 | WriteToTemp WriteToTemp = new WriteToTemp(); 37 | if (File.Exists(WriteToTemp.tmpPath + @"\" + zh_CN.lang_tablehtm)) 38 | { 39 | File.Delete(WriteToTemp.tmpPath + @"\" + zh_CN.lang_tablehtm); 40 | } 41 | else if (File.Exists(WriteToTemp.tmpPath + @"\" + global.lang_tablehtm)) 42 | { 43 | File.Delete(WriteToTemp.tmpPath + @"\" + global.lang_tablehtm); 44 | }//去除文件缓存 45 | 46 | complete = false; 47 | result = ""; 48 | string content = Form1.postContent; 49 | result = Http_Post.StartPostData(content); //POST 50 | if (result == "") 51 | { 52 | returnid = -1; 53 | complete = true; 54 | return; 55 | }//意外-1 56 | Thread postlog = new Thread(WriteToTemp.PostLog); 57 | postlog.Start();//记录日志 58 | if (result.IndexOf("The server returned an empty list") != -1) 59 | { 60 | complete = true; 61 | returnid = 2; 62 | return; 63 | }//空响应0 64 | string result2 = RemoveUselessContent(result);//格式化 65 | if (result2 == "") { 66 | returnid = -1; 67 | complete = true; 68 | return; 69 | } // 处理错误-1 70 | string result3 = Mdui(result2); 71 | Debug.WriteLine(result3); 72 | string result4; 73 | if (Language.langUsing == "global") 74 | { 75 | result4 = Properties.Resources.table_1 + "\n" + result3 + "\n" + Properties.Resources.table_2; 76 | } else { 77 | result4 = (Properties.Resources.table_1_cn + "\n" + result3 + "\n" + Properties.Resources.table_2_cn).Replace("target=\"_blank\"", ""); 78 | } //language 79 | 80 | 81 | File.WriteAllText(WriteToTemp.tmpPath + @"\" + Language.lang_tablehtm, result4);//写出合并后的文本 82 | returnid = 1; //成功 83 | complete = true; 84 | return; 85 | }//POST和格式化等 86 | private string RemoveUselessContent(string old)//格式化 87 | { 88 | try 89 | { 90 | int starta = old.IndexOf(""); 91 | int startb = old.IndexOf(" 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /resource/table/table-1-cn.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | 下载 19 | 20 | 21 |
22 |
23 | 链接已生成! 24 |
25 | 26 | search 27 | 28 | 30 | 36 | 37 | 38 |
39 |
40 |
链接顺利从微软的服务器上获取。
41 |
42 |
43 |
44 | 45 | -------------------------------------------------------------------------------- /resource/table/table-1.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | Download 19 | 20 | 21 |
22 |
23 | Download link generated! 24 |
25 | 26 | search 27 | 28 | 30 | 36 | 37 | 38 |
39 |
40 |
The links were successfully received 41 | from the Microsoft Store server.
42 |
43 |
44 |
45 | 46 | -------------------------------------------------------------------------------- /resource/table/table-2-cn.txt: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 8 |
9 | 10 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resource/table/table-2.txt: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 8 |
9 | 10 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/acrylic.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexadecimal233/Windows-Store-Downloader/8c8bffe21623e9c62578ed6f2877e2343ca8472d/resources/acrylic.dll -------------------------------------------------------------------------------- /resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexadecimal233/Windows-Store-Downloader/8c8bffe21623e9c62578ed6f2877e2343ca8472d/resources/icon.ico -------------------------------------------------------------------------------- /resources/store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hexadecimal233/Windows-Store-Downloader/8c8bffe21623e9c62578ed6f2877e2343ca8472d/resources/store.png --------------------------------------------------------------------------------