├── Website ├── favicon.ico ├── images │ ├── flags.png │ ├── preview.gif │ └── preview.mp4 ├── locale │ └── ru │ │ └── LC_MESSAGES │ │ ├── messages.mo │ │ └── messages.po ├── fileInfo.php ├── index.php ├── main.css └── normalize.css ├── WinThumbsPreloader ├── ConsoleWTP │ ├── obj │ │ ├── Debug │ │ │ ├── ConsoleWTP.csproj.CoreCompileInputs.cache │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ ├── ConsoleWTP.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ └── ConsoleWTP.csproj.FileListAbsolute.txt │ │ ├── Release │ │ │ ├── ConsoleWTP.csproj.CoreCompileInputs.cache │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ ├── ConsoleWTP.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ └── ConsoleWTP.csproj.FileListAbsolute.txt │ │ └── x64 │ │ │ ├── Debug │ │ │ ├── ConsoleWTP.csproj.CoreCompileInputs.cache │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ ├── ConsoleWTP.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ └── ConsoleWTP.csproj.FileListAbsolute.txt │ │ │ └── Release │ │ │ ├── ConsoleWTP.csproj.CoreCompileInputs.cache │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ └── ConsoleWTP.csproj.FileListAbsolute.txt │ ├── bin │ │ ├── Debug │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ └── ConsoleWTP.exe.config │ │ ├── Release │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ └── ConsoleWTP.exe.config │ │ └── x64 │ │ │ ├── Debug │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ └── ConsoleWTP.exe.config │ │ │ └── Release │ │ │ ├── ConsoleWTP.exe │ │ │ ├── ConsoleWTP.pdb │ │ │ └── ConsoleWTP.exe.config │ ├── App.config │ ├── DirectoryScanner.cs │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── ConsoleWTP.csproj │ └── ThumbnailPreloader.cs ├── WinThumbsPreloader │ ├── obj │ │ ├── Debug │ │ │ ├── WinThumbsPreloader.csproj.CoreCompileInputs.cache │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ ├── WinThumbsPreloader.AboutForm.resources │ │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ │ ├── WinThumbsPreloader.AboutForm.ru.resources │ │ │ ├── TempPE │ │ │ │ └── Properties.Resources.Designer.cs.dll │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── WinThumbsPreloader.Properties.Resources.resources │ │ │ ├── WinThumbsPreloader.csproj.GenerateResource.cache │ │ │ ├── WinThumbsPreloader.csprojAssemblyReference.cache │ │ │ ├── WinThumbsPreloader.Properties.Resources.ru.resources │ │ │ └── WinThumbsPreloader.csproj.FileListAbsolute.txt │ │ ├── Release │ │ │ ├── WinThumbsPreloader.csproj.CoreCompileInputs.cache │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ ├── WinThumbsPreloader.AboutForm.resources │ │ │ ├── WinThumbsPreloader.AboutForm.ru.resources │ │ │ ├── TempPE │ │ │ │ └── Properties.Resources.Designer.cs.dll │ │ │ ├── WinThumbsPreloader.Properties.Resources.resources │ │ │ ├── WinThumbsPreloader.csproj.GenerateResource.cache │ │ │ ├── WinThumbsPreloader.csprojAssemblyReference.cache │ │ │ ├── WinThumbsPreloader.Properties.Resources.ru.resources │ │ │ └── WinThumbsPreloader.csproj.FileListAbsolute.txt │ │ └── x64 │ │ │ ├── Debug │ │ │ ├── WinThumbsPreloader.csproj.CoreCompileInputs.cache │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ ├── WinThumbsPreloader.AboutForm.resources │ │ │ ├── TempPE │ │ │ │ └── Properties.Resources.Designer.cs.dll │ │ │ ├── WinThumbsPreloader.AboutForm.ru.resources │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── WinThumbsPreloader.csproj.GenerateResource.cache │ │ │ ├── WinThumbsPreloader.csprojAssemblyReference.cache │ │ │ ├── WinThumbsPreloader.Properties.Resources.resources │ │ │ ├── WinThumbsPreloader.Properties.Resources.ru.resources │ │ │ └── WinThumbsPreloader.csproj.FileListAbsolute.txt │ │ │ └── Release │ │ │ └── DesignTimeResolveAssemblyReferencesInput.cache │ ├── icon.ico │ ├── bin │ │ ├── Debug │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ ├── WinThumbsPreloader.exe.config │ │ │ └── LICENSE.txt │ │ ├── Release │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ ├── WinThumbsPreloader.exe.config │ │ │ └── LICENSE.txt │ │ └── x64 │ │ │ ├── Debug │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ └── WinThumbsPreloader.exe.config │ │ │ └── Release │ │ │ ├── WinThumbsPreloader.exe │ │ │ ├── WinThumbsPreloader.pdb │ │ │ ├── ru │ │ │ └── WinThumbsPreloader.resources.dll │ │ │ └── WinThumbsPreloader.exe.config │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── AssemblyInfo.cs │ │ ├── Resources.ru.resx │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── App.config │ ├── WinThumbsPreloader.csproj.user │ ├── Program.cs │ ├── Options.cs │ ├── AboutForm.cs │ ├── DirectoryScanner.cs │ ├── WinThumbsPreloader.csproj │ ├── ThumbnailPreloader.cs │ ├── ThumbnailsPreloader.cs │ ├── AboutForm.ru.resx │ ├── AboutForm.Designer.cs │ └── AboutForm.resx └── WinThumbsPreloader.sln ├── InnoSetup ├── WizardImageFile.bmp ├── WizardSmallImageFile.bmp ├── License.txt └── installer.iss ├── README.md └── LICENSE /Website/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/Website/favicon.ico -------------------------------------------------------------------------------- /Website/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/Website/images/flags.png -------------------------------------------------------------------------------- /Website/images/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/Website/images/preview.gif -------------------------------------------------------------------------------- /Website/images/preview.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/Website/images/preview.mp4 -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | a57fce1cec13f9f011f0618c10b7bb67f73ca4ad 2 | -------------------------------------------------------------------------------- /InnoSetup/WizardImageFile.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/InnoSetup/WizardImageFile.bmp -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | b27dfe4b1f5195df15a6743020c4491ee3f6cbe4 2 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 19b69abf3ba0408816bb0a5c62b560a66ab4cc47 2 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | bc0558d08eab7a9d2f90aba7e9fbeda440fccdb6 2 | -------------------------------------------------------------------------------- /InnoSetup/WizardSmallImageFile.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/InnoSetup/WizardSmallImageFile.bmp -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | ec4afd3586dcc416bebf60b3b4202419f4791371 2 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 5cdf170fbc599f21e8b5084af84a16aa057d8f72 2 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | a9d2d35c3752f9fd2efe29653e29e657c31f3e15 2 | -------------------------------------------------------------------------------- /Website/locale/ru/LC_MESSAGES/messages.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/Website/locale/ru/LC_MESSAGES/messages.mo -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/icon.ico -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Debug/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/Debug/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Debug/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/Debug/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Release/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/Release/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Release/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/Release/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Debug/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/x64/Debug/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Debug/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/x64/Debug/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Release/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/x64/Release/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Release/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/bin/x64/Release/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Debug/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Debug/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Debug/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Debug/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Release/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Release/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Release/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Release/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/WinThumbsPreloader.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/WinThumbsPreloader.exe -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/WinThumbsPreloader.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/WinThumbsPreloader.pdb -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Debug/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Debug/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Release/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/Release/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.AboutForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.AboutForm.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /Website/fileInfo.php: -------------------------------------------------------------------------------- 1 | '1.0.0', 3 | 'URL' => 'https://github.com/bruhov/WinThumbsPreloader/releases/download/v1.0.0/WinThumbsPreloader-1.0.0-setup.exe', 4 | 'downloadCount' => 0, 5 | 'size' => 634485, 6 | ); -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/ru/WinThumbsPreloader.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/ru/WinThumbsPreloader.resources.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.AboutForm.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.AboutForm.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.AboutForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.AboutForm.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.AboutForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.AboutForm.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/ConsoleWTP/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.AboutForm.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.AboutForm.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.AboutForm.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.AboutForm.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Debug/ConsoleWTP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.Properties.Resources.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/Release/ConsoleWTP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Debug/ConsoleWTP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/bin/x64/Release/ConsoleWTP.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.Properties.Resources.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.Properties.Resources.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.Properties.Resources.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.Properties.Resources.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.Properties.Resources.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.Properties.Resources.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.Properties.Resources.ru.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/HEAD/WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.Properties.Resources.ru.resources -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Debug/WinThumbsPreloader.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Release/WinThumbsPreloader.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Debug/WinThumbsPreloader.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/x64/Release/WinThumbsPreloader.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WinThumbsPreloader 2 | Thumbnails preloader for Windows Explorer 3 | 4 | ![Screenshot](https://raw.githubusercontent.com/inthebrilliantblue/WinThumbsPreloader/master/Website/images/preview.gif) 5 | 6 | # CLI Options 7 | -s : Silent mode 8 | 9 | -r : Recursive directory search 10 | 11 | -m : Multi-threaded generation 12 | 13 | 14 | ### Download: [WinThumbsPreloader.exe](https://github.com/inthebrilliantblue/WinThumbsPreloader/releases/download/v1.0.2/WinThumbsPreloader.exe) 15 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/WinThumbsPreloader.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ProjectFiles 5 | publish\ 6 | 7 | 8 | 9 | 10 | 11 | ru-RU 12 | false 13 | 14 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/DirectoryScanner.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.IO; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ConsoleWTP 9 | { 10 | class DirectoryScanner 11 | { 12 | 13 | public static List GetItemsBulk(string path, bool includeNestedDirectories) 14 | { 15 | List items = new List(); 16 | if (includeNestedDirectories) 17 | { 18 | items = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).ToList(); 19 | } 20 | else 21 | { 22 | items = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly).ToList(); 23 | } 24 | return items; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Release/ConsoleWTP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Release\ConsoleWTP.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Release\ConsoleWTP.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Release\ConsoleWTP.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Release\ConsoleWTP.csproj.CoreCompileInputs.cache 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Release\ConsoleWTP.exe 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Release\ConsoleWTP.pdb 7 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Debug/ConsoleWTP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Debug\ConsoleWTP.csprojAssemblyReference.cache 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Debug\ConsoleWTP.csproj.CoreCompileInputs.cache 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Debug\ConsoleWTP.exe.config 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Debug\ConsoleWTP.exe 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Debug\ConsoleWTP.pdb 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Debug\ConsoleWTP.exe 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Debug\ConsoleWTP.pdb 8 | -------------------------------------------------------------------------------- /InnoSetup/License.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dmitry Bruhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/Release/ConsoleWTP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Release\ConsoleWTP.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Release\ConsoleWTP.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\Release\ConsoleWTP.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Release\ConsoleWTP.csprojAssemblyReference.cache 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Release\ConsoleWTP.csproj.CoreCompileInputs.cache 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Release\ConsoleWTP.exe 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\Release\ConsoleWTP.pdb 8 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/obj/x64/Debug/ConsoleWTP.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Debug\ConsoleWTP.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Debug\ConsoleWTP.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\bin\x64\Debug\ConsoleWTP.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Debug\ConsoleWTP.csprojAssemblyReference.cache 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Debug\ConsoleWTP.csproj.CoreCompileInputs.cache 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Debug\ConsoleWTP.exe 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\ConsoleWTP\obj\x64\Debug\ConsoleWTP.pdb 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dmitry Bruhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ConsoleWTP 8 | { 9 | class Program 10 | { 11 | static void Main(string[] args) 12 | { 13 | //Check args 14 | if (string.IsNullOrWhiteSpace(args[0])) { 15 | Console.WriteLine("Please provide a location to scan!"); 16 | return; 17 | } 18 | //Get the items first before doing work 19 | List items = DirectoryScanner.GetItemsBulk(args[0], true); 20 | Parallel.ForEach( 21 | items, 22 | new ParallelOptions { MaxDegreeOfParallelism = 2048 }, 23 | item => 24 | { 25 | ThumbnailPreloader thumbnailPreloader = new ThumbnailPreloader(); 26 | Console.WriteLine(item); 27 | thumbnailPreloader.PreloadThumbnail(item); 28 | } 29 | ); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Debug/LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dmitry Bruhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/bin/Release/LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dmitry Bruhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Этот код создан программой. 4 | // Исполняемая версия:4.0.30319.42000 5 | // 6 | // Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае 7 | // повторной генерации кода. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WinThumbsPreloader.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.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 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Windows.Forms; 4 | 5 | namespace WinThumbsPreloader 6 | { 7 | static class Program 8 | { 9 | /// 10 | /// Главная точка входа для приложения. 11 | /// 12 | [STAThread] 13 | static void Main(string[] arguments) 14 | { 15 | /* 16 | //Test culture 17 | System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US"); 18 | System.Globalization.CultureInfo.DefaultThreadCurrentCulture = culture; 19 | System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = culture; 20 | System.Threading.Thread.CurrentThread.CurrentCulture = culture; 21 | System.Threading.Thread.CurrentThread.CurrentUICulture = culture; 22 | */ 23 | Options options = new Options(arguments); 24 | if (options.badArguments) 25 | { 26 | Application.EnableVisualStyles(); 27 | Application.SetCompatibleTextRenderingDefault(false); 28 | Application.Run(new AboutForm()); 29 | } 30 | else 31 | { 32 | new ThumbnailsPreloader(options.path, options.includeNestedDirectories, options.silentMode, options.multithreaded); 33 | Application.Run(); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleWTP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleWTP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("3b8d4d60-2087-42e3-b074-3ac3159fbdfe")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Общие сведения об этой сборке предоставляются следующим набором 6 | // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, 7 | // связанные со сборкой. 8 | [assembly: AssemblyTitle("WinThumbsPreloader")] 9 | [assembly: AssemblyDescription("Automatically preload Windows thumbnails for a directory and (optionally) subdirectories")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("WinThumbsPreloader")] 13 | [assembly: AssemblyCopyright("Copyright © 2018 Dmitry Bruhov")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми 18 | // для компонентов COM. Если необходимо обратиться к типу в этой сборке через 19 | // COM, задайте атрибуту ComVisible значение TRUE для этого типа. 20 | [assembly: ComVisible(false)] 21 | 22 | // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM 23 | [assembly: Guid("08e06e69-90af-421a-b2c1-95d886657f77")] 24 | 25 | // Сведения о версии сборки состоят из следующих четырех значений: 26 | // 27 | // Основной номер версии 28 | // Дополнительный номер версии 29 | // Номер сборки 30 | // Редакция 31 | // 32 | // Можно задать все значения или принять номер сборки и номер редакции по умолчанию. 33 | // используя "*", как показано ниже: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.1")] 36 | [assembly: AssemblyFileVersion("1.0.1")] 37 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Options.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace WinThumbsPreloader 9 | { 10 | class Options 11 | { 12 | public bool badArguments; 13 | public bool includeNestedDirectories; 14 | public bool silentMode; 15 | public string path; 16 | public bool multithreaded; 17 | 18 | public Options(string[] arguments) 19 | { 20 | //Check if we have more arguments than we support 21 | badArguments = (arguments.Length == 0 || arguments.Length > 4); 22 | if (badArguments) return; 23 | 24 | //Set default options 25 | includeNestedDirectories = false; 26 | silentMode = false; 27 | multithreaded = false; 28 | //Set the options the user wants from the arguments 29 | foreach (string argu in arguments) { 30 | switch (argu) { 31 | case "-r": 32 | includeNestedDirectories = true; 33 | break; 34 | case "-s": 35 | silentMode = true; 36 | break; 37 | case "-m": 38 | multithreaded = true; 39 | break; 40 | default: 41 | path = argu; 42 | break; 43 | } 44 | } 45 | 46 | //Check if the path we grabbed is real 47 | badArguments = !Directory.Exists(path); 48 | if (badArguments) return; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Debug/WinThumbsPreloader.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Debug\WinThumbsPreloader.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Debug\WinThumbsPreloader.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Debug\WinThumbsPreloader.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Debug\ru\WinThumbsPreloader.resources.dll 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.csprojAssemblyReference.cache 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.AboutForm.resources 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.Properties.Resources.resources 8 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.AboutForm.ru.resources 9 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.Properties.Resources.ru.resources 10 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.csproj.GenerateResource.cache 11 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.csproj.CoreCompileInputs.cache 12 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\ru\WinThumbsPreloader.resources.dll 13 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.exe 14 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Debug\WinThumbsPreloader.pdb 15 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30225.117 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinThumbsPreloader", "WinThumbsPreloader\WinThumbsPreloader.csproj", "{08E06E69-90AF-421A-B2C1-95D886657F77}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleWTP", "ConsoleWTP\ConsoleWTP.csproj", "{3B8D4D60-2087-42E3-B074-3AC3159FBDFE}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Debug|x64 = Debug|x64 14 | Release|Any CPU = Release|Any CPU 15 | Release|x64 = Release|x64 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Debug|x64.ActiveCfg = Debug|x64 21 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Debug|x64.Build.0 = Debug|x64 22 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Release|x64.ActiveCfg = Release|x64 25 | {08E06E69-90AF-421A-B2C1-95D886657F77}.Release|x64.Build.0 = Release|x64 26 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Debug|x64.ActiveCfg = Debug|x64 29 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Debug|x64.Build.0 = Debug|x64 30 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Release|Any CPU.Build.0 = Release|Any CPU 32 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Release|x64.ActiveCfg = Release|x64 33 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE}.Release|x64.Build.0 = Release|x64 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | GlobalSection(ExtensibilityGlobals) = postSolution 39 | SolutionGuid = {C9F9F925-5BFE-40F0-9EFE-4F68D9F72D42} 40 | EndGlobalSection 41 | EndGlobal 42 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/Release/WinThumbsPreloader.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Release\WinThumbsPreloader.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Release\WinThumbsPreloader.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Release\WinThumbsPreloader.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\Release\ru\WinThumbsPreloader.resources.dll 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.csprojAssemblyReference.cache 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.AboutForm.resources 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.Properties.Resources.resources 8 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.AboutForm.ru.resources 9 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.Properties.Resources.ru.resources 10 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.csproj.GenerateResource.cache 11 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.csproj.CoreCompileInputs.cache 12 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\ru\WinThumbsPreloader.resources.dll 13 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.exe 14 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\Release\WinThumbsPreloader.pdb 15 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/obj/x64/Debug/WinThumbsPreloader.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\x64\Debug\WinThumbsPreloader.exe.config 2 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\x64\Debug\WinThumbsPreloader.exe 3 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\x64\Debug\WinThumbsPreloader.pdb 4 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\bin\x64\Debug\ru\WinThumbsPreloader.resources.dll 5 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.csprojAssemblyReference.cache 6 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.AboutForm.resources 7 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.Properties.Resources.resources 8 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.AboutForm.ru.resources 9 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.Properties.Resources.ru.resources 10 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.csproj.GenerateResource.cache 11 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.csproj.CoreCompileInputs.cache 12 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\ru\WinThumbsPreloader.resources.dll 13 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.exe 14 | C:\Users\scott\Downloads\WinThumbsPreloader-master (1)\WinThumbsPreloader-master\WinThumbsPreloader\WinThumbsPreloader\obj\x64\Debug\WinThumbsPreloader.pdb 15 | -------------------------------------------------------------------------------- /Website/locale/ru/LC_MESSAGES/messages.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: WinThumbsPreloader Website 1.0.0\n" 4 | "POT-Creation-Date: 2018-02-23 16:16+0500\n" 5 | "PO-Revision-Date: 2018-02-23 16:16+0500\n" 6 | "Last-Translator: \n" 7 | "Language-Team: Dmitry Bruhov (bruhov.com)\n" 8 | "Language: ru_RU\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Generator: Poedit 2.0.6\n" 13 | "X-Poedit-Basepath: .\n" 14 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 15 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 16 | "X-Poedit-SourceCharset: UTF-8\n" 17 | "X-Poedit-SearchPath-0: index.php\n" 18 | 19 | #: index.php:71 index.php:84 20 | msgid "Thumbnails preloader for Windows Explorer" 21 | msgstr "Предзагрузчик эскизов медиа-файлов для Windows Explorer" 22 | 23 | #: index.php:72 24 | msgid "" 25 | "A tool that automatically preloads all thumbnails for a directory and " 26 | "(optionally) subdirectories in Windows Explorer with just one click." 27 | msgstr "" 28 | "Программа для предзагрузки эскизов медиа-файлов в папке по клику мышки. " 29 | "Поддерживает вложенные папки." 30 | 31 | #: index.php:87 32 | msgid "Download" 33 | msgstr "Скачать" 34 | 35 | #: index.php:89 36 | msgid "Version" 37 | msgstr "Версия" 38 | 39 | #: index.php:89 40 | msgid "changelog" 41 | msgstr "список изменений" 42 | 43 | #: index.php:90 44 | msgid "Download count" 45 | msgstr "Кол-во скачиваний" 46 | 47 | #: index.php:91 48 | msgid "Size" 49 | msgstr "Размер" 50 | 51 | #: index.php:91 52 | #, php-format 53 | msgid "%d KB" 54 | msgstr "%d КБ" 55 | 56 | #: index.php:92 57 | msgid "Platform" 58 | msgstr "Платформа" 59 | 60 | #: index.php:96 61 | msgid "Source code" 62 | msgstr "Исходный код" 63 | 64 | #: index.php:104 65 | msgid "" 66 | "WinThumbsPreloader is a simple open source tool for preloading " 67 | "thumbnails in Windows Explorer. Just right click on the folder to call the " 68 | "context menu and select WinThumbsPreloader > Preload " 69 | "thumbnails in the menu." 70 | msgstr "" 71 | "WinThumbsPreloader - это простая программа для предзагрузки эскизов " 72 | "медиа-файлов (фото или видео) в проводнике Windows. Кликните правой кнопкой " 73 | "мыше по интересующей папке для вызова контекстного меню и выберите " 74 | "WinThumbsPreloader > Загрузить эскизы." 75 | 76 | #: index.php:106 77 | msgid "Key features" 78 | msgstr "Ключевые особенности" 79 | 80 | #: index.php:108 81 | #, php-format 82 | msgid "Free, no advertisements, %sopen source%s" 83 | msgstr "Бесплатно, без рекламы, %sоткрытый исходный код%s" 84 | 85 | #: index.php:109 86 | msgid "Preload thumbnails for entire folder and (optionally) it's subfolders" 87 | msgstr "Загрузка эскизов для всей папки и (опционально) вложенных папок" 88 | 89 | #: index.php:110 90 | msgid "Integration with Windows Explorer" 91 | msgstr "Интеграция с проводником Windows" 92 | 93 | #: index.php:111 94 | msgid "Command line interface" 95 | msgstr "Интерфейс коммандной строки" 96 | 97 | #: index.php:117 98 | #, php-format 99 | msgid "Distributed under %sThe MIT License%s" 100 | msgstr "Распространяется под %sЛицензией MIT%s" 101 | 102 | #: index.php:131 103 | msgid "Site language" 104 | msgstr "Язык сайта" 105 | -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/ConsoleWTP.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {3B8D4D60-2087-42E3-B074-3AC3159FBDFE} 8 | Exe 9 | ConsoleWTP 10 | ConsoleWTP 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | true 37 | bin\x64\Debug\ 38 | DEBUG;TRACE 39 | full 40 | x64 41 | 7.3 42 | prompt 43 | MinimumRecommendedRules.ruleset 44 | true 45 | 46 | 47 | bin\x64\Release\ 48 | TRACE 49 | true 50 | pdbonly 51 | x64 52 | 7.3 53 | prompt 54 | MinimumRecommendedRules.ruleset 55 | true 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/AboutForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Drawing; 4 | using System.IO; 5 | using System.Net; 6 | using System.Reflection; 7 | using System.Text.RegularExpressions; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using WinThumbsPreloader.Properties; 11 | 12 | namespace WinThumbsPreloader 13 | { 14 | public partial class AboutForm : Form 15 | { 16 | public AboutForm() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void AboutForm_Load(object sender, EventArgs e) 22 | { 23 | AppNameLabel.Text += " " + Application.ProductVersion; 24 | this.Icon = Resources.MainIcon; 25 | AppIconPictureBox.Image = new Icon(Resources.MainIcon, 48, 48).ToBitmap(); 26 | CheckForUpdates(); 27 | } 28 | 29 | private enum UpdateState 30 | { 31 | Updated, 32 | NotUpdated, 33 | Error 34 | } 35 | 36 | private async void CheckForUpdates() 37 | { 38 | UpdateState updateState = await Task.Run(() => 39 | { 40 | try 41 | { 42 | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 43 | using (WebClient client = new WebClient()) 44 | { 45 | client.Headers.Add("User-Agent", "WinThumbPreloader"); 46 | string GitHubApiResponse = client.DownloadString("https://api.github.com/repos/bruhov/WinThumbsPreloader/releases/latest"); 47 | string latestVersionString = Regex.Match(GitHubApiResponse, @"""tag_name"":\s*""v([\d\.]+)").Groups[1].Captures[0].ToString(); 48 | Version currentVersion = new Version(Application.ProductVersion); 49 | Version latestVersion = new Version(latestVersionString); 50 | return (currentVersion >= latestVersion ? UpdateState.Updated : UpdateState.NotUpdated); 51 | } 52 | } 53 | catch (Exception) 54 | { 55 | return UpdateState.Error; 56 | } 57 | }); 58 | switch (updateState) 59 | { 60 | case UpdateState.Updated: 61 | UpdateLabel.Text = Resources.AboutForm_WinThumbsPreloader_IsUpToDate; 62 | break; 63 | case UpdateState.Error: 64 | UpdateLabel.Text = Resources.AboutForm_WinThumbsPreloader_UpdateCheckFailed; 65 | break; 66 | case UpdateState.NotUpdated: 67 | UpdateLabel.Text = Resources.AboutForm_WinThumbsPreloader_NewVersionAvailable; 68 | UpdateLabel.ForeColor = Color.FromArgb(0, 102, 204); 69 | UpdateLabel.Font = new Font(UpdateLabel.Font.Name, UpdateLabel.Font.SizeInPoints, FontStyle.Underline); 70 | UpdateLabel.Cursor = Cursors.Hand; 71 | break; 72 | } 73 | } 74 | 75 | private void CloseButton_Click(object sender, EventArgs e) 76 | { 77 | Application.Exit(); 78 | } 79 | 80 | private void LicenceButton_Click(object sender, EventArgs e) 81 | { 82 | Process.Start(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) + @"\LICENSE.txt"); 83 | } 84 | 85 | private void RichTextBox_LinkClicked(object sender, LinkClickedEventArgs e) 86 | { 87 | Process.Start(e.LinkText); 88 | } 89 | 90 | private void UpdateLabel_Click(object sender, EventArgs e) 91 | { 92 | if (UpdateLabel.Text == Resources.AboutForm_WinThumbsPreloader_NewVersionAvailable) Process.Start("https://bruhov.com/WinThumbsPreloader"); 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/DirectoryScanner.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | 6 | namespace WinThumbsPreloader 7 | { 8 | class DirectoryScanner 9 | { 10 | private string path; 11 | private bool includeNestedDirectories; 12 | 13 | public DirectoryScanner(string path, bool includeNestedDirectories) 14 | { 15 | this.path = path; 16 | this.includeNestedDirectories = includeNestedDirectories; 17 | } 18 | 19 | public IEnumerable GetItems() 20 | { 21 | if (includeNestedDirectories) 22 | { 23 | foreach (string item in GetItemsNested()) yield return item; 24 | } 25 | else 26 | { 27 | foreach (string item in GetItemsOnlyFirstLevel()) yield return item; 28 | } 29 | } 30 | 31 | public List GetItemsBulk() { 32 | List items = new List(); 33 | if (includeNestedDirectories) 34 | { 35 | items = Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories).ToList(); 36 | } 37 | else 38 | { 39 | items = Directory.GetFiles("path/to/dir", "*.*", SearchOption.TopDirectoryOnly).ToList(); 40 | } 41 | return items; 42 | } 43 | 44 | private IEnumerable GetItemsOnlyFirstLevel() 45 | { 46 | string[] items = null; 47 | try 48 | { 49 | items = Directory.GetFileSystemEntries(path).ToArray(); 50 | } 51 | catch (Exception) 52 | { 53 | //Do nothing 54 | } 55 | if (items != null) 56 | { 57 | for (int itemIndex = 0; itemIndex < items.Length; itemIndex++) 58 | { 59 | yield return items[itemIndex]; 60 | } 61 | } 62 | } 63 | 64 | private IEnumerable GetItemsNested() 65 | { 66 | Queue queue = new Queue(); 67 | queue.Enqueue(path); 68 | string currentPath; 69 | while (queue.Count > 0) 70 | { 71 | currentPath = queue.Dequeue(); 72 | yield return currentPath; 73 | string[] files = null; 74 | try 75 | { 76 | foreach (string subDirectory in Directory.GetDirectories(currentPath)) queue.Enqueue(subDirectory); 77 | files = Directory.GetFiles(currentPath); 78 | } 79 | catch (Exception) 80 | { 81 | //Do nothing 82 | } 83 | if (files != null) 84 | { 85 | for (int i = 0; i < files.Length; i++) yield return files[i]; 86 | } 87 | } 88 | } 89 | 90 | public IEnumerable GetItemsCount() 91 | { 92 | if (includeNestedDirectories) 93 | { 94 | foreach (int itemsCount in GetItemsCountNested()) yield return itemsCount; 95 | } 96 | else 97 | { 98 | foreach (int itemsCount in GetItemsCountOnlyFirstLevel()) yield return itemsCount; 99 | } 100 | } 101 | 102 | private IEnumerable GetItemsCountOnlyFirstLevel() 103 | { 104 | int itemsCount = 0; 105 | try 106 | { 107 | itemsCount = Directory.GetFileSystemEntries(path).Length; 108 | } 109 | catch (Exception) 110 | { 111 | //Do nothing 112 | } 113 | if (itemsCount > 0) yield return itemsCount; 114 | } 115 | 116 | private IEnumerable GetItemsCountNested() 117 | { 118 | Queue queue = new Queue(); 119 | queue.Enqueue(path); 120 | string currentPath; 121 | int itemsCount; 122 | while (queue.Count > 0) 123 | { 124 | currentPath = queue.Dequeue(); 125 | itemsCount = 0; 126 | try 127 | { 128 | foreach (string subDir in Directory.GetDirectories(currentPath)) 129 | { 130 | queue.Enqueue(subDir); 131 | itemsCount++; 132 | } 133 | itemsCount += Directory.GetFiles(currentPath).Length; 134 | } 135 | catch (Exception) 136 | { 137 | //Do nothing 138 | } 139 | if (itemsCount > 0) yield return itemsCount; 140 | } 141 | } 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/WinThumbsPreloader.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {08E06E69-90AF-421A-B2C1-95D886657F77} 8 | WinExe 9 | WinThumbsPreloader 10 | WinThumbsPreloader 11 | v4.5 12 | 512 13 | true 14 | 15 | publish\ 16 | true 17 | Disk 18 | false 19 | Foreground 20 | 7 21 | Days 22 | false 23 | false 24 | true 25 | 0 26 | 1.0.0.%2a 27 | false 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 | false 41 | 42 | 43 | AnyCPU 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | false 51 | 52 | 53 | icon.ico 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | Form 71 | 72 | 73 | AboutForm.cs 74 | 75 | 76 | 77 | 78 | Component 79 | 80 | 81 | 82 | 83 | 84 | AboutForm.cs 85 | 86 | 87 | AboutForm.cs 88 | 89 | 90 | ResXFileCodeGenerator 91 | Resources.Designer.cs 92 | Designer 93 | 94 | 95 | True 96 | Resources.resx 97 | True 98 | 99 | 100 | 101 | SettingsSingleFileGenerator 102 | Settings.Designer.cs 103 | 104 | 105 | True 106 | Settings.settings 107 | True 108 | 109 | 110 | 111 | 112 | Designer 113 | 114 | 115 | 116 | 117 | False 118 | .NET Framework 3.5 SP1 119 | false 120 | 121 | 122 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /Website/index.php: -------------------------------------------------------------------------------- 1 | tag_name)) exit; 20 | $latestRelease = $releases[0]; 21 | $setupFile = $latestRelease->assets[0]; 22 | $fileInfo = []; 23 | $fileInfo['version'] = mb_substr($latestRelease->tag_name, 1); 24 | $fileInfo['URL'] = $setupFile->browser_download_url; 25 | $fileInfo['size'] = $setupFile->size; 26 | $fileInfo['downloadCount'] = 0; 27 | foreach ($releases as $release) $fileInfo['downloadCount'] += $release->assets[0]->download_count; 28 | //Save 29 | file_put_contents(__DIR__ . '/fileInfo.php', ' 'en', //Default 36 | 'ru_RU.utf8' => 'ru' 37 | ]; 38 | 39 | $userLanguage = rtrim((string)($_GET['language'] ?? ''), '/'); 40 | 41 | //Unsupported language - return 404 42 | if ($userLanguage !== '' && !in_array($userLanguage, $supportedLanguages)) { 43 | http_response_code(404); 44 | exit; 45 | } 46 | 47 | //If language is not provided, detect it automatically and redirect user 48 | if ($userLanguage === '') { 49 | $userLanguage = (http\Env::negotiateLanguage($supportedLanguages) ?? $supportedLanguages['en_US.utf8']); 50 | header('Location: https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/' . $userLanguage . '/'); 51 | exit; 52 | } 53 | 54 | //Setup language 55 | $userLocale = array_search($userLanguage, $supportedLanguages); 56 | putenv('LC_MESSAGES=' . $userLocale); 57 | setlocale(LC_MESSAGES, $userLocale); 58 | bindtextdomain('messages', __DIR__ . '/locale'); 59 | bind_textdomain_codeset('messages', 'utf8'); 60 | textdomain('messages'); 61 | 62 | //Load file information 63 | include(__DIR__ . '/fileInfo.php'); 64 | 65 | //Return page html 66 | ?> 67 | 68 | 69 | 70 | 71 | WinThumbsPreloader - <?=_('Thumbnails preloader for Windows Explorer')?> 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
82 |
83 |

WinThumbsPreloader

84 |

85 |
86 |
87 | 88 |
89 | : ()
90 | : format($fileInfo['downloadCount'])?>
91 | :
92 | : Windows 7/8/10 93 |
94 |
95 |
96 | 97 |
98 |
99 |
100 | 103 |
104 |

WinThumbsPreloader is a simple open source tool for preloading thumbnails in Windows Explorer. Just right click on the folder to call the context menu and select WinThumbsPreloader > Preload thumbnails in the menu.')?>

105 |
106 |

107 |
    108 |
  • ', '')?>
  • 109 |
  • 110 |
  • 111 |
  • 112 |
113 |
114 | 134 |
135 | 136 | 137 | -------------------------------------------------------------------------------- /Website/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Open Sans', sans-serif; 3 | color: #212529; 4 | font-size: 16px; 5 | line-height: 1.5; 6 | } 7 | 8 | a { 9 | color: #212529; 10 | } 11 | 12 | .container { 13 | width: 970px; 14 | margin: 0 auto; 15 | } 16 | 17 | .header { 18 | text-align: center; 19 | margin-bottom: 47px; 20 | } 21 | 22 | h1 { 23 | line-height: 1; 24 | font-size: 54px; 25 | margin: 40px 0 10px 0; 26 | } 27 | 28 | .lead { 29 | margin: 21px 0 33px 0; 30 | } 31 | 32 | .buttons { 33 | display: flex; 34 | justify-content: center; 35 | } 36 | 37 | .button { 38 | -webkit-user-select: none; 39 | -moz-user-select: none; 40 | -ms-user-select: none; 41 | user-select: none; 42 | text-decoration: none; 43 | padding: 8px 16px; 44 | margin: 0 8px; 45 | border-radius: 5px; 46 | font-size: 20px; 47 | color: #212529; 48 | border: 1px solid #212529; 49 | transition: 50 | color 100ms ease, 51 | background-color 100ms ease, 52 | border-color 100ms ease; 53 | } 54 | 55 | .button:hover { 56 | color: #fff; 57 | background-color: #212529; 58 | border-color: #212529; 59 | } 60 | 61 | .download { 62 | position: relative; 63 | color: #fff; 64 | background-color: #212529; 65 | border-color: #212529; 66 | padding: 0; 67 | } 68 | 69 | .downloadLink { 70 | padding: 8px 16px; 71 | color: #ffffff; 72 | text-decoration: none; 73 | display: inline-block; 74 | } 75 | 76 | .downloadInfo { 77 | position: absolute; 78 | color: #212529; 79 | font-size: 14px; 80 | white-space: nowrap; 81 | text-align: left; 82 | top: 100%; 83 | margin-top: 10px; 84 | left: 0; 85 | border: 1px solid #212529; 86 | border-radius: 5px; 87 | padding: 8px; 88 | background-color: #ffffff; 89 | pointer-events: none; 90 | z-index: 1; 91 | opacity: 0; 92 | transition: opacity 100ms ease; 93 | } 94 | 95 | .downloadInfo:before { 96 | content: ''; 97 | position: absolute; 98 | left: 0; 99 | width: 100%; 100 | top: -10px; 101 | height: 10px; 102 | } 103 | 104 | .download:hover .downloadInfo { 105 | opacity: 1; 106 | pointer-events: auto; 107 | } 108 | 109 | .downloadInfoArrow { 110 | position: absolute; 111 | top: 100%; 112 | margin-top: 3px; 113 | left: 50%; 114 | margin-left: -7px; 115 | pointer-events: none; 116 | z-index: 2; 117 | opacity: 0; 118 | transition: opacity 100ms ease; 119 | } 120 | 121 | .download:hover .downloadInfoArrow { 122 | opacity: 1; 123 | } 124 | 125 | .downloadInfoArrow:before { 126 | content: ''; 127 | display: block; 128 | width: 0; 129 | height: 0; 130 | border-style: solid; 131 | border-width: 0 7px 7px 7px; 132 | border-color: transparent transparent #212529 transparent; 133 | } 134 | 135 | .downloadInfoArrow:after { 136 | content: ''; 137 | position: absolute; 138 | margin-top: -5px; 139 | display: block; 140 | width: 0; 141 | height: 0; 142 | border-style: solid; 143 | border-width: 0 7px 7px 7px; 144 | border-color: transparent transparent #ffffff transparent; 145 | } 146 | 147 | .screenshotContainer { 148 | text-align: center; 149 | margin-bottom: 44px; /* 3px in bottom of a video */ 150 | } 151 | 152 | .description { 153 | margin-bottom: 47px; 154 | } 155 | 156 | .featuresContainer { 157 | text-align: center; 158 | margin-bottom: 47px; 159 | } 160 | 161 | h2 { 162 | line-height: 1; 163 | font-size: 26px; 164 | margin-bottom: 15px; 165 | } 166 | 167 | ul { 168 | display: table; 169 | white-space: nowrap; 170 | margin: 0 auto; 171 | text-align: left; 172 | } 173 | 174 | .footer { 175 | border-top: 1px solid #212529; 176 | font-size: 14px; 177 | display: flex; 178 | justify-content: space-between; 179 | align-items: center; 180 | padding: 10px 0; 181 | } 182 | 183 | .language { 184 | cursor: pointer; 185 | position: relative; 186 | } 187 | 188 | .language:after { 189 | display: inline-block; 190 | position: relative; 191 | content: ""; 192 | top: -3px; 193 | right: 0; 194 | margin-left: 4px; 195 | width: 6px; 196 | height: 6px; 197 | transform: rotate(45deg); 198 | border-right: 2px solid #212529; 199 | border-bottom: 2px solid #212529; 200 | transition: 201 | transform 100ms ease, 202 | top 100ms ease; 203 | } 204 | 205 | .language:hover:after { 206 | transform: rotate(-135deg); 207 | top: 1px; 208 | } 209 | 210 | .language:before { 211 | content: ''; 212 | position: absolute; 213 | width: 100%; 214 | height: 17px; 215 | top: -11px; 216 | } 217 | 218 | .flag { 219 | display: inline-block; 220 | width: 24px; 221 | height: 24px; 222 | vertical-align: -6px; 223 | margin: 0 4px; 224 | background-image: url('images/flags.png'); 225 | background-repeat: no-repeat;; 226 | } 227 | 228 | .flag.en { background-position: 0 0px; } 229 | .flag.ru { background-position: 0 -24px; } 230 | 231 | .languages { 232 | position: absolute; 233 | bottom: 100%; 234 | margin-bottom: 10px; 235 | right: 0; 236 | border-radius: 5px; 237 | color: #212529; 238 | border: 1px solid #212529; 239 | background-color: #ffffff; 240 | pointer-events: none; 241 | opacity: 0; 242 | transition: opacity 100ms ease; 243 | } 244 | 245 | .language:hover .languages { 246 | opacity: 1; 247 | pointer-events: auto; 248 | } 249 | 250 | .languages:before, .languages:after { 251 | content: ''; 252 | display: block; 253 | position: absolute; 254 | left: 50%; 255 | margin-left: -7px; 256 | top: 100%; 257 | margin-top: 1px; 258 | width: 0; 259 | height: 0; 260 | border-style: solid; 261 | border-width: 7px 7px 0 7px; 262 | border-color: #212529 transparent transparent transparent; 263 | } 264 | 265 | .languages:after { 266 | margin-top: -1px; 267 | border-color: #ffffff transparent transparent transparent; 268 | } 269 | 270 | .languageLink { 271 | position: relative; 272 | display: block; 273 | text-decoration: none; 274 | font-weight: 700; 275 | padding: 8px 8px 8px 4px; 276 | transition: 277 | color 100ms ease, 278 | background-color 100ms ease; 279 | } 280 | 281 | .languageLink:hover { 282 | color: #ffffff; 283 | background-color: #212529; 284 | } 285 | 286 | .languageLink:last-child:before { 287 | content: ''; 288 | position: absolute; 289 | display: block; 290 | left: 50%; 291 | margin-left: -8px; 292 | top: 100%; 293 | margin-top: -1px; 294 | width: 0; 295 | height: 0; 296 | border-style: solid; 297 | border-width: 8px 8px 0 8px; 298 | border-color: #212529 transparent transparent transparent; 299 | opacity: 0; 300 | z-index: 1; 301 | transition: opacity 100ms ease; 302 | } 303 | 304 | .languageLink:last-child:hover:before { 305 | opacity: 1; 306 | } -------------------------------------------------------------------------------- /InnoSetup/installer.iss: -------------------------------------------------------------------------------- 1 | #define MyAppName "WinThumbsPreloader" 2 | #define MyAppReleaseDirectory "..\WinThumbsPreloader\WinThumbsPreloader\bin\Release" 3 | #define MyAppFilename MyAppName + ".exe" 4 | #define MyAppFilepath MyAppReleaseDirectory + "\" + MyAppFilename 5 | #dim Version[4] 6 | #expr ParseVersion(MyAppFilepath, Version[0], Version[1], Version[2], Version[3]) 7 | #define MyAppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2]) 8 | #define MyAppPublisher "Dmitry Bruhov" 9 | #define MyAppId "CF49DD18-AA76-4E79-97C2-4FEAED1AED5F" 10 | 11 | #include 12 | #include 13 | 14 | [Setup] 15 | AppCopyright=Copyright (c) 2018 {#MyAppPublisher} 16 | AppId={#MyAppId} 17 | AppMutex={#MyAppId} 18 | AppName={#MyAppName} 19 | AppPublisher={#MyAppPublisher} 20 | AppPublisherURL=https://bruhov.com/WinThumbsPreloader 21 | AppSupportURL=https://github.com/bruhov/WinThumbsPreloader/issues 22 | AppUpdatesURL=https://github.com/bruhov/WinThumbsPreloader/releases 23 | AppVerName={#MyAppName} {#MyAppVersion} 24 | AppVersion={#MyAppVersion} 25 | ArchitecturesAllowed=x86 x64 ia64 26 | ArchitecturesInstallIn64BitMode=x64 ia64 27 | DefaultDirName={pf}\{#MyAppName} 28 | DefaultGroupName={#MyAppName} 29 | DirExistsWarning=no 30 | DisableReadyPage=yes 31 | DisableProgramGroupPage=yes 32 | LicenseFile=license.txt 33 | MinVersion=6.1 34 | OutputBaseFilename={#MyAppName}-{#MyAppVersion}-setup 35 | OutputDir=Output 36 | ShowLanguageDialog=no 37 | UninstallDisplayIcon={app}\{#MyAppFilename} 38 | UninstallDisplayName={#MyAppName} 39 | VersionInfoTextVersion={#MyAppVersion} 40 | VersionInfoVersion={#MyAppVersion} 41 | WizardImageFile=WizardImageFile.bmp 42 | WizardImageStretch=no 43 | WizardSmallImageFile=WizardSmallImageFile.bmp 44 | SolidCompression=yes 45 | 46 | [Languages] 47 | Name: en; MessagesFile: "compiler:Default.isl" 48 | Name: ru; MessagesFile: "compiler:Languages\Russian.isl" 49 | 50 | [CustomMessages] 51 | ; .Net installer 52 | en.NetFrameworkInstallerCaption=Installing .NET Framework 4.5.2. This might take a few minutes... 53 | ru.NetFrameworkInstallerCaption=Установка .NET Framework 4.5.2... 54 | 55 | en.NetFrameworkInstallerFail=.NET installation failed with code 56 | ru.NetFrameworkInstallerFail=Ошибка установки .NET Framework. Код ошибки 57 | 58 | ; Context menu items 59 | en.PreloadThumbnails=Preload thumbnails 60 | ru.PreloadThumbnails=Загрузить эскизы 61 | 62 | en.PreloadThumbnailsRecursively=Preload thumbnails recursively 63 | ru.PreloadThumbnailsRecursively=Загрузить эскизы включая подпапки 64 | 65 | [Files] 66 | Source: "{#MyAppFilepath}"; DestDir: "{app}"; Flags: ignoreversion 67 | Source: "{#MyAppFilepath}.config"; DestDir: "{app}"; Flags: ignoreversion 68 | Source: "{#MyAppReleaseDirectory}\LICENSE.txt"; DestDir: "{app}"; Flags: ignoreversion 69 | Source: "{#MyAppReleaseDirectory}\ru\*.resources.dll"; DestDir: "{app}\Languages\ru"; Flags: ignoreversion 70 | 71 | [Icons] 72 | Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppFilename}" 73 | 74 | [Run] 75 | Filename: "{app}\{#MyAppFilename}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 76 | 77 | [Registry] 78 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}"; Flags: uninsdeletekey 79 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}"; ValueType: string; ValueName: "MUIVerb"; ValueData: "{#MyAppName}" 80 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#MyAppFilename}"",0" 81 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}"; ValueType: string; ValueName: "ExtendedSubCommandsKey"; ValueData: "Directory\shell\{#MyAppName}" 82 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell" 83 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\Preload"; ValueType: string; ValueName: "MUIVerb"; ValueData: "{cm:PreloadThumbnails}" 84 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\Preload"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#MyAppFilename}"",0" 85 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\Preload\command"; ValueType: string; ValueData: """{app}\{#MyAppFilename}"" ""%1""" 86 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\PreloadRecursively"; ValueType: string; ValueName: "MUIVerb"; ValueData: "{cm:PreloadThumbnailsRecursively}" 87 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\PreloadRecursively"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#MyAppFilename}"",0" 88 | Root: "HKCR"; Subkey: "Directory\shell\{#MyAppName}\Shell\PreloadRecursively\command"; ValueType: string; ValueData: """{app}\{#MyAppFilename}"" -r ""%1""" 89 | 90 | [Code] 91 | function Framework45IsNotInstalled(): Boolean; 92 | var 93 | bSuccess: Boolean; 94 | regVersion: Cardinal; 95 | begin 96 | Result := True; 97 | 98 | bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion); 99 | if (True = bSuccess) and (regVersion >= 378389) then begin 100 | Result := False; 101 | end; 102 | end; 103 | 104 | procedure InitializeWizard; 105 | begin 106 | if Framework45IsNotInstalled() then 107 | begin 108 | idpAddFile('http://go.microsoft.com/fwlink/?LinkId=397707', ExpandConstant('{tmp}\NetFrameworkInstaller.exe')); 109 | idpDownloadAfter(wpReady); 110 | end; 111 | end; 112 | 113 | procedure InstallFramework; 114 | var 115 | StatusText: string; 116 | ResultCode: Integer; 117 | begin 118 | StatusText := WizardForm.StatusLabel.Caption; 119 | WizardForm.StatusLabel.Caption := ExpandConstant('{cm:NetFrameworkInstallerCaption}'); 120 | WizardForm.ProgressGauge.Style := npbstMarquee; 121 | try 122 | if not Exec(ExpandConstant('{tmp}\NetFrameworkInstaller.exe'), '/passive /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then 123 | begin 124 | MsgBox(ExpandConstant('{cm:NetFrameworkInstallerFail}') + ': ' + IntToStr(ResultCode) + '.', mbError, MB_OK); 125 | end; 126 | finally 127 | WizardForm.StatusLabel.Caption := StatusText; 128 | WizardForm.ProgressGauge.Style := npbstNormal; 129 | 130 | DeleteFile(ExpandConstant('{tmp}\NetFrameworkInstaller.exe')); 131 | end; 132 | end; 133 | 134 | procedure CurStepChanged(CurStep: TSetupStep); 135 | begin 136 | case CurStep of 137 | ssPostInstall: 138 | begin 139 | if Framework45IsNotInstalled() then 140 | begin 141 | InstallFramework(); 142 | end; 143 | end; 144 | end; 145 | end; -------------------------------------------------------------------------------- /WinThumbsPreloader/ConsoleWTP/ThumbnailPreloader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace ConsoleWTP 5 | { 6 | class ThumbnailPreloader 7 | { 8 | private Guid iIdIShellItem; 9 | private IThumbnailCache TBCache; 10 | 11 | public ThumbnailPreloader() 12 | { 13 | iIdIShellItem = new Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe"); 14 | Guid CLSIDLocalThumbnailCache = new Guid("50ef4544-ac9f-4a8e-b21b-8a26180db13f"); 15 | var TBCacheType = Type.GetTypeFromCLSID(CLSIDLocalThumbnailCache); 16 | TBCache = (IThumbnailCache)Activator.CreateInstance(TBCacheType); 17 | } 18 | 19 | public void PreloadThumbnail(string filePath) 20 | { 21 | IShellItem shellItem = null; 22 | ISharedBitmap bmp = null; 23 | WTS_CACHEFLAGS cFlags; 24 | WTS_THUMBNAILID bmpId; 25 | try 26 | { 27 | SHCreateItemFromParsingName(filePath, IntPtr.Zero, iIdIShellItem, out shellItem); 28 | TBCache.GetThumbnail(shellItem, 128, WTS_FLAGS.WTS_EXTRACTINPROC, out bmp, out cFlags, out bmpId); 29 | } 30 | catch (Exception e) 31 | { 32 | Console.WriteLine(e.ToString()); 33 | } 34 | if (bmp != null) Marshal.ReleaseComObject(bmp); 35 | if (shellItem != null) Marshal.ReleaseComObject(shellItem); 36 | bmp = null; 37 | shellItem = null; 38 | } 39 | 40 | //Import native functions 41 | [DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)] 42 | static extern void SHCreateItemFromParsingName( 43 | [In][MarshalAs(UnmanagedType.LPWStr)] string pszPath, 44 | [In] IntPtr pbc, 45 | [In][MarshalAs(UnmanagedType.LPStruct)] Guid riid, 46 | [Out][MarshalAs(UnmanagedType.Interface, IidParameterIndex = 2)] out IShellItem ppv); 47 | 48 | [ComImport] 49 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 50 | [Guid("F676C15D-596A-4ce2-8234-33996F445DB1")] 51 | interface IThumbnailCache 52 | { 53 | uint GetThumbnail( 54 | [In] IShellItem pShellItem, 55 | [In] uint cxyRequestedThumbSize, 56 | [In] WTS_FLAGS flags /*default: WTS_FLAGS.WTS_EXTRACT*/, 57 | [Out][MarshalAs(UnmanagedType.Interface)] out ISharedBitmap ppvThumb, 58 | [Out] out WTS_CACHEFLAGS pOutFlags, 59 | [Out] out WTS_THUMBNAILID pThumbnailID 60 | ); 61 | 62 | void GetThumbnailByID( 63 | [In, MarshalAs(UnmanagedType.Struct)] WTS_THUMBNAILID thumbnailID, 64 | [In] uint cxyRequestedThumbSize, 65 | [Out][MarshalAs(UnmanagedType.Interface)] out ISharedBitmap ppvThumb, 66 | [Out] out WTS_CACHEFLAGS pOutFlags 67 | ); 68 | } 69 | 70 | [Flags] 71 | enum WTS_FLAGS : uint 72 | { 73 | WTS_EXTRACT = 0x00000000, 74 | WTS_INCACHEONLY = 0x00000001, 75 | WTS_FASTEXTRACT = 0x00000002, 76 | WTS_SLOWRECLAIM = 0x00000004, 77 | WTS_FORCEEXTRACTION = 0x00000008, 78 | WTS_EXTRACTDONOTCACHE = 0x00000020, 79 | WTS_SCALETOREQUESTEDSIZE = 0x00000040, 80 | WTS_SKIPFASTEXTRACT = 0x00000080, 81 | WTS_EXTRACTINPROC = 0x00000100 82 | } 83 | 84 | [Flags] 85 | enum WTS_CACHEFLAGS : uint 86 | { 87 | WTS_DEFAULT = 0x00000000, 88 | WTS_LOWQUALITY = 0x00000001, 89 | WTS_CACHED = 0x00000002 90 | } 91 | 92 | [StructLayout(LayoutKind.Sequential, Size = 16), Serializable] 93 | struct WTS_THUMBNAILID 94 | { 95 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16)] 96 | byte[] rgbKey; 97 | } 98 | 99 | [ComImport] 100 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 101 | [Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe")] 102 | public interface IShellItem 103 | { 104 | void BindToHandler(IntPtr pbc, 105 | [MarshalAs(UnmanagedType.LPStruct)] Guid bhid, 106 | [MarshalAs(UnmanagedType.LPStruct)] Guid riid, 107 | out IntPtr ppv); 108 | 109 | void GetParent(out IShellItem ppsi); 110 | 111 | void GetDisplayName(SIGDN sigdnName, out IntPtr ppszName); 112 | 113 | void GetAttributes(uint sfgaoMask, out uint psfgaoAttribs); 114 | 115 | void Compare(IShellItem psi, uint hint, out int piOrder); 116 | }; 117 | 118 | public enum SIGDN : uint 119 | { 120 | NORMALDISPLAY = 0, 121 | PARENTRELATIVEPARSING = 0x80018001, 122 | PARENTRELATIVEFORADDRESSBAR = 0x8001c001, 123 | DESKTOPABSOLUTEPARSING = 0x80028000, 124 | PARENTRELATIVEEDITING = 0x80031001, 125 | DESKTOPABSOLUTEEDITING = 0x8004c000, 126 | FILESYSPATH = 0x80058000, 127 | URL = 0x80068000 128 | } 129 | 130 | [ComImportAttribute()] 131 | [GuidAttribute("091162a4-bc96-411f-aae8-c5122cd03363")] 132 | [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 133 | public interface ISharedBitmap 134 | { 135 | uint Detach( 136 | [Out] out IntPtr phbm 137 | ); 138 | 139 | uint GetFormat( 140 | [Out] out WTS_ALPHATYPE pat 141 | ); 142 | 143 | uint GetSharedBitmap( 144 | [Out] out IntPtr phbm 145 | ); 146 | 147 | uint GetSize( 148 | [Out, MarshalAs(UnmanagedType.Struct)] out SIZE pSize 149 | ); 150 | 151 | uint InitializeBitmap( 152 | [In] IntPtr hbm, 153 | [In] WTS_ALPHATYPE wtsAT 154 | ); 155 | } 156 | 157 | [StructLayout(LayoutKind.Sequential)] 158 | public struct SIZE 159 | { 160 | public int cx; 161 | public int cy; 162 | 163 | public SIZE(int cx, int cy) 164 | { 165 | this.cx = cx; 166 | this.cy = cy; 167 | } 168 | } 169 | 170 | public enum WTS_ALPHATYPE : uint 171 | { 172 | WTSAT_UNKNOWN = 0, 173 | WTSAT_RGB = 1, 174 | WTSAT_ARGB = 2 175 | } 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/ThumbnailPreloader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using System.Windows.Forms; 4 | 5 | namespace WinThumbsPreloader 6 | { 7 | //Preload one thumbnail 8 | class ThumbnailPreloader 9 | { 10 | private Guid iIdIShellItem; 11 | private IThumbnailCache TBCache; 12 | 13 | public ThumbnailPreloader() 14 | { 15 | iIdIShellItem = new Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe"); 16 | Guid CLSIDLocalThumbnailCache = new Guid("50ef4544-ac9f-4a8e-b21b-8a26180db13f"); 17 | var TBCacheType = Type.GetTypeFromCLSID(CLSIDLocalThumbnailCache); 18 | TBCache = (IThumbnailCache)Activator.CreateInstance(TBCacheType); 19 | } 20 | 21 | public void PreloadThumbnail(string filePath) 22 | { 23 | IShellItem shellItem = null; 24 | ISharedBitmap bmp = null; 25 | WTS_CACHEFLAGS cFlags; 26 | WTS_THUMBNAILID bmpId; 27 | try 28 | { 29 | SHCreateItemFromParsingName(filePath, IntPtr.Zero, iIdIShellItem, out shellItem); 30 | TBCache.GetThumbnail(shellItem, 128, WTS_FLAGS.WTS_EXTRACTINPROC, out bmp, out cFlags, out bmpId); 31 | } 32 | catch (Exception) 33 | { 34 | //Do nothing 35 | } 36 | if (bmp != null) Marshal.ReleaseComObject(bmp); 37 | if (shellItem != null) Marshal.ReleaseComObject(shellItem); 38 | bmp = null; 39 | shellItem = null; 40 | } 41 | 42 | //Import native functions 43 | [DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)] 44 | static extern void SHCreateItemFromParsingName( 45 | [In][MarshalAs(UnmanagedType.LPWStr)] string pszPath, 46 | [In] IntPtr pbc, 47 | [In][MarshalAs(UnmanagedType.LPStruct)] Guid riid, 48 | [Out][MarshalAs(UnmanagedType.Interface, IidParameterIndex = 2)] out IShellItem ppv); 49 | 50 | [ComImport] 51 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 52 | [Guid("F676C15D-596A-4ce2-8234-33996F445DB1")] 53 | interface IThumbnailCache 54 | { 55 | uint GetThumbnail( 56 | [In] IShellItem pShellItem, 57 | [In] uint cxyRequestedThumbSize, 58 | [In] WTS_FLAGS flags /*default: WTS_FLAGS.WTS_EXTRACT*/, 59 | [Out][MarshalAs(UnmanagedType.Interface)] out ISharedBitmap ppvThumb, 60 | [Out] out WTS_CACHEFLAGS pOutFlags, 61 | [Out] out WTS_THUMBNAILID pThumbnailID 62 | ); 63 | 64 | void GetThumbnailByID( 65 | [In, MarshalAs(UnmanagedType.Struct)] WTS_THUMBNAILID thumbnailID, 66 | [In] uint cxyRequestedThumbSize, 67 | [Out][MarshalAs(UnmanagedType.Interface)] out ISharedBitmap ppvThumb, 68 | [Out] out WTS_CACHEFLAGS pOutFlags 69 | ); 70 | } 71 | 72 | [Flags] 73 | enum WTS_FLAGS : uint 74 | { 75 | WTS_EXTRACT = 0x00000000, 76 | WTS_INCACHEONLY = 0x00000001, 77 | WTS_FASTEXTRACT = 0x00000002, 78 | WTS_SLOWRECLAIM = 0x00000004, 79 | WTS_FORCEEXTRACTION = 0x00000008, 80 | WTS_EXTRACTDONOTCACHE = 0x00000020, 81 | WTS_SCALETOREQUESTEDSIZE = 0x00000040, 82 | WTS_SKIPFASTEXTRACT = 0x00000080, 83 | WTS_EXTRACTINPROC = 0x00000100 84 | } 85 | 86 | [Flags] 87 | enum WTS_CACHEFLAGS : uint 88 | { 89 | WTS_DEFAULT = 0x00000000, 90 | WTS_LOWQUALITY = 0x00000001, 91 | WTS_CACHED = 0x00000002 92 | } 93 | 94 | [StructLayout(LayoutKind.Sequential, Size = 16), Serializable] 95 | struct WTS_THUMBNAILID 96 | { 97 | [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 16)] 98 | byte[] rgbKey; 99 | } 100 | 101 | [ComImport] 102 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 103 | [Guid("43826d1e-e718-42ee-bc55-a1e261c37bfe")] 104 | public interface IShellItem 105 | { 106 | void BindToHandler(IntPtr pbc, 107 | [MarshalAs(UnmanagedType.LPStruct)]Guid bhid, 108 | [MarshalAs(UnmanagedType.LPStruct)]Guid riid, 109 | out IntPtr ppv); 110 | 111 | void GetParent(out IShellItem ppsi); 112 | 113 | void GetDisplayName(SIGDN sigdnName, out IntPtr ppszName); 114 | 115 | void GetAttributes(uint sfgaoMask, out uint psfgaoAttribs); 116 | 117 | void Compare(IShellItem psi, uint hint, out int piOrder); 118 | }; 119 | 120 | public enum SIGDN : uint 121 | { 122 | NORMALDISPLAY = 0, 123 | PARENTRELATIVEPARSING = 0x80018001, 124 | PARENTRELATIVEFORADDRESSBAR = 0x8001c001, 125 | DESKTOPABSOLUTEPARSING = 0x80028000, 126 | PARENTRELATIVEEDITING = 0x80031001, 127 | DESKTOPABSOLUTEEDITING = 0x8004c000, 128 | FILESYSPATH = 0x80058000, 129 | URL = 0x80068000 130 | } 131 | 132 | [ComImportAttribute()] 133 | [GuidAttribute("091162a4-bc96-411f-aae8-c5122cd03363")] 134 | [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 135 | public interface ISharedBitmap 136 | { 137 | uint Detach( 138 | [Out] out IntPtr phbm 139 | ); 140 | 141 | uint GetFormat( 142 | [Out] out WTS_ALPHATYPE pat 143 | ); 144 | 145 | uint GetSharedBitmap( 146 | [Out] out IntPtr phbm 147 | ); 148 | 149 | uint GetSize( 150 | [Out, MarshalAs(UnmanagedType.Struct)] out SIZE pSize 151 | ); 152 | 153 | uint InitializeBitmap( 154 | [In] IntPtr hbm, 155 | [In] WTS_ALPHATYPE wtsAT 156 | ); 157 | } 158 | 159 | [StructLayout(LayoutKind.Sequential)] 160 | public struct SIZE 161 | { 162 | public int cx; 163 | public int cy; 164 | 165 | public SIZE(int cx, int cy) 166 | { 167 | this.cx = cx; 168 | this.cy = cy; 169 | } 170 | } 171 | 172 | public enum WTS_ALPHATYPE : uint 173 | { 174 | WTSAT_UNKNOWN = 0, 175 | WTSAT_RGB = 1, 176 | WTSAT_ARGB = 2 177 | } 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/ThumbnailsPreloader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using System.IO; 4 | using WinThumbsPreloader.Properties; 5 | using System.Threading.Tasks; 6 | using System.Collections.Generic; 7 | 8 | namespace WinThumbsPreloader 9 | { 10 | public enum ThumbnailsPreloaderState 11 | { 12 | New, 13 | GettingNumberOfItems, 14 | Processing, 15 | Canceled, 16 | Done 17 | } 18 | 19 | //Preload all thumbnails, show progress dialog 20 | class ThumbnailsPreloader 21 | { 22 | private DirectoryScanner directoryScanner; 23 | private ProgressDialog progressDialog; 24 | private Timer progressDialogUpdateTimer; 25 | 26 | protected bool _multiThreaded; 27 | 28 | public ThumbnailsPreloaderState state = ThumbnailsPreloaderState.GettingNumberOfItems; 29 | public ThumbnailsPreloaderState prevState = ThumbnailsPreloaderState.New; 30 | public int totalItemsCount = 0; 31 | public int processedItemsCount = 0; 32 | public string currentFile = ""; 33 | 34 | public ThumbnailsPreloader(string path, bool includeNestedDirectories, bool silentMode, bool multiThreaded) 35 | { 36 | directoryScanner = new DirectoryScanner(path, includeNestedDirectories); 37 | if (!silentMode) 38 | { 39 | InitProgressDialog(); 40 | InitProgressDialogUpdateTimer(); 41 | } 42 | _multiThreaded = multiThreaded; 43 | Run(); 44 | } 45 | 46 | private void InitProgressDialog() 47 | { 48 | progressDialog = new ProgressDialog(); 49 | progressDialog.AutoClose = false; 50 | progressDialog.ShowTimeRemaining = false; 51 | progressDialog.Title = "WinThumbsPreloader"; 52 | progressDialog.CancelMessage = Resources.ThumbnailsPreloader_CancelMessage; 53 | progressDialog.Maximum = 100; 54 | progressDialog.Value = 0; 55 | progressDialog.Show(); 56 | UpdateProgressDialog(null, null); 57 | } 58 | 59 | private void InitProgressDialogUpdateTimer() 60 | { 61 | progressDialogUpdateTimer = new System.Windows.Forms.Timer(); 62 | progressDialogUpdateTimer.Interval = 250; 63 | progressDialogUpdateTimer.Tick += new EventHandler(UpdateProgressDialog); 64 | progressDialogUpdateTimer.Start(); 65 | } 66 | 67 | private void UpdateProgressDialog(object sender, EventArgs e) 68 | { 69 | if (progressDialog.HasUserCancelled) 70 | { 71 | state = ThumbnailsPreloaderState.Canceled; 72 | } 73 | else if (state == ThumbnailsPreloaderState.GettingNumberOfItems) 74 | { 75 | if (prevState != state) 76 | { 77 | prevState = state; 78 | progressDialog.Line1 = Resources.ThumbnailsPreloader_PreloadingThumbnails; 79 | progressDialog.Line3 = Resources.ThumbnailsPreloader_CalculatingNumberOfItems; 80 | progressDialog.Marquee = true; 81 | } 82 | progressDialog.Line2 = String.Format(Resources.ThumbnailsPreloader_Discovered0Items, totalItemsCount); 83 | } 84 | else if (state == ThumbnailsPreloaderState.Processing) 85 | { 86 | if (prevState != state) 87 | { 88 | prevState = state; 89 | progressDialog.Line1 = String.Format(Resources.ThumbnailsPreloader_PreloadingThumbnailsFor0Items, totalItemsCount); 90 | progressDialog.Maximum = totalItemsCount; 91 | progressDialog.Marquee = false; 92 | } 93 | progressDialog.Title = String.Format(Resources.ThumbnailsPreloader_Processing, (processedItemsCount * 100) / totalItemsCount); 94 | progressDialog.Line2 = Resources.ThumbnailsPreloader_Name + ": " + Path.GetFileName(currentFile); 95 | progressDialog.Line3 = String.Format(Resources.ThumbnailsPreloader_ItemsRemaining, totalItemsCount - processedItemsCount); 96 | progressDialog.Value = processedItemsCount; 97 | } 98 | } 99 | 100 | private async void Run() 101 | { 102 | await Task.Run(() => 103 | { 104 | //Get total items count 105 | state = ThumbnailsPreloaderState.GettingNumberOfItems; 106 | foreach (int itemsCount in directoryScanner.GetItemsCount()) 107 | { 108 | totalItemsCount += itemsCount; 109 | if (state == ThumbnailsPreloaderState.Canceled) return; 110 | } 111 | if (totalItemsCount == 0) 112 | { 113 | state = ThumbnailsPreloaderState.Done; 114 | return; 115 | } 116 | //Start processing 117 | state = ThumbnailsPreloaderState.Processing; 118 | ThumbnailPreloader thumbnailPreloader = new ThumbnailPreloader(); 119 | //Get the items first before doing work 120 | List items = directoryScanner.GetItemsBulk(); 121 | if (!_multiThreaded) 122 | { 123 | foreach (string item in items) 124 | { 125 | currentFile = item; 126 | thumbnailPreloader.PreloadThumbnail(item); 127 | processedItemsCount++; 128 | if (processedItemsCount == totalItemsCount) state = ThumbnailsPreloaderState.Done; 129 | if (state == ThumbnailsPreloaderState.Canceled) return; 130 | } 131 | } 132 | else { 133 | Parallel.ForEach( 134 | items, 135 | new ParallelOptions { MaxDegreeOfParallelism = 2048 }, 136 | item => 137 | { 138 | currentFile = item; 139 | thumbnailPreloader.PreloadThumbnail(item); 140 | processedItemsCount++; 141 | if (processedItemsCount == totalItemsCount) state = ThumbnailsPreloaderState.Done; 142 | if (state == ThumbnailsPreloaderState.Canceled) return; 143 | }); 144 | } 145 | }); 146 | Application.Exit(); 147 | } 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/AboutForm.ru.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 | 124 | Лицензия 125 | 126 | 127 | WinThumbsPreloader - О программе 128 | 129 | 130 | Проверка обновлений… 131 | 132 | 133 | Для использования данного приложения кликните правой кнопкой мыши по интересующей папке для вызова контекстного меню, и выберите WinThumbsPreloader > Загрузить эскизы. 134 | 135 | Также вы можете запустить приложение из командной строки: 136 | Для запуска: 137 | WinThumbsPreloader.exe [-rs] <path> 138 | Опции: 139 | -r Рекурсивно загружает эскизы в т.ч. для вложенных папок. 140 | -s Тихий режим - не показывать диалог с прогрессом. 141 | 142 | Сайт: https://bruhov.com/WinThumbsPreloader 143 | Страница проекта: https://github.com/bruhov/WinThumbsPreloader 144 | 145 | Copyright (c) 2018 Dmitry Bruhov 146 | 147 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Properties/Resources.ru.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 | 124 | Ошибка проверки обновлений 125 | 126 | 127 | Доступна новая версия 128 | 129 | 130 | Пожалуйста, подождите пока операция отменяется… 131 | 132 | 133 | Загрузка эскизов 134 | 135 | 136 | Подсчет количества элементов... 137 | 138 | 139 | Найдено {0:N0} элементов 140 | 141 | 142 | Загрузка эскизов для {0:N0} элементов 143 | 144 | 145 | Завершено: {0}% 146 | 147 | 148 | Имя 149 | 150 | 151 | Осталось элементов: {0:N0} 152 | 153 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Этот код создан программой. 4 | // Исполняемая версия:4.0.30319.42000 5 | // 6 | // Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае 7 | // повторной генерации кода. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WinThumbsPreloader.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", "15.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("WinThumbsPreloader.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 | /// Ищет локализованную строку, похожую на WinThumbsPreloader is up to date. 65 | /// 66 | internal static string AboutForm_WinThumbsPreloader_IsUpToDate { 67 | get { 68 | return ResourceManager.GetString("AboutForm_WinThumbsPreloader_IsUpToDate", resourceCulture); 69 | } 70 | } 71 | 72 | /// 73 | /// Ищет локализованную строку, похожую на A newer version of WinThumbsPreloader is available. 74 | /// 75 | internal static string AboutForm_WinThumbsPreloader_NewVersionAvailable { 76 | get { 77 | return ResourceManager.GetString("AboutForm_WinThumbsPreloader_NewVersionAvailable", resourceCulture); 78 | } 79 | } 80 | 81 | /// 82 | /// Ищет локализованную строку, похожую на Update check failed. 83 | /// 84 | internal static string AboutForm_WinThumbsPreloader_UpdateCheckFailed { 85 | get { 86 | return ResourceManager.GetString("AboutForm_WinThumbsPreloader_UpdateCheckFailed", resourceCulture); 87 | } 88 | } 89 | 90 | /// 91 | /// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок). 92 | /// 93 | internal static System.Drawing.Icon MainIcon { 94 | get { 95 | object obj = ResourceManager.GetObject("MainIcon", resourceCulture); 96 | return ((System.Drawing.Icon)(obj)); 97 | } 98 | } 99 | 100 | /// 101 | /// Ищет локализованную строку, похожую на Calculating number of items.... 102 | /// 103 | internal static string ThumbnailsPreloader_CalculatingNumberOfItems { 104 | get { 105 | return ResourceManager.GetString("ThumbnailsPreloader_CalculatingNumberOfItems", resourceCulture); 106 | } 107 | } 108 | 109 | /// 110 | /// Ищет локализованную строку, похожую на Please wait while the operation is cancelled. 111 | /// 112 | internal static string ThumbnailsPreloader_CancelMessage { 113 | get { 114 | return ResourceManager.GetString("ThumbnailsPreloader_CancelMessage", resourceCulture); 115 | } 116 | } 117 | 118 | /// 119 | /// Ищет локализованную строку, похожую на Discovered {0:N0} items. 120 | /// 121 | internal static string ThumbnailsPreloader_Discovered0Items { 122 | get { 123 | return ResourceManager.GetString("ThumbnailsPreloader_Discovered0Items", resourceCulture); 124 | } 125 | } 126 | 127 | /// 128 | /// Ищет локализованную строку, похожую на Items remaining: {0:N0}. 129 | /// 130 | internal static string ThumbnailsPreloader_ItemsRemaining { 131 | get { 132 | return ResourceManager.GetString("ThumbnailsPreloader_ItemsRemaining", resourceCulture); 133 | } 134 | } 135 | 136 | /// 137 | /// Ищет локализованную строку, похожую на Name. 138 | /// 139 | internal static string ThumbnailsPreloader_Name { 140 | get { 141 | return ResourceManager.GetString("ThumbnailsPreloader_Name", resourceCulture); 142 | } 143 | } 144 | 145 | /// 146 | /// Ищет локализованную строку, похожую на Preloading thumbnails. 147 | /// 148 | internal static string ThumbnailsPreloader_PreloadingThumbnails { 149 | get { 150 | return ResourceManager.GetString("ThumbnailsPreloader_PreloadingThumbnails", resourceCulture); 151 | } 152 | } 153 | 154 | /// 155 | /// Ищет локализованную строку, похожую на Preloading thumbnails for {0:N0} items. 156 | /// 157 | internal static string ThumbnailsPreloader_PreloadingThumbnailsFor0Items { 158 | get { 159 | return ResourceManager.GetString("ThumbnailsPreloader_PreloadingThumbnailsFor0Items", resourceCulture); 160 | } 161 | } 162 | 163 | /// 164 | /// Ищет локализованную строку, похожую на Processing: {0}%. 165 | /// 166 | internal static string ThumbnailsPreloader_Processing { 167 | get { 168 | return ResourceManager.GetString("ThumbnailsPreloader_Processing", resourceCulture); 169 | } 170 | } 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/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 | ..\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | WinThumbsPreloader is up to date 126 | 127 | 128 | Update check failed 129 | 130 | 131 | A newer version of WinThumbsPreloader is available 132 | 133 | 134 | Please wait while the operation is cancelled 135 | 136 | 137 | Preloading thumbnails 138 | 139 | 140 | Calculating number of items... 141 | 142 | 143 | Discovered {0:N0} items 144 | 145 | 146 | Preloading thumbnails for {0:N0} items 147 | 148 | 149 | Processing: {0}% 150 | 151 | 152 | Name 153 | 154 | 155 | Items remaining: {0:N0} 156 | 157 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/AboutForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace WinThumbsPreloader 2 | { 3 | partial class AboutForm 4 | { 5 | /// 6 | /// Обязательная переменная конструктора. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Освободить все используемые ресурсы. 12 | /// 13 | /// истинно, если управляемый ресурс должен быть удален; иначе ложно. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Код, автоматически созданный конструктором форм Windows 24 | 25 | /// 26 | /// Требуемый метод для поддержки конструктора — не изменяйте 27 | /// содержимое этого метода с помощью редактора кода. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); 32 | this.CloseButton = new System.Windows.Forms.Button(); 33 | this.LicenceButton = new System.Windows.Forms.Button(); 34 | this.BorderBottom = new System.Windows.Forms.Label(); 35 | this.BottomPanel = new System.Windows.Forms.Panel(); 36 | this.BorderTop = new System.Windows.Forms.Label(); 37 | this.HeaderPanel = new System.Windows.Forms.Panel(); 38 | this.AppIconPictureBox = new System.Windows.Forms.PictureBox(); 39 | this.UpdateLabel = new System.Windows.Forms.Label(); 40 | this.AppNameLabel = new System.Windows.Forms.Label(); 41 | this.ContentPanel = new System.Windows.Forms.Panel(); 42 | this.RichTextBox = new System.Windows.Forms.RichTextBox(); 43 | this.BottomPanel.SuspendLayout(); 44 | this.HeaderPanel.SuspendLayout(); 45 | ((System.ComponentModel.ISupportInitialize)(this.AppIconPictureBox)).BeginInit(); 46 | this.ContentPanel.SuspendLayout(); 47 | this.SuspendLayout(); 48 | // 49 | // CloseButton 50 | // 51 | resources.ApplyResources(this.CloseButton, "CloseButton"); 52 | this.CloseButton.Name = "CloseButton"; 53 | this.CloseButton.UseVisualStyleBackColor = true; 54 | this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); 55 | // 56 | // LicenceButton 57 | // 58 | resources.ApplyResources(this.LicenceButton, "LicenceButton"); 59 | this.LicenceButton.Name = "LicenceButton"; 60 | this.LicenceButton.UseVisualStyleBackColor = true; 61 | this.LicenceButton.Click += new System.EventHandler(this.LicenceButton_Click); 62 | // 63 | // BorderBottom 64 | // 65 | this.BorderBottom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(223)))), ((int)(((byte)(223))))); 66 | resources.ApplyResources(this.BorderBottom, "BorderBottom"); 67 | this.BorderBottom.Name = "BorderBottom"; 68 | // 69 | // BottomPanel 70 | // 71 | this.BottomPanel.BackColor = System.Drawing.SystemColors.Control; 72 | this.BottomPanel.Controls.Add(this.CloseButton); 73 | this.BottomPanel.Controls.Add(this.LicenceButton); 74 | resources.ApplyResources(this.BottomPanel, "BottomPanel"); 75 | this.BottomPanel.Name = "BottomPanel"; 76 | // 77 | // BorderTop 78 | // 79 | this.BorderTop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(223)))), ((int)(((byte)(223))))); 80 | resources.ApplyResources(this.BorderTop, "BorderTop"); 81 | this.BorderTop.Name = "BorderTop"; 82 | // 83 | // HeaderPanel 84 | // 85 | this.HeaderPanel.BackColor = System.Drawing.SystemColors.Window; 86 | this.HeaderPanel.Controls.Add(this.AppIconPictureBox); 87 | this.HeaderPanel.Controls.Add(this.UpdateLabel); 88 | this.HeaderPanel.Controls.Add(this.AppNameLabel); 89 | resources.ApplyResources(this.HeaderPanel, "HeaderPanel"); 90 | this.HeaderPanel.Name = "HeaderPanel"; 91 | // 92 | // AppIconPictureBox 93 | // 94 | resources.ApplyResources(this.AppIconPictureBox, "AppIconPictureBox"); 95 | this.AppIconPictureBox.Name = "AppIconPictureBox"; 96 | this.AppIconPictureBox.TabStop = false; 97 | // 98 | // UpdateLabel 99 | // 100 | resources.ApplyResources(this.UpdateLabel, "UpdateLabel"); 101 | this.UpdateLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark; 102 | this.UpdateLabel.Name = "UpdateLabel"; 103 | this.UpdateLabel.Click += new System.EventHandler(this.UpdateLabel_Click); 104 | // 105 | // AppNameLabel 106 | // 107 | resources.ApplyResources(this.AppNameLabel, "AppNameLabel"); 108 | this.AppNameLabel.Name = "AppNameLabel"; 109 | // 110 | // ContentPanel 111 | // 112 | this.ContentPanel.Controls.Add(this.RichTextBox); 113 | resources.ApplyResources(this.ContentPanel, "ContentPanel"); 114 | this.ContentPanel.Name = "ContentPanel"; 115 | // 116 | // RichTextBox 117 | // 118 | this.RichTextBox.BackColor = System.Drawing.Color.White; 119 | this.RichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; 120 | resources.ApplyResources(this.RichTextBox, "RichTextBox"); 121 | this.RichTextBox.Name = "RichTextBox"; 122 | this.RichTextBox.ReadOnly = true; 123 | this.RichTextBox.ShortcutsEnabled = false; 124 | this.RichTextBox.TabStop = false; 125 | this.RichTextBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.RichTextBox_LinkClicked); 126 | // 127 | // AboutForm 128 | // 129 | resources.ApplyResources(this, "$this"); 130 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 131 | this.BackColor = System.Drawing.Color.White; 132 | this.Controls.Add(this.ContentPanel); 133 | this.Controls.Add(this.BorderTop); 134 | this.Controls.Add(this.BorderBottom); 135 | this.Controls.Add(this.BottomPanel); 136 | this.Controls.Add(this.HeaderPanel); 137 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 138 | this.MaximizeBox = false; 139 | this.Name = "AboutForm"; 140 | this.Load += new System.EventHandler(this.AboutForm_Load); 141 | this.BottomPanel.ResumeLayout(false); 142 | this.HeaderPanel.ResumeLayout(false); 143 | this.HeaderPanel.PerformLayout(); 144 | ((System.ComponentModel.ISupportInitialize)(this.AppIconPictureBox)).EndInit(); 145 | this.ContentPanel.ResumeLayout(false); 146 | this.ResumeLayout(false); 147 | 148 | } 149 | 150 | #endregion 151 | private System.Windows.Forms.Button CloseButton; 152 | private System.Windows.Forms.Button LicenceButton; 153 | private System.Windows.Forms.Label BorderBottom; 154 | private System.Windows.Forms.Panel BottomPanel; 155 | private System.Windows.Forms.Label BorderTop; 156 | private System.Windows.Forms.Panel HeaderPanel; 157 | private System.Windows.Forms.PictureBox AppIconPictureBox; 158 | private System.Windows.Forms.Label AppNameLabel; 159 | private System.Windows.Forms.Panel ContentPanel; 160 | private System.Windows.Forms.RichTextBox RichTextBox; 161 | private System.Windows.Forms.Label UpdateLabel; 162 | } 163 | } 164 | 165 | -------------------------------------------------------------------------------- /Website/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in 9 | * IE on Windows Phone and in iOS. 10 | */ 11 | 12 | html { 13 | line-height: 1.15; /* 1 */ 14 | -ms-text-size-adjust: 100%; /* 2 */ 15 | -webkit-text-size-adjust: 100%; /* 2 */ 16 | } 17 | 18 | /* Sections 19 | ========================================================================== */ 20 | 21 | /** 22 | * Remove the margin in all browsers (opinionated). 23 | */ 24 | 25 | body { 26 | margin: 0; 27 | } 28 | 29 | /** 30 | * Add the correct display in IE 9-. 31 | */ 32 | 33 | article, 34 | aside, 35 | footer, 36 | header, 37 | nav, 38 | section { 39 | display: block; 40 | } 41 | 42 | /** 43 | * Correct the font size and margin on `h1` elements within `section` and 44 | * `article` contexts in Chrome, Firefox, and Safari. 45 | */ 46 | 47 | h1 { 48 | font-size: 2em; 49 | margin: 0.67em 0; 50 | } 51 | 52 | /* Grouping content 53 | ========================================================================== */ 54 | 55 | /** 56 | * Add the correct display in IE 9-. 57 | * 1. Add the correct display in IE. 58 | */ 59 | 60 | figcaption, 61 | figure, 62 | main { /* 1 */ 63 | display: block; 64 | } 65 | 66 | /** 67 | * Add the correct margin in IE 8. 68 | */ 69 | 70 | figure { 71 | margin: 1em 40px; 72 | } 73 | 74 | /** 75 | * 1. Add the correct box sizing in Firefox. 76 | * 2. Show the overflow in Edge and IE. 77 | */ 78 | 79 | hr { 80 | box-sizing: content-box; /* 1 */ 81 | height: 0; /* 1 */ 82 | overflow: visible; /* 2 */ 83 | } 84 | 85 | /** 86 | * 1. Correct the inheritance and scaling of font size in all browsers. 87 | * 2. Correct the odd `em` font sizing in all browsers. 88 | */ 89 | 90 | pre { 91 | font-family: monospace, monospace; /* 1 */ 92 | font-size: 1em; /* 2 */ 93 | } 94 | 95 | /* Text-level semantics 96 | ========================================================================== */ 97 | 98 | /** 99 | * 1. Remove the gray background on active links in IE 10. 100 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 101 | */ 102 | 103 | a { 104 | background-color: transparent; /* 1 */ 105 | -webkit-text-decoration-skip: objects; /* 2 */ 106 | } 107 | 108 | /** 109 | * 1. Remove the bottom border in Chrome 57- and Firefox 39-. 110 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 111 | */ 112 | 113 | abbr[title] { 114 | border-bottom: none; /* 1 */ 115 | text-decoration: underline; /* 2 */ 116 | text-decoration: underline dotted; /* 2 */ 117 | } 118 | 119 | /** 120 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 121 | */ 122 | 123 | b, 124 | strong { 125 | font-weight: inherit; 126 | } 127 | 128 | /** 129 | * Add the correct font weight in Chrome, Edge, and Safari. 130 | */ 131 | 132 | b, 133 | strong { 134 | font-weight: bolder; 135 | } 136 | 137 | /** 138 | * 1. Correct the inheritance and scaling of font size in all browsers. 139 | * 2. Correct the odd `em` font sizing in all browsers. 140 | */ 141 | 142 | code, 143 | kbd, 144 | samp { 145 | font-family: monospace, monospace; /* 1 */ 146 | font-size: 1em; /* 2 */ 147 | } 148 | 149 | /** 150 | * Add the correct font style in Android 4.3-. 151 | */ 152 | 153 | dfn { 154 | font-style: italic; 155 | } 156 | 157 | /** 158 | * Add the correct background and color in IE 9-. 159 | */ 160 | 161 | mark { 162 | background-color: #ff0; 163 | color: #000; 164 | } 165 | 166 | /** 167 | * Add the correct font size in all browsers. 168 | */ 169 | 170 | small { 171 | font-size: 80%; 172 | } 173 | 174 | /** 175 | * Prevent `sub` and `sup` elements from affecting the line height in 176 | * all browsers. 177 | */ 178 | 179 | sub, 180 | sup { 181 | font-size: 75%; 182 | line-height: 0; 183 | position: relative; 184 | vertical-align: baseline; 185 | } 186 | 187 | sub { 188 | bottom: -0.25em; 189 | } 190 | 191 | sup { 192 | top: -0.5em; 193 | } 194 | 195 | /* Embedded content 196 | ========================================================================== */ 197 | 198 | /** 199 | * Add the correct display in IE 9-. 200 | */ 201 | 202 | audio, 203 | video { 204 | display: inline-block; 205 | } 206 | 207 | /** 208 | * Add the correct display in iOS 4-7. 209 | */ 210 | 211 | audio:not([controls]) { 212 | display: none; 213 | height: 0; 214 | } 215 | 216 | /** 217 | * Remove the border on images inside links in IE 10-. 218 | */ 219 | 220 | img { 221 | border-style: none; 222 | } 223 | 224 | /** 225 | * Hide the overflow in IE. 226 | */ 227 | 228 | svg:not(:root) { 229 | overflow: hidden; 230 | } 231 | 232 | /* Forms 233 | ========================================================================== */ 234 | 235 | /** 236 | * 1. Change the font styles in all browsers (opinionated). 237 | * 2. Remove the margin in Firefox and Safari. 238 | */ 239 | 240 | button, 241 | input, 242 | optgroup, 243 | select, 244 | textarea { 245 | font-family: sans-serif; /* 1 */ 246 | font-size: 100%; /* 1 */ 247 | line-height: 1.15; /* 1 */ 248 | margin: 0; /* 2 */ 249 | } 250 | 251 | /** 252 | * Show the overflow in IE. 253 | * 1. Show the overflow in Edge. 254 | */ 255 | 256 | button, 257 | input { /* 1 */ 258 | overflow: visible; 259 | } 260 | 261 | /** 262 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 263 | * 1. Remove the inheritance of text transform in Firefox. 264 | */ 265 | 266 | button, 267 | select { /* 1 */ 268 | text-transform: none; 269 | } 270 | 271 | /** 272 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 273 | * controls in Android 4. 274 | * 2. Correct the inability to style clickable types in iOS and Safari. 275 | */ 276 | 277 | button, 278 | html [type="button"], /* 1 */ 279 | [type="reset"], 280 | [type="submit"] { 281 | -webkit-appearance: button; /* 2 */ 282 | } 283 | 284 | /** 285 | * Remove the inner border and padding in Firefox. 286 | */ 287 | 288 | button::-moz-focus-inner, 289 | [type="button"]::-moz-focus-inner, 290 | [type="reset"]::-moz-focus-inner, 291 | [type="submit"]::-moz-focus-inner { 292 | border-style: none; 293 | padding: 0; 294 | } 295 | 296 | /** 297 | * Restore the focus styles unset by the previous rule. 298 | */ 299 | 300 | button:-moz-focusring, 301 | [type="button"]:-moz-focusring, 302 | [type="reset"]:-moz-focusring, 303 | [type="submit"]:-moz-focusring { 304 | outline: 1px dotted ButtonText; 305 | } 306 | 307 | /** 308 | * Correct the padding in Firefox. 309 | */ 310 | 311 | fieldset { 312 | padding: 0.35em 0.75em 0.625em; 313 | } 314 | 315 | /** 316 | * 1. Correct the text wrapping in Edge and IE. 317 | * 2. Correct the color inheritance from `fieldset` elements in IE. 318 | * 3. Remove the padding so developers are not caught out when they zero out 319 | * `fieldset` elements in all browsers. 320 | */ 321 | 322 | legend { 323 | box-sizing: border-box; /* 1 */ 324 | color: inherit; /* 2 */ 325 | display: table; /* 1 */ 326 | max-width: 100%; /* 1 */ 327 | padding: 0; /* 3 */ 328 | white-space: normal; /* 1 */ 329 | } 330 | 331 | /** 332 | * 1. Add the correct display in IE 9-. 333 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 334 | */ 335 | 336 | progress { 337 | display: inline-block; /* 1 */ 338 | vertical-align: baseline; /* 2 */ 339 | } 340 | 341 | /** 342 | * Remove the default vertical scrollbar in IE. 343 | */ 344 | 345 | textarea { 346 | overflow: auto; 347 | } 348 | 349 | /** 350 | * 1. Add the correct box sizing in IE 10-. 351 | * 2. Remove the padding in IE 10-. 352 | */ 353 | 354 | [type="checkbox"], 355 | [type="radio"] { 356 | box-sizing: border-box; /* 1 */ 357 | padding: 0; /* 2 */ 358 | } 359 | 360 | /** 361 | * Correct the cursor style of increment and decrement buttons in Chrome. 362 | */ 363 | 364 | [type="number"]::-webkit-inner-spin-button, 365 | [type="number"]::-webkit-outer-spin-button { 366 | height: auto; 367 | } 368 | 369 | /** 370 | * 1. Correct the odd appearance in Chrome and Safari. 371 | * 2. Correct the outline style in Safari. 372 | */ 373 | 374 | [type="search"] { 375 | -webkit-appearance: textfield; /* 1 */ 376 | outline-offset: -2px; /* 2 */ 377 | } 378 | 379 | /** 380 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. 381 | */ 382 | 383 | [type="search"]::-webkit-search-cancel-button, 384 | [type="search"]::-webkit-search-decoration { 385 | -webkit-appearance: none; 386 | } 387 | 388 | /** 389 | * 1. Correct the inability to style clickable types in iOS and Safari. 390 | * 2. Change font properties to `inherit` in Safari. 391 | */ 392 | 393 | ::-webkit-file-upload-button { 394 | -webkit-appearance: button; /* 1 */ 395 | font: inherit; /* 2 */ 396 | } 397 | 398 | /* Interactive 399 | ========================================================================== */ 400 | 401 | /* 402 | * Add the correct display in IE 9-. 403 | * 1. Add the correct display in Edge, IE, and Firefox. 404 | */ 405 | 406 | details, /* 1 */ 407 | menu { 408 | display: block; 409 | } 410 | 411 | /* 412 | * Add the correct display in all browsers. 413 | */ 414 | 415 | summary { 416 | display: list-item; 417 | } 418 | 419 | /* Scripting 420 | ========================================================================== */ 421 | 422 | /** 423 | * Add the correct display in IE 9-. 424 | */ 425 | 426 | canvas { 427 | display: inline-block; 428 | } 429 | 430 | /** 431 | * Add the correct display in IE. 432 | */ 433 | 434 | template { 435 | display: none; 436 | } 437 | 438 | /* Hidden 439 | ========================================================================== */ 440 | 441 | /** 442 | * Add the correct display in IE 10-. 443 | */ 444 | 445 | [hidden] { 446 | display: none; 447 | } 448 | -------------------------------------------------------------------------------- /WinThumbsPreloader/WinThumbsPreloader/AboutForm.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 | Top, Right 123 | 124 | 125 | 126 | 302, 9 127 | 128 | 129 | 75, 25 130 | 131 | 132 | 133 | 1 134 | 135 | 136 | Close 137 | 138 | 139 | CloseButton 140 | 141 | 142 | System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 143 | 144 | 145 | BottomPanel 146 | 147 | 148 | 0 149 | 150 | 151 | Top, Right 152 | 153 | 154 | NoControl 155 | 156 | 157 | 221, 9 158 | 159 | 160 | 75, 25 161 | 162 | 163 | 4 164 | 165 | 166 | License 167 | 168 | 169 | LicenceButton 170 | 171 | 172 | System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 173 | 174 | 175 | BottomPanel 176 | 177 | 178 | 1 179 | 180 | 181 | Bottom 182 | 183 | 184 | 0, 315 185 | 186 | 187 | 386, 1 188 | 189 | 190 | 6 191 | 192 | 193 | BorderBottom 194 | 195 | 196 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 197 | 198 | 199 | $this 200 | 201 | 202 | 2 203 | 204 | 205 | Bottom 206 | 207 | 208 | 0, 316 209 | 210 | 211 | 386, 43 212 | 213 | 214 | 7 215 | 216 | 217 | BottomPanel 218 | 219 | 220 | System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 221 | 222 | 223 | $this 224 | 225 | 226 | 3 227 | 228 | 229 | Top 230 | 231 | 232 | 0, 68 233 | 234 | 235 | 386, 1 236 | 237 | 238 | 8 239 | 240 | 241 | BorderTop 242 | 243 | 244 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 245 | 246 | 247 | $this 248 | 249 | 250 | 1 251 | 252 | 253 | 15, 10 254 | 255 | 256 | 48, 48 257 | 258 | 259 | 8 260 | 261 | 262 | AppIconPictureBox 263 | 264 | 265 | System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 266 | 267 | 268 | HeaderPanel 269 | 270 | 271 | 0 272 | 273 | 274 | True 275 | 276 | 277 | 71, 38 278 | 279 | 280 | 117, 13 281 | 282 | 283 | 7 284 | 285 | 286 | Checking for updates... 287 | 288 | 289 | UpdateLabel 290 | 291 | 292 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 293 | 294 | 295 | HeaderPanel 296 | 297 | 298 | 1 299 | 300 | 301 | True 302 | 303 | 304 | Microsoft Sans Serif, 14.25pt 305 | 306 | 307 | 69, 14 308 | 309 | 310 | 195, 24 311 | 312 | 313 | 6 314 | 315 | 316 | WinThumbsPreloader 317 | 318 | 319 | AppNameLabel 320 | 321 | 322 | System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 323 | 324 | 325 | HeaderPanel 326 | 327 | 328 | 2 329 | 330 | 331 | Top 332 | 333 | 334 | 0, 0 335 | 336 | 337 | 386, 68 338 | 339 | 340 | 9 341 | 342 | 343 | HeaderPanel 344 | 345 | 346 | System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 347 | 348 | 349 | $this 350 | 351 | 352 | 4 353 | 354 | 355 | Fill 356 | 357 | 358 | 15, 10 359 | 360 | 361 | 20, 20, 20, 20 362 | 363 | 364 | 356, 226 365 | 366 | 367 | 3 368 | 369 | 370 | To use this app start with a right click on a folder to call the context menu and select WinThumbsPreloader > Preload thumbnails in the menu. 371 | 372 | Also you can launch the app from command line: 373 | Usage: 374 | WinThumbsPreloader.exe [-r] <path> 375 | Options: 376 | -r Recursively preload thumbnails in nested folders. 377 | -s Silent mode - don't show a progress dialog. 378 | -m Multi-Threaded mode 379 | 380 | 381 | Website: https://bruhov.com/WinThumbsPreloader 382 | Project page: https://github.com/bruhov/WinThumbsPreloader 383 | 384 | Copyright (c) 2018 Dmitry Bruhov 385 | 386 | 387 | RichTextBox 388 | 389 | 390 | System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 391 | 392 | 393 | ContentPanel 394 | 395 | 396 | 0 397 | 398 | 399 | Fill 400 | 401 | 402 | 0, 69 403 | 404 | 405 | 15, 10, 15, 10 406 | 407 | 408 | 386, 246 409 | 410 | 411 | 10 412 | 413 | 414 | ContentPanel 415 | 416 | 417 | System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 418 | 419 | 420 | $this 421 | 422 | 423 | 0 424 | 425 | 426 | True 427 | 428 | 429 | 6, 13 430 | 431 | 432 | 386, 359 433 | 434 | 435 | CenterScreen 436 | 437 | 438 | WinThumbsPreloader - About 439 | 440 | 441 | AboutForm 442 | 443 | 444 | System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 445 | 446 | --------------------------------------------------------------------------------