[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!---\nHi, \n- Before opening an issue, please search for duplicates. \n- Open this link if you don't know how: https://github.com/ChrisAnd1998/TaskbarX/issues/108\n- Please don't create duplicate issues - it takes time from the developer to clean up the unnecessary mess\n- Remember: *open only one issue per problem* and *submit only one problem per issue*\n--->\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. Windows 10]\n - Version [e.g. 1909]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!---\nHi, \n- Before opening an issue, please search for duplicates. \n- Open this link if you don't know how: https://github.com/ChrisAnd1998/TaskbarX/issues/108\n- Please don't create duplicate issues - it takes time from the developer to clean up the unnecessary mess\n- Remember: *open only one issue per problem* and *submit only one problem per issue*\n--->\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore\n\n# User-specific files\n*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Mono auto generated files\nmono_crash.*\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\n[Ww][Ii][Nn]32/\n[Aa][Rr][Mm]/\n[Aa][Rr][Mm]64/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n[Ll]ogs/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUnit\n*.VisualState.xml\nTestResult.xml\nnunit-*.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# ASP.NET Scaffolding\nScaffoldingReadMe.txt\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Coverlet is a free, cross platform Code Coverage Tool\ncoverage*[.json, .xml, .info]\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# NuGet Symbol Packages\n*.snupkg\n# The packages folder can be ignored because of Package Restore\n**/[Pp]ackages/*\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n*.appxbundle\n*.appxupload\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!?*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup/\n*.rptproj.bak\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n*.rptproj.rsuser\n*- [Bb]ackup.rdl\n*- [Bb]ackup ([0-9]).rdl\n*- [Bb]ackup ([0-9][0-9]).rdl\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# CodeRush personal settings\n.cr/personal\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output\nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor/\n\n# Local History for Visual Studio\n.localhistory/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\nMigrationBackup/\n\n# Ionide (cross platform F# VS Code tools) working folder\n.ionide/\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at chrisand1998@gmail.com. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\nWhen contributing to this repository, please first discuss the change you wish to make via issue,\nemail, or any other method with the owners of this repository before making a change. \n\nPlease note we have a code of conduct, please follow it in all your interactions with the project.\n\n## Pull Request Process\n\n1. Ensure any install or build dependencies are removed before the end of the layer when doing a \n   build.\n2. Update the README.md with details of changes to the interface, this includes new environment \n   variables, exposed ports, useful file locations and container parameters.\n3. Increase the version numbers in any examples files and the README.md to the new version that this\n   Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).\n4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you \n   do not have permission to do that, you may request the second reviewer to merge it for you.\n\n## Code of Conduct\n\n### Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n### Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n### Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n### Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n### Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at [INSERT EMAIL ADDRESS]. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n### Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "FUNDING.yml",
    "content": "custom: ['https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BLHEGFMLP5MQN&source=url']\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Chris Andriessen\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "\n# TaskbarX\n\n\n![rsz_hero2](https://user-images.githubusercontent.com/50437199/90984468-6c5a1a00-e575-11ea-9af0-a874115e07e7.png)\n  \nTaskbarX gives you control over the position of your taskbar icons.\nTaskbarX will give you an original Windows dock like feel. The icons will move to the center or user given position when an icon gets added or removed from the taskbar. You will be given the option to choose between a variety of different animations and change their speeds. The animations can be disabled if you don't like animations and want them to move in an instant. The center position can also be changed to bring your icons more to the left or right based on the center position. Currently all taskbar settings are supported including the vertical taskbar and unlimited taskbars.\nTaskbarX has been in development since 6 may 2018. Also known as FalconX and Falcon10.\n&nbsp;  \n  \n![aa4](https://user-images.githubusercontent.com/50437199/79305152-1c968280-7ef3-11ea-9eda-c97f61b758bd.png)\n&nbsp;\n\n\n## Features\n\n- 42 different Animations including \"none\"\n- Great performance (Very optimized and lightweight looping)\n- Change animation speed\n- Change custom offset position based on center\n- Center between startbutton, search, taskview etc... and left tray icons, clock etc...\n- All taskbar settings supported\n- Vertical taskbar supported\n- Unlimited monitors supported\n- Change taskbar style to Transparent, Blur and Acrylic\n- Change taskbar color and transparency\n- Hide Start button and more...\n- Taskbar segments\n- Custom start button\n  \n  \n&nbsp;\n\n\n\n## How to use TaskbarX with Windows 11?\n \nDo you want to install Windows 11 but you really like the taskbar of windows 10? Then you can actualy patch the Windows 11 Explorer to get back the old taskbar. Doing this will make TaskbarX functional again in Windows 11. https://github.com/valinet/ExplorerPatcher\n\nNOTE (for Windows 11 users):\nTaskbarX is build for Windows 10. On Windows 11 TaskbarX can only be used to change the background style of the taskbar until Windows 11 version number 10.0.22621.1265 Feb 2023. If you have a higher version than Windows 11 10.0.22621.1265 Feb 2023 TaskbarX will not work.\n  \n  &nbsp;\n\n  \n## Start icon file\n\n![start](https://user-images.githubusercontent.com/50437199/147479778-efed8dce-058e-408e-89f8-18b1bd4ecbf8.png) ![startdark](https://user-images.githubusercontent.com/50437199/147481351-0d90c00a-be6d-4ac7-bd76-d1557bd539a1.png)![startlight](https://user-images.githubusercontent.com/50437199/147481364-68a55a47-f527-4add-8ada-9f9a2a560b18.png)![startcolor](https://user-images.githubusercontent.com/50437199/147634252-ad73062f-6409-45d8-8a10-1362da4e226b.png)\n\n\nLooking for a start icon file?  \n**Start icon:** [start.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/start.ico)  \n**Start dark icon:** [startdark.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startdark.ico)  \n**Start light icon:** [startlight.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startlight.ico)  \n**Start color icon:** [startcolor.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startcolor.ico)  \n\n  &nbsp;\n  \n\n## Commandline Arguments\n\n_**-stop** will stop TaskbarX, puts all icons back to the left and resets the taskbar style.  \n**-tbs=1** will make the taskbar transparent. 2 blur, 3 acrylic, 4 transparent (with gradient), 5 opaque and 0 is disabled.  \n**-ptbo=0** will set the offset of the primary taskbar based on the center.  \n**-stbo=0** will set the offset of the secondary taskbar based on the center.  \n**-cpo=1** will only center the primary taskbar. 0 is disabled.  \n**-cso=1** will only center the secondary taskbar(s). 0 is disabled.  \n**-as=backeaseout** will set the animation style to BackEaseOut. \"none\" is instant.  \n**-asp=500** will set the speed of the animation.  \n**-lr=400** will set the refresh rate of the looper/taskbar checker.  \n**-cib=1** will set the primary taskbar position in between start, search etc.. and the tray.  \n**-ftotc=1** will update any toolbar when a tray icon gets added or removed.  \n**-sr=1920** will put the icons to the left when screen width becomes 1920px.  \n**-sr2=1920** will put the icons to the left when screen width becomes 1920px.  \n**-sr3=1920** will put the icons to the left when screen width becomes 1920px.  \n**-cfsa=1** will pause TaskbarX if a fullscreen app is running.  \n**-obas=backeaseout** will set the animation style to BackEaseOut when on battery mode.  \n**-oblr=400** will set the refresh rate of the looper/taskbar checker when on battery mode.  \n**-dct=1** will stop TaskbarX from centering the taskbar icons.  \n**-hps=1** will hide the start button on the primary monitor.  \n**-hss=1** will hide the start button on the secondary monitor.  \n**-hpt=1** will hide the tray area on the primary monitor.  \n**-hst=1** will hide the tray area on the secondary monitor.  \n**-sti=1** will show a tray icon to quickly restart and stop TaskbarX.  \n**-dtbsowm=1** will revert to the default taskbar on maximized window.  \n**-tpop=100** will set the total opacity of the primary taskbar.  \n**-tsop=100** will set the total opacity of the secondary taskbar.  \n**-rzbt=1** will revert the taskbar back to the left when the icons start overlapping with the Tray area.  \n**-tbr=5** will set the rounding of the taskbar.  \n**-tbsg=1** will enable taskbar segments. 0 is disabled and 1 is enabled.  \n**-color=0;0;0;1** will set the color of the taskbar when using taskbar styling. RGBA._\n  \n> **Example:** _C:\\Program Files (x86)\\TaskbarX\\TaskbarX.exe -tbs=1 -as=backeaseout_\n\n\n  \n&nbsp;\n\n## References\n\n- ModernWPF:  https://github.com/Kinnara/ModernWpf  \n- TaskScheduler:  https://github.com/dahall/TaskScheduler  \n- Emoji.Wpf:  https://github.com/samhocevar/emoji.wpf  \n\n&nbsp;\n\n\n## Downloads\n\n- FREE | Portable .zip package : https://chrisandriessen.nl/taskbarx \n- FREE | Rainmeter Skin : https://chrisandriessen.nl/taskbarx \n- PAID | Windows Store : https://www.microsoft.com/store/productid/9PCMZ6BXK8GH\n  \n  \n&nbsp;\n\n\n\n## Frequently Asked Questions\n\n**What versions of Windows does TaskbarX support?** TaskbarX only supports Windows 10 ([and Windows 11 by using Windows 10 taskbar](#how-to-use-taskbarx-with-windows-11)). Version 1709 and lower will have issues with the \"taskbar styling\" option but, the centering will work fine. Windows 7 does not work and is not supported. It could be working on Windows 8 but, is not officially tested and is also not supported.  \n\n\n\n**Whats the difference between the normal version and the store version?** The store version is exactly the same as the normal/free version. It's a donation sytem. The store version does give you the benefit of automatic updates and easy installing.  \n\n\n\n**Does TaskbarX change my settings or registry?** No, TaskbarX is completely portable doesn't change your settings or your registry. Closing TaskbarX will stop the centering.  \n\n\n\n**How to run TaskbarX on startup?** Once you click apply inside the Configurator a Taskschedule should be created with a delay of 3 seconds. If this doesn't work try increasing the delay to like 10 seconds or so inside the Configurator under the Taskschedule tab.  \n\n\n\n**How do i uninstall TaskbarX?** Open the \"TaskbarX Configurator\" and hit the \"Stop TaskbarX\" button. This will stop the TaskbarX process and put your icons back to the left. Then go to the \"Taskschedule\" tab and hit the \"Remove\" button. After that you can simply remove the files where you installed TaskbarX. https://www.youtube.com/watch?v=Fj-gSF_nEyo  \n\n\n\n**How to update TaskbarX?** Open the \"TaskbarX Configurator\" and hit the \"Stop TaskbarX\" button. This will stop the TaskbarX process and put your icons back to the left. Then overwrite the old TaskbarX files with the updated ones. https://www.youtube.com/watch?v=4dG8MlmeQsg  \n\n\n\n**Error Windows cannot find 'shell:AppsFolder\\Chris... after uninstalling Store version?** At the moment the Store has no option to remove a taskschedule. So it has to be done manually until Microsoft provides a solution. Here's how to fix it. In your startmenu search for \"Task Scheduler\". On the left menu click on \"Task Scheduler Library\". In the middle a list will appear. Right click on the \"TaskbarX\" or \"FalconX\" entry and click \"Delete\". https://www.youtube.com/watch?v=QtvxF1S7Dsw  \n\n\n&nbsp;\n\n\n\n## Errors\n\nThe Store version is not capable of uninstalling a taskschedule.   \nIf you get the error below then this explains how to fix it:\n\nIn your startmenu search for \"**Task Scheduler**\".  \nOn the left menu click on \"**Task Scheduler Library**\". In the middle a list will appear.  \nRight click on the \"**TaskbarX**\" or \"**FalconX**\" entry and click \"**Delete**\".  \n\n![Taskbar error](https://user-images.githubusercontent.com/50437199/80919928-e0757580-8d6c-11ea-9106-b0b1ff33f740.png)\n\n_You can also use `SCHTASKS /DELETE /TN \"TaskbarX PCNAMEUSERNAME\"` to remove the scheduled task from the command line._\n\n&nbsp;\n\n\n## Tags\ncenter taskbar, center taskbar icons, CenterTaskbar, center taskbar icons windows 10, center taskbar windows, windows center taskbar, windows center taskbar icons, center taskbar icons, windows 10 center taskbar icons, falcon10, falcon taskbar, taskbar, taskbar icons, taskbar buttons\n"
  },
  {
    "path": "TaskbarX/TaskbarX/.editorconfig",
    "content": "﻿[*.vb]\r\n\r\n# CA2101: Specify marshaling for P/Invoke string arguments\r\ndotnet_diagnostic.CA2101.severity = none\r\n\r\n# CA1401: P/Invokes should not be visible\r\ndotnet_diagnostic.CA1401.severity = none\r\n\r\n# BC42104: Variable is used before it has been assigned a value\r\ndotnet_diagnostic.BC42104.severity = none\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n    <startup>\r\n\r\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.8\"/></startup>\r\n</configuration>\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/Easings.vb",
    "content": "﻿Option Strict On\r\n\r\nPublic Delegate Function EasingDelegate(ByVal currentTime As Double, ByVal minValue As Double, ByVal maxValue As Double, ByVal duration As Double) As Double\r\n\r\nPublic Class Easings\r\n\r\n    Public Shared Function Linear(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight * currentTime / duration + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime <> duration Then\r\n            Return maxHeight * (-Math.Pow(2.0, -10.0 * currentTime / duration) + 1.0) + minHeight\r\n        End If\r\n        Return minHeight + maxHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime <> 0.0 Then\r\n            Return maxHeight * Math.Pow(2.0, 10.0 * (currentTime / duration - 1.0)) + minHeight\r\n        End If\r\n        Return minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime = 0.0 Then\r\n            Return minHeight\r\n        End If\r\n        If currentTime = duration Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * Math.Pow(2.0, 10.0 * (currentTime - 1.0)) + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim x As Double = 2.0\r\n        Dim num3 As Double = -10.0\r\n        Dim num4 As Double = currentTime - 1.0\r\n        Return num2 * (-Math.Pow(x, num3 * num4) + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.ExpoEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.ExpoEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function CircEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = 1.0\r\n        Dim num2 As Double = currentTime / duration - 1.0\r\n        currentTime = num2\r\n        Return maxHeight * Math.Sqrt(num - num2 * currentTime) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = 1.0\r\n        Dim num2 As Double = currentTime / duration\r\n        currentTime = num2\r\n        Dim sqrt As Double = Math.Sqrt(num - num2 * currentTime)\r\n        If Double.IsNaN(sqrt) Then\r\n            sqrt = 0.0\r\n        End If\r\n        Return -maxHeight * (sqrt - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return -maxHeight / 2.0 * (Math.Sqrt(1.0 - currentTime * currentTime) - 1.0) + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = 1.0\r\n        Dim num4 As Double = currentTime - 2.0\r\n        currentTime = num4\r\n        Return num2 * (Math.Sqrt(num3 - num4 * currentTime) + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.CircEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.CircEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = -maxHeight\r\n        Dim num2 As Double = currentTime / duration\r\n        currentTime = num2\r\n        Return num * num2 * (currentTime - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 1.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * (currentTime - 2.0) - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuadEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuadEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function SineEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight * Math.Sin(currentTime / duration * 1.5707963267948966) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return -maxHeight * Math.Cos(currentTime / duration * 1.5707963267948966) + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * Math.Sin(3.1415926535897931 * currentTime / 2.0) + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = 3.1415926535897931\r\n        Dim num4 As Double = currentTime - 1.0\r\n        Return num2 * (Math.Cos(num3 * num4 / 2.0) - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.SineEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.SineEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * currentTime + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.CubicEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.CubicEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = -maxHeight\r\n        Dim num2 As Double = currentTime / duration - 1.0\r\n        currentTime = num2\r\n        Return num * (num2 * currentTime * currentTime * currentTime - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime * currentTime - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuartEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuartEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * currentTime * currentTime * currentTime + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime * currentTime * currentTime + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuintEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuintEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num = 1.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.3\r\n        Dim s As Double = p / 4.0\r\n        Return maxHeight * Math.Pow(2.0, -10.0 * currentTime) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num = 1.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.3\r\n        Dim s As Double = p / 4.0\r\n        Dim x As Double = 2.0\r\n        Dim num2 As Double = 10.0\r\n        Dim num3 As Double = currentTime - 1.0\r\n        currentTime = num3\r\n        Return -(maxHeight * Math.Pow(x, num2 * num3) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num = 2.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.44999999999999996\r\n        Dim s As Double = p / 4.0\r\n        If currentTime < 1.0 Then\r\n            Dim num2 As Double = -0.5\r\n            Dim x As Double = 2.0\r\n            Dim num3 As Double = 10.0\r\n            Dim num4 As Double = currentTime - 1.0\r\n            currentTime = num4\r\n            Return num2 * (maxHeight * Math.Pow(x, num3 * num4) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight\r\n        End If\r\n        Dim x2 As Double = 2.0\r\n        Dim num5 As Double = -10.0\r\n        Dim num6 As Double = currentTime - 1.0\r\n        currentTime = num6\r\n        Return maxHeight * Math.Pow(x2, num5 * num6) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) * 0.5 + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.ElasticEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.ElasticEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num < 0.36363636363636365 Then\r\n            Return maxHeight * (7.5625 * currentTime * currentTime) + minHeight\r\n        End If\r\n        If currentTime < 0.72727272727272729 Then\r\n            Dim num2 As Double = 7.5625\r\n            Dim num3 As Double = currentTime - 0.54545454545454541\r\n            currentTime = num3\r\n            Return maxHeight * (num2 * num3 * currentTime + 0.75) + minHeight\r\n        End If\r\n        If currentTime < 0.90909090909090906 Then\r\n            Dim num4 As Double = 7.5625\r\n            Dim num5 As Double = currentTime - 0.81818181818181823\r\n            currentTime = num5\r\n            Return maxHeight * (num4 * num5 * currentTime + 0.9375) + minHeight\r\n        End If\r\n        Dim num6 As Double = 7.5625\r\n        Dim num7 As Double = currentTime - 0.95454545454545459\r\n        currentTime = num7\r\n        Return maxHeight * (num6 * num7 * currentTime + 0.984375) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight - Easings.BounceEaseOut(duration - currentTime, 0.0, maxHeight, duration) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BounceEaseIn(currentTime * 2.0, 0.0, maxHeight, duration) * 0.5 + minHeight\r\n        End If\r\n        Return Easings.BounceEaseOut(currentTime * 2.0 - duration, 0.0, maxHeight, duration) * 0.5 + maxHeight * 0.5 + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BounceEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.BounceEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function BackEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * (2.70158 * currentTime + 1.70158) + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BackEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * (2.70158 * currentTime - 1.70158) + minHeight\r\n\r\n    End Function\r\n\r\n    Public Shared Function BackEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim s As Double = 1.70158\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Dim num2 As Double = maxHeight / 2.0\r\n            Dim num3 As Double = currentTime * currentTime\r\n            Dim num4 As Double = s * 1.525\r\n            s = num4\r\n            Return num2 * (num3 * ((num4 + 1.0) * currentTime - s)) + minHeight\r\n        End If\r\n        Dim num5 As Double = maxHeight / 2.0\r\n        Dim num6 As Double = currentTime - 2.0\r\n        currentTime = num6\r\n        Dim num7 As Double = num6 * currentTime\r\n        Dim num8 As Double = s * 1.525\r\n        s = num8\r\n        Return num5 * (num7 * ((num8 + 1.0) * currentTime + s) + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BackEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BackEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.BackEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/MSAA.vb",
    "content": "﻿Option Strict On\r\n\r\nImports System.Runtime.InteropServices\r\nImports System.Text\r\nImports Accessibility\r\n\r\nPublic Class MSAA\r\n\r\n    <DllImport(\"oleacc.dll\")>\r\n    Public Shared Function WindowFromAccessibleObject(ByVal pacc As IAccessible, ByRef phwnd As IntPtr) As UInteger\r\n\r\n    End Function\r\n\r\n    <DllImport(\"oleacc.dll\")>\r\n    Public Shared Function AccessibleChildren(ByVal paccContainer As IAccessible, ByVal iChildStart As Integer, ByVal cChildren As Integer, <[Out]()> ByVal rgvarChildren() As Object, ByRef pcObtained As Integer) As UInteger\r\n\r\n    End Function\r\n\r\n    Private Declare Function AccessibleObjectFromWindow Lib \"oleacc\" (ByVal Hwnd As Int32, ByVal dwId As Int32, ByRef riid As Guid, <MarshalAs(UnmanagedType.IUnknown)> ByRef ppvObject As Object) As Int32\r\n\r\n    <DllImport(\"oleacc.dll\")>\r\n    Public Shared Function GetStateText(ByVal dwStateBit As UInteger, <Out> ByVal lpszStateBit As StringBuilder, ByVal cchStateBitMax As UInteger) As UInteger\r\n    End Function\r\n\r\n    Public Shared guidAccessible As New Guid(\"{618736E0-3C3D-11CF-810C-00AA00389B71}\")\r\n\r\n    Public Shared Function GetAccessibleChildren(ByVal objAccessible As IAccessible) As IAccessible()\r\n        Dim childCount As Integer\r\n        Try\r\n            childCount = objAccessible.accChildCount\r\n        Catch ex As Exception\r\n            childCount = 0\r\n        End Try\r\n\r\n        Dim accObjects = New IAccessible((childCount) - 1) {}\r\n        Dim count As Integer = 0\r\n\r\n        ''Console.WriteLine(count)\r\n\r\n        If (childCount <> 0) Then\r\n\r\n            AccessibleChildren(objAccessible, 0, childCount, accObjects, count)\r\n        End If\r\n\r\n        Return accObjects\r\n    End Function\r\n\r\n    Public Shared Function GetAccessibleObjectFromHandle(ByVal hwnd As IntPtr) As IAccessible\r\n        Dim accObject As Object = New Object\r\n        Dim objAccessible As IAccessible = Nothing\r\n        If (hwnd <> CType(0, IntPtr)) Then\r\n            AccessibleObjectFromWindow(CInt(CType(hwnd, IntPtr)), 0, guidAccessible, accObject)\r\n            objAccessible = CType(accObject, IAccessible)\r\n        End If\r\n\r\n        Return objAccessible\r\n    End Function\r\n\r\n    Public Shared Function GetStateTextFunc(ByVal stateID As UInteger) As String\r\n        Dim maxLength As UInteger = 1024\r\n        Dim focusableStateText = New StringBuilder(CInt(maxLength))\r\n        Dim sizeableStateText = New StringBuilder(CInt(maxLength))\r\n        Dim moveableStateText = New StringBuilder(CInt(maxLength))\r\n        Dim invisibleStateText = New StringBuilder(CInt(maxLength))\r\n        Dim pressedStateText = New StringBuilder(CInt(maxLength))\r\n        Dim hasPopupStateText = New StringBuilder(CInt(maxLength))\r\n\r\n        If stateID = (MSAAStateConstants.STATE_SYSTEM_INVISIBLE Or MSAAStateConstants.STATE_SYSTEM_FOCUSABLE Or MSAAStateConstants.STATE_SYSTEM_HASPOPUP) Then\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_INVISIBLE, invisibleStateText, maxLength)\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_HASPOPUP, hasPopupStateText, maxLength)\r\n\r\n            Return invisibleStateText.ToString & \",\" & focusableStateText.ToString & \",\" & hasPopupStateText.ToString\r\n        End If\r\n\r\n        If stateID = (MSAAStateConstants.STATE_SYSTEM_PRESSED Or MSAAStateConstants.STATE_SYSTEM_INVISIBLE Or MSAAStateConstants.STATE_SYSTEM_FOCUSABLE) Then\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_PRESSED, pressedStateText, maxLength)\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_INVISIBLE, invisibleStateText, maxLength)\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_PRESSED, focusableStateText, maxLength)\r\n\r\n            Return pressedStateText.ToString & \",\" & focusableStateText.ToString & \",\" & focusableStateText.ToString\r\n        End If\r\n\r\n        If stateID = (MSAAStateConstants.STATE_SYSTEM_FOCUSABLE Or MSAAStateConstants.STATE_SYSTEM_HASPOPUP) Then\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_HASPOPUP, hasPopupStateText, maxLength)\r\n\r\n            Return focusableStateText.ToString & \",\" & hasPopupStateText.ToString\r\n        End If\r\n\r\n        If stateID = (MSAAStateConstants.STATE_SYSTEM_FOCUSABLE) Then\r\n            GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)\r\n            Return focusableStateText.ToString\r\n        End If\r\n\r\n        Dim stateText = New StringBuilder(CInt(maxLength))\r\n        GetStateText(stateID, stateText, maxLength)\r\n        Return stateText.ToString()\r\n    End Function\r\n\r\nEnd Class\r\n\r\nClass MSAAStateConstants\r\n\r\n    Public Shared STATE_SYSTEM_ALERT_HIGH As UInteger = 268435456\r\n\r\n    Public Shared STATE_SYSTEM_ALERT_LOW As UInteger = 67108864\r\n\r\n    Public Shared STATE_SYSTEM_ALERT_MEDIUM As UInteger = 134217728\r\n\r\n    Public Shared STATE_SYSTEM_ANIMATED As UInteger = 16384\r\n\r\n    Public Shared STATE_SYSTEM_BUSY As UInteger = 2048\r\n\r\n    Public Shared STATE_SYSTEM_CHECKED As UInteger = 16\r\n\r\n    Public Shared STATE_SYSTEM_COLLAPSED As UInteger = 1024\r\n\r\n    Public Shared STATE_SYSTEM_DEFAULT As UInteger = 256\r\n\r\n    Public Shared STATE_SYSTEM_EXPANDED As UInteger = 512\r\n\r\n    Public Shared STATE_SYSTEM_EXTSELECTABLE As UInteger = 33554432\r\n\r\n    Public Shared STATE_SYSTEM_FLOATING As UInteger = 4096\r\n\r\n    Public Shared STATE_SYSTEM_FOCUSABLE As UInteger = 1048576\r\n\r\n    Public Shared STATE_SYSTEM_FOCUSED As UInteger = 4\r\n\r\n    Public Shared STATE_SYSTEM_HASPOPUP As UInteger = 1073741824\r\n\r\n    Public Shared STATE_SYSTEM_HOTTRACKED As UInteger = 128\r\n\r\n    Public Shared STATE_SYSTEM_INVISIBLE As UInteger = 32768\r\n\r\n    Public Shared STATE_SYSTEM_LINKED As UInteger = 4194304\r\n\r\n    Public Shared STATE_SYSTEM_MARQUEED As UInteger = 8192\r\n\r\n    Public Shared STATE_SYSTEM_MIXED As UInteger = 32\r\n\r\n    Public Shared STATE_SYSTEM_MOVEABLE As UInteger = 262144\r\n\r\n    Public Shared STATE_SYSTEM_MULTISELECTABLE As UInteger = 16777216\r\n\r\n    Public Shared STATE_SYSTEM_NORMAL As UInteger = 0\r\n\r\n    Public Shared STATE_SYSTEM_OFFSCREEN As UInteger = 65536\r\n\r\n    Public Shared STATE_SYSTEM_PRESSED As UInteger = 8\r\n\r\n    Public Shared STATE_SYSTEM_READONLY As UInteger = 64\r\n\r\n    Public Shared STATE_SYSTEM_SELECTABLE As UInteger = 2097152\r\n\r\n    Public Shared STATE_SYSTEM_SELECTED As UInteger = 2\r\n\r\n    Public Shared STATE_SYSTEM_SELFVOICING As UInteger = 524288\r\n\r\n    Public Shared STATE_SYSTEM_SIZEABLE As UInteger = 131072\r\n\r\n    Public Shared STATE_SYSTEM_TRAVERSED As UInteger = 8388608\r\n\r\n    Public Shared STATE_SYSTEM_UNAVAILABLE As UInteger = 1\r\n\r\n    Public Shared STATE_SYSTEM_VALID As UInteger = 536870911\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/Main.vb",
    "content": "﻿Option Strict On\r\n\r\n\r\nImports System.Text\r\nImports System.Threading\r\n\r\n\r\nPublic Class Main\r\n\r\n    Public Shared noty As New NotifyIcon\r\n\r\n    Public Shared Sub Main()\r\n        Try\r\n\r\n\r\n            'Set default settings\r\n            Settings.TaskbarStyle = 0\r\n            Settings.PrimaryTaskbarOffset = 0\r\n            Settings.SecondaryTaskbarOffset = 0\r\n            Settings.CenterPrimaryOnly = 0\r\n            Settings.CenterSecondaryOnly = 0\r\n            Settings.AnimationStyle = \"cubiceaseinout\"\r\n            Settings.AnimationSpeed = 300\r\n            Settings.LoopRefreshRate = 400\r\n            Settings.CenterInBetween = 0\r\n            Settings.DontCenterTaskbar = 0\r\n            Settings.FixToolbarsOnTrayChange = 1\r\n            Settings.OnBatteryAnimationStyle = \"cubiceaseinout\"\r\n            Settings.OnBatteryLoopRefreshRate = 400\r\n            Settings.RevertZeroBeyondTray = 1\r\n            Settings.TaskbarRounding = 0\r\n            Settings.TaskbarSegments = 0\r\n\r\n            Dim stopgiven As Boolean = False\r\n\r\n            'Read the arguments for the settings\r\n            Dim arguments() As String = Environment.GetCommandLineArgs\r\n            For Each argument In arguments\r\n                Dim val() As String = Split(argument, \"=\")\r\n                If argument.Contains(\"-stop\") Then\r\n                    stopgiven = True\r\n                End If\r\n                If argument.Contains(\"-showstartmenu\") Then\r\n                    Win32.ShowStartMenu()\r\n                    End\r\n                End If\r\n                If argument.Contains(\"-console=\") Then\r\n                    Win32.AllocConsole()\r\n                    Settings.ConsoleEnabled = 1\r\n                End If\r\n                If argument.Contains(\"-tbs=\") Then\r\n                    Settings.TaskbarStyle = CInt(val(1))\r\n                End If\r\n\r\n                If argument.Contains(\"-color=\") Then\r\n                    Dim colorval As String = val(1)\r\n                    Dim colorsep = colorval.Split(CType(\";\", Char()))\r\n\r\n                    Settings.TaskbarStyleRed = CInt(colorsep(0))\r\n                    Settings.TaskbarStyleGreen = CInt(colorsep(1))\r\n                    Settings.TaskbarStyleBlue = CInt(colorsep(2))\r\n                    Settings.TaskbarStyleAlpha = CInt(colorsep(3))\r\n                End If\r\n\r\n                If argument.Contains(\"-ptbo=\") Then\r\n                    Settings.PrimaryTaskbarOffset = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-stbo=\") Then\r\n                    Settings.SecondaryTaskbarOffset = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-cpo=\") Then\r\n                    Settings.CenterPrimaryOnly = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-cso=\") Then\r\n                    Settings.CenterSecondaryOnly = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-as=\") Then\r\n                    Settings.AnimationStyle = CType(val(1), String)\r\n                End If\r\n                If argument.Contains(\"-asp=\") Then\r\n                    Settings.AnimationSpeed = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-lr=\") Then\r\n                    Settings.LoopRefreshRate = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-cib=\") Then\r\n                    Settings.CenterInBetween = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-obas=\") Then\r\n                    Settings.OnBatteryAnimationStyle = CType(val(1), String)\r\n                End If\r\n                If argument.Contains(\"-oblr=\") Then\r\n                    Settings.OnBatteryLoopRefreshRate = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-ftotc=\") Then\r\n                    Settings.FixToolbarsOnTrayChange = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-rzbt=\") Then\r\n                    Settings.RevertZeroBeyondTray = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-sr=\") Then\r\n                    Settings.SkipResolution = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-sr2=\") Then\r\n                    Settings.SkipResolution2 = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-sr3=\") Then\r\n                    Settings.SkipResolution3 = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-dtbsowm=\") Then\r\n                    Settings.DefaultTaskbarStyleOnWinMax = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-cfsa=\") Then\r\n                    Settings.CheckFullscreenApp = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-dct=\") Then\r\n                    Settings.DontCenterTaskbar = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-hps=\") Then\r\n                    Settings.HidePrimaryStartButton = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-hss=\") Then\r\n                    Settings.HideSecondaryStartButton = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-hpt=\") Then\r\n                    Settings.HidePrimaryNotifyWnd = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-hst=\") Then\r\n                    Settings.HideSecondaryNotifyWnd = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-sti=\") Then\r\n                    ''Settings.ShowTrayIcon = CInt(val(1))\r\n                    Settings.ShowTrayIcon = CInt(0)\r\n                End If\r\n                If argument.Contains(\"-tbsom=\") Then\r\n                    Settings.TaskbarStyleOnMax = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-stsb=\") Then\r\n                    Settings.StickyStartButton = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-tpop=\") Then\r\n                    Settings.TotalPrimaryOpacity = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-tsop=\") Then\r\n                    Settings.TotalSecondaryOpacity = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-tbr=\") Then\r\n                    Settings.TaskbarRounding = CInt(val(1))\r\n                End If\r\n                If argument.Contains(\"-tbsg=\") Then\r\n                    Settings.TaskbarSegments = CInt(val(1))\r\n                End If\r\n            Next\r\n\r\n            'Kill every other running instance of TaskbarX\r\n            Try\r\n                For Each prog As Process In Process.GetProcessesByName(\"TaskbarX\")\r\n                    If Not prog.Id = Process.GetCurrentProcess.Id Then\r\n                        prog.Kill()\r\n                    End If\r\n                Next\r\n            Catch\r\n            End Try\r\n\r\n            'If animation speed is lower than 1 then make it 1. Otherwise it will give an error.\r\n            If Settings.AnimationSpeed <= 1 Then\r\n                Settings.AnimationSpeed = 1\r\n            End If\r\n\r\n            'Makes the animations run smoother\r\n            Dim currentProcess As Process = Process.GetCurrentProcess\r\n            currentProcess.PriorityClass = ProcessPriorityClass.Idle\r\n\r\n            'Prevent wrong position calculations\r\n            Win32.SetProcessDpiAwareness(Win32.PROCESS_DPI_AWARENESS.Process_Per_Monitor_DPI_Aware)\r\n\r\n            'Wait for Shell_TrayWnd\r\n            Dim Handle As IntPtr\r\n            Do\r\n                Console.WriteLine(\"Waiting for Shell_TrayWnd\")\r\n                Handle = Nothing\r\n                Thread.Sleep(250)\r\n                Dim Shell_TrayWnd = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n                Dim TrayNotifyWnd = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), \"TrayNotifyWnd\", Nothing)\r\n                Dim ReBarWindow32 = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), \"ReBarWindow32\", Nothing)\r\n                Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), \"MSTaskSwWClass\", Nothing)\r\n                Dim MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n                Handle = MSTaskListWClass\r\n                'Lock the Taskbar\r\n                '  Win32.PostMessage(Shell_TrayWnd, CUInt(&H111), CType(424, IntPtr), CType(vbNullString, IntPtr))\r\n            Loop Until Not Handle = Nothing\r\n\r\n\r\n            Dim Win11Taskbar = Win32.FindWindowEx(Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr)), CType(0, IntPtr), \"Windows.UI.Composition.DesktopWindowContentBridge\", Nothing)\r\n            If Not Win11Taskbar = CType(0, IntPtr) Then\r\n                'Windows 11 Taskbar present\r\n                Settings.DontCenterTaskbar = CInt(Val(1))\r\n            End If\r\n\r\n\r\n            If stopgiven = True Then\r\n                noty.Visible = False\r\n                TaskbarCenter.RevertToZero()\r\n                ResetTaskbarStyle()\r\n                End\r\n            End If\r\n\r\n\r\n\r\n            If Settings.ShowTrayIcon = 1 Then\r\n                TrayIconBuster.TrayIconBuster.RemovePhantomIcons()\r\n            End If\r\n\r\n            'Just empty startup memory before starting\r\n            ClearMemory()\r\n\r\n            'Reset the taskbar style...\r\n            ResetTaskbarStyle()\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n            If Settings.ShowTrayIcon = 1 Then\r\n\r\n\r\n                noty.Text = \"TaskbarX (L = Restart) (M = Config) (R = Stop)\"\r\n                noty.Icon = My.Resources.icon\r\n                noty.Visible = True\r\n\r\n\r\n            End If\r\n\r\n            AddHandler noty.MouseClick, AddressOf MnuRef_Click\r\n\r\n\r\n\r\n            'Start the TaskbarCenterer\r\n            If Not Settings.DontCenterTaskbar = 1 Then\r\n                Dim t1 As Thread = New Thread(AddressOf TaskbarCenter.TaskbarCenterer)\r\n                t1.Start()\r\n            End If\r\n\r\n            'Start the TaskbarStyler if enabled\r\n            If Settings.TaskbarStyle = 1 Or Settings.TaskbarStyle = 2 Or Settings.TaskbarStyle = 3 Or Settings.TaskbarStyle = 4 Or Settings.TaskbarStyle = 5 Then\r\n                Dim t2 As Thread = New Thread(AddressOf TaskbarStyle.TaskbarStyler)\r\n                t2.Start()\r\n            End If\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n    End Sub\r\n\r\n\r\n\r\n\r\n    Public Shared Sub Toaster(ByVal message As String)\r\n        noty.BalloonTipTitle = \"TaskbarX\"\r\n        noty.BalloonTipText = message\r\n        noty.Visible = True\r\n        noty.ShowBalloonTip(3000)\r\n    End Sub\r\n\r\n    Public Shared Sub MnuRef_Click(sender As Object, e As MouseEventArgs)\r\n\r\n        If (e.Button = MouseButtons.Left) Then\r\n            noty.Visible = False\r\n            Application.Restart()\r\n        ElseIf (e.Button = MouseButtons.Right) Then\r\n            noty.Visible = False\r\n            TaskbarCenter.RevertToZero()\r\n            ResetTaskbarStyle()\r\n            End\r\n        ElseIf (e.Button = MouseButtons.Middle) Then\r\n            If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n                Try\r\n                    Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {\r\n                        .WindowStyle = ProcessWindowStyle.Hidden,\r\n                        .FileName = \"cmd.exe\",\r\n                        .Arguments = \" /c start shell:AppsFolder\\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarXGUI\"\r\n                    }\r\n                    Process.Start(processInfo)\r\n                Catch\r\n                End Try\r\n            Else\r\n                Try\r\n                    System.Diagnostics.Process.Start(\"TaskbarX Configurator.exe\")\r\n                Catch\r\n                End Try\r\n            End If\r\n        End If\r\n\r\n    End Sub\r\n\r\n#Region \"Commands\"\r\n\r\n    Public Declare Function EnumWindows Lib \"user32\" (ByVal Adress As CallBack, ByVal y As Integer) As Integer\r\n\r\n    Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n\r\n    Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)\r\n\r\n    Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)\r\n        windowHandles.Clear()\r\n        EnumWindows(AddressOf Enumerator, 0)\r\n\r\n        Dim maintaskbarfound As Boolean = False\r\n        Dim sectaskbarfound As Boolean = False\r\n\r\n        For Each Taskbar In windowHandles\r\n            Dim sClassName As New StringBuilder(\"\", 256)\r\n            Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n            If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                maintaskbarfound = True\r\n            End If\r\n            If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                sectaskbarfound = True\r\n            End If\r\n            Console.WriteLine(\"=\" & maintaskbarfound)\r\n        Next\r\n\r\n        If maintaskbarfound = False Then\r\n            Try\r\n                windowHandles.Add(Win32.FindWindow(\"Shell_TrayWnd\", Nothing))\r\n            Catch\r\n            End Try\r\n        End If\r\n\r\n        If sectaskbarfound = False Then\r\n            If Screen.AllScreens.Count >= 2 Then\r\n                ''MsgBox(Screen.AllScreens.Count)\r\n                Try\r\n                    windowHandles.Add(Win32.FindWindow(\"Shell_SecondaryTrayWnd\", Nothing))\r\n                Catch\r\n                End Try\r\n            End If\r\n        End If\r\n\r\n\r\n        Return ActiveWindows\r\n    End Function\r\n\r\n    Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n        Dim sClassName As New StringBuilder(\"\", 256)\r\n        Call Win32.GetClassName(hwnd, sClassName, 256)\r\n        If sClassName.ToString = \"Shell_TrayWnd\" Or sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n            windowHandles.Add(hwnd)\r\n        End If\r\n        Return True\r\n    End Function\r\n\r\n    Public Shared windowHandles As ArrayList = New ArrayList()\r\n\r\n    Public Shared Sub ResetTaskbarStyle()\r\n\r\n\r\n\r\n        GetActiveWindows()\r\n\r\n\r\n\r\n        Dim trays As New ArrayList\r\n        For Each trayWnd As IntPtr In windowHandles\r\n            ''Console.WriteLine(trayWnd)\r\n            trays.Add(trayWnd)\r\n        Next\r\n\r\n        For Each tray As IntPtr In trays\r\n            Dim trayptr As IntPtr = tray\r\n\r\n\r\n            Win32.SendMessage(trayptr, Win32.WM_THEMECHANGED, True, 0)\r\n            Win32.SendMessage(trayptr, Win32.WM_DWMCOLORIZATIONCOLORCHANGED, True, 0)\r\n            Win32.SendMessage(trayptr, Win32.WM_DWMCOMPOSITIONCHANGED, True, 0)\r\n\r\n\r\n\r\n            Dim tt As New Win32.RECT\r\n            Win32.GetClientRect(trayptr, tt)\r\n\r\n\r\n\r\n            ''Win32.SetWindowRgn(CType(trayptr, IntPtr), Win32.CreateRoundRectRgn(-1, -1, tt.Right + 1, tt.Bottom - tt.Top + 1, -1, -1), True)\r\n            Win32.SetWindowRgn(CType(trayptr, IntPtr), Win32.CreateRectRgn(tt.Left, tt.Top, tt.Right, tt.Bottom), True)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        Next\r\n\r\n\r\n    End Sub\r\n\r\n    Public Shared Sub RestartExplorer()\r\n        For Each MyProcess In Process.GetProcessesByName(\"explorer\")\r\n            MyProcess.Kill()\r\n        Next\r\n    End Sub\r\n\r\n    Public Shared Function ClearMemory() As Int32\r\n        GC.Collect()\r\n        GC.WaitForPendingFinalizers()\r\n        GC.Collect()\r\n        Return Win32.SetProcessWorkingSetSize(Diagnostics.Process.GetCurrentProcess.Handle, -1, -1)\r\n    End Function\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n#End Region\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Application.Designer.vb",
    "content": "﻿'------------------------------------------------------------------------------\r\n' <auto-generated>\r\n'     This code was generated by a tool.\r\n'     Runtime Version:4.0.30319.42000\r\n'\r\n'     Changes to this file may cause incorrect behavior and will be lost if\r\n'     the code is regenerated.\r\n' </auto-generated>\r\n'------------------------------------------------------------------------------\r\n\r\nOption Strict On\r\nOption Explicit On\r\n\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Application.myapp",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<MyApplicationData xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <MySubMain>false</MySubMain>\r\n  <SingleInstance>false</SingleInstance>\r\n  <ShutdownMode>0</ShutdownMode>\r\n  <EnableVisualStyles>true</EnableVisualStyles>\r\n  <AuthenticationMode>0</AuthenticationMode>\r\n  <SaveMySettingsOnExit>true</SaveMySettingsOnExit>\r\n</MyApplicationData>"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/AssemblyInfo.vb",
    "content": "﻿Imports System.Reflection\r\nImports System.Runtime.InteropServices\r\n\r\n' General Information about an assembly is controlled through the following\r\n' set of attributes. Change these attribute values to modify the information\r\n' associated with an assembly.\r\n\r\n' Review the values of the assembly attributes\r\n\r\n<Assembly: AssemblyTitle(\"TaskbarX\")>\r\n<Assembly: AssemblyDescription(\"Center taskbar icons.\")>\r\n<Assembly: AssemblyCompany(\"Chris Andriessen\")>\r\n<Assembly: AssemblyProduct(\"TaskbarX\")>\r\n<Assembly: AssemblyCopyright(\"Copyright © Chris Andriessen 2022\")>\r\n<Assembly: AssemblyTrademark(\"\")>\r\n\r\n<Assembly: ComVisible(False)>\r\n\r\n'The following GUID is for the ID of the typelib if this project is exposed to COM\r\n<Assembly: Guid(\"0d2b7f17-f491-4d2d-ae31-74b70cd2def2\")>\r\n\r\n' Version information for an assembly consists of the following four values:\r\n'\r\n'      Major Version\r\n'      Minor Version\r\n'      Build Number\r\n'      Revision\r\n'\r\n' You can specify all the values or you can default the Build and Revision Numbers\r\n' by using the '*' as shown below:\r\n' <Assembly: AssemblyVersion(\"1.0.*\")>\r\n\r\n<Assembly: AssemblyVersion(\"1.7.8.0\")>\r\n<Assembly: AssemblyFileVersion(\"1.7.8.0\")>"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Resources.Designer.vb",
    "content": "﻿'------------------------------------------------------------------------------\r\n' <auto-generated>\r\n'     This code was generated by a tool.\r\n'     Runtime Version:4.0.30319.42000\r\n'\r\n'     Changes to this file may cause incorrect behavior and will be lost if\r\n'     the code is regenerated.\r\n' </auto-generated>\r\n'------------------------------------------------------------------------------\r\n\r\nOption Strict On\r\nOption Explicit On\r\n\r\nImports System\r\n\r\nNamespace My.Resources\r\n    \r\n    'This class was auto-generated by the StronglyTypedResourceBuilder\r\n    'class via a tool like ResGen or Visual Studio.\r\n    'To add or remove a member, edit your .ResX file then rerun ResGen\r\n    'with the /str option, or rebuild your VS project.\r\n    '''<summary>\r\n    '''  A strongly-typed resource class, for looking up localized strings, etc.\r\n    '''</summary>\r\n    <Global.System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\"),  _\r\n     Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _\r\n     Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(),  _\r\n     Global.Microsoft.VisualBasic.HideModuleNameAttribute()>  _\r\n    Friend Module Resources\r\n        \r\n        Private resourceMan As Global.System.Resources.ResourceManager\r\n        \r\n        Private resourceCulture As Global.System.Globalization.CultureInfo\r\n        \r\n        '''<summary>\r\n        '''  Returns the cached ResourceManager instance used by this class.\r\n        '''</summary>\r\n        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\n        Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager\r\n            Get\r\n                If Object.ReferenceEquals(resourceMan, Nothing) Then\r\n                    Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager(\"TaskbarX.Resources\", GetType(Resources).Assembly)\r\n                    resourceMan = temp\r\n                End If\r\n                Return resourceMan\r\n            End Get\r\n        End Property\r\n        \r\n        '''<summary>\r\n        '''  Overrides the current thread's CurrentUICulture property for all\r\n        '''  resource lookups using this strongly typed resource class.\r\n        '''</summary>\r\n        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\n        Friend Property Culture() As Global.System.Globalization.CultureInfo\r\n            Get\r\n                Return resourceCulture\r\n            End Get\r\n            Set\r\n                resourceCulture = value\r\n            End Set\r\n        End Property\r\n        \r\n        '''<summary>\r\n        '''  Looks up a localized resource of type System.Drawing.Icon similar to (Icon).\r\n        '''</summary>\r\n        Friend ReadOnly Property icon() As System.Drawing.Icon\r\n            Get\r\n                Dim obj As Object = ResourceManager.GetObject(\"icon\", resourceCulture)\r\n                Return CType(obj,System.Drawing.Icon)\r\n            End Get\r\n        End Property\r\n    End Module\r\nEnd Namespace\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"icon\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Settings.Designer.vb",
    "content": "﻿'------------------------------------------------------------------------------\r\n' <auto-generated>\r\n'     This code was generated by a tool.\r\n'     Runtime Version:4.0.30319.42000\r\n'\r\n'     Changes to this file may cause incorrect behavior and will be lost if\r\n'     the code is regenerated.\r\n' </auto-generated>\r\n'------------------------------------------------------------------------------\r\n\r\nOption Strict On\r\nOption Explicit On\r\n\r\n\r\nNamespace My\r\n    \r\n    <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(),  _\r\n     Global.System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"17.0.1.0\"),  _\r\n     Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\n    Partial Friend NotInheritable Class MySettings\r\n        Inherits Global.System.Configuration.ApplicationSettingsBase\r\n        \r\n        Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)\r\n        \r\n#Region \"My.Settings Auto-Save Functionality\"\r\n#If _MyType = \"WindowsForms\" Then\r\n    Private Shared addedHandler As Boolean\r\n\r\n    Private Shared addedHandlerLockObject As New Object\r\n\r\n    <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _\r\n    Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)\r\n        If My.Application.SaveMySettingsOnExit Then\r\n            My.Settings.Save()\r\n        End If\r\n    End Sub\r\n#End If\r\n#End Region\r\n        \r\n        Public Shared ReadOnly Property [Default]() As MySettings\r\n            Get\r\n                \r\n#If _MyType = \"WindowsForms\" Then\r\n               If Not addedHandler Then\r\n                    SyncLock addedHandlerLockObject\r\n                        If Not addedHandler Then\r\n                            AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings\r\n                            addedHandler = True\r\n                        End If\r\n                    End SyncLock\r\n                End If\r\n#End If\r\n                Return defaultInstance\r\n            End Get\r\n        End Property\r\n    End Class\r\nEnd Namespace\r\n\r\nNamespace My\r\n    \r\n    <Global.Microsoft.VisualBasic.HideModuleNameAttribute(),  _\r\n     Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _\r\n     Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()>  _\r\n    Friend Module MySettingsProperty\r\n        \r\n        <Global.System.ComponentModel.Design.HelpKeywordAttribute(\"My.Settings\")>  _\r\n        Friend ReadOnly Property Settings() As Global.TaskbarX.My.MySettings\r\n            Get\r\n                Return Global.TaskbarX.My.MySettings.Default\r\n            End Get\r\n        End Property\r\n    End Module\r\nEnd Namespace\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\" UseMySettingsClassName=\"true\">\r\n  <Profiles>\r\n    <Profile Name=\"(Default)\" />\r\n  </Profiles>\r\n  <Settings />\r\n</SettingsFile>\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/My Project/app.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\r\n  <assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\"/>\r\n  <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\r\n    <security>\r\n      <requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\r\n        <!-- UAC Manifest Options\r\n             If you want to change the Windows User Account Control level replace the \r\n             requestedExecutionLevel node with one of the following.\r\n\r\n        <requestedExecutionLevel  level=\"asInvoker\" uiAccess=\"false\" />\r\n        <requestedExecutionLevel  level=\"requireAdministrator\" uiAccess=\"false\" />\r\n        <requestedExecutionLevel  level=\"highestAvailable\" uiAccess=\"false\" />\r\n\r\n            Specifying requestedExecutionLevel element will disable file and registry virtualization. \r\n            Remove this element if your application requires this virtualization for backwards\r\n            compatibility.\r\n        -->\r\n        <requestedExecutionLevel level=\"asInvoker\" uiAccess=\"false\" />\r\n      </requestedPrivileges>\r\n    </security>\r\n  </trustInfo>\r\n\r\n  <compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\r\n    <application>\r\n      <!-- A list of the Windows versions that this application has been tested on\r\n           and is designed to work with. Uncomment the appropriate elements\r\n           and Windows will automatically select the most compatible environment. -->\r\n\r\n      <!-- Windows Vista -->\r\n      <!--<supportedOS Id=\"{e2011457-1546-43c5-a5fe-008deee3d3f0}\" />-->\r\n\r\n      <!-- Windows 7 -->\r\n      <!--<supportedOS Id=\"{35138b9a-5d96-4fbd-8e2d-a2440225f93a}\" />-->\r\n\r\n      <!-- Windows 8 -->\r\n      <!--<supportedOS Id=\"{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}\" />-->\r\n\r\n      <!-- Windows 8.1 -->\r\n      <!--<supportedOS Id=\"{1f676c76-80e1-4239-95bb-83d0f6d0da78}\" />-->\r\n\r\n      <!-- Windows 10 -->\r\n      <!--<supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />-->\r\n\r\n    </application>\r\n  </compatibility>\r\n\r\n  <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher\r\n       DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need \r\n       to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should \r\n       also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->\r\n  <!--\r\n  <application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\r\n    <windowsSettings>\r\n      <dpiAware xmlns=\"http://schemas.microsoft.com/SMI/2005/WindowsSettings\">true</dpiAware>\r\n    </windowsSettings>\r\n  </application>\r\n  -->\r\n\r\n  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->\r\n  <!--\r\n  <dependency>\r\n    <dependentAssembly>\r\n      <assemblyIdentity\r\n          type=\"win32\"\r\n          name=\"Microsoft.Windows.Common-Controls\"\r\n          version=\"6.0.0.0\"\r\n          processorArchitecture=\"*\"\r\n          publicKeyToken=\"6595b64144ccf1df\"\r\n          language=\"*\"\r\n        />\r\n    </dependentAssembly>\r\n  </dependency>\r\n  -->\r\n\r\n</assembly>\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/Settings.vb",
    "content": "﻿Option Strict On\r\n\r\nPublic Class Settings\r\n    Public Shared Pause As Boolean\r\n\r\n    Public Shared TaskbarStyle As Integer\r\n    Public Shared SecondaryTaskbarStyle As Integer\r\n    Public Shared PrimaryTaskbarOffset As Integer\r\n    Public Shared SecondaryTaskbarOffset As Integer\r\n    Public Shared CenterPrimaryOnly As Integer\r\n    Public Shared CenterSecondaryOnly As Integer\r\n    Public Shared AnimationStyle As String\r\n    Public Shared AnimationSpeed As Integer\r\n    Public Shared LoopRefreshRate As Integer\r\n    Public Shared CenterInBetween As Integer\r\n    Public Shared FixToolbarsOnTrayChange As Integer\r\n    Public Shared SkipResolution As Integer\r\n    Public Shared SkipResolution2 As Integer\r\n    Public Shared SkipResolution3 As Integer\r\n    Public Shared CheckFullscreenApp As Integer\r\n    Public Shared DefaultTaskbarStyleOnWinMax As Integer\r\n    Public Shared DontCenterTaskbar As Integer\r\n    Public Shared HidePrimaryStartButton As Integer\r\n    Public Shared HideSecondaryStartButton As Integer\r\n    Public Shared HidePrimaryNotifyWnd As Integer\r\n    Public Shared HideSecondaryNotifyWnd As Integer\r\n    Public Shared ShowTrayIcon As Integer\r\n    Public Shared TaskbarStyleOnMax As Integer\r\n    Public Shared TaskbarStyleRed As Integer\r\n    Public Shared TaskbarStyleGreen As Integer\r\n    Public Shared TaskbarStyleBlue As Integer\r\n    Public Shared TaskbarStyleAlpha As Integer\r\n    Public Shared ConsoleEnabled As Integer\r\n    Public Shared StickyStartButton As Integer\r\n    Public Shared TotalPrimaryOpacity As Integer\r\n    Public Shared TotalSecondaryOpacity As Integer\r\n    Public Shared RevertZeroBeyondTray As Integer\r\n    Public Shared TaskbarRounding As Integer\r\n    Public Shared TaskbarSegments As Integer\r\n\r\n    Public Shared UseUIA As Integer\r\n\r\n    'If on battery TaskbarX will override with these\r\n    Public Shared OnBatteryAnimationStyle As String\r\n\r\n    Public Shared OnBatteryLoopRefreshRate As Integer\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/TaskbarAnimate.vb",
    "content": "﻿Option Strict On\r\n\r\nPublic Class TaskbarAnimate\r\n\r\n    Public Shared current As New ArrayList\r\n\r\n    Public Shared Sub Animate(ByVal hwnd As IntPtr, ByVal oldpos As Integer, ByVal orient As String, ByVal easing As EasingDelegate, ByVal valueToReach As Integer, ByVal duration As Integer, ByVal isPrimary As Boolean, ByVal width As Integer)\r\n\r\n\r\n        Try\r\n\r\n            If Math.Abs(CInt((valueToReach - oldpos))) = 0 Then\r\n                'The difference is 0 so there is no need to trigger the animator.\r\n                Exit Sub\r\n            End If\r\n\r\n\r\n\r\n            If Settings.RevertZeroBeyondTray = 1 Then\r\n                'Prevent moving beyond Tray area.\r\n                Dim TrayPos2 As Win32.RECT\r\n                Win32.GetWindowRect(Win32.GetParent(hwnd), TrayPos2)\r\n                Dim rightposition = valueToReach + width\r\n\r\n                If orient = \"H\" Then\r\n                    If rightposition >= TrayPos2.Right - TrayPos2.Left Then\r\n                        Win32.SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                        Exit Sub\r\n                    End If\r\n                Else\r\n                    If rightposition >= TrayPos2.Bottom - TrayPos2.Top Then\r\n                        Win32.SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                        Exit Sub\r\n                    End If\r\n                End If\r\n            End If\r\n\r\n\r\n            If valueToReach = oldpos Or Math.Abs(CInt((valueToReach - oldpos))) <= 10 Then\r\n                'Prevent Wiggling (if the new position has a difference of 10 or lower then there is no reason to move)\r\n                Exit Sub\r\n            End If\r\n\r\n            For Each tt In current\r\n                If CType(tt, IntPtr) = hwnd Then\r\n                    'If hwnd is already getting animated then hwnd is in this arraylist and exit the animator because it's uneeded.\r\n                    Exit Sub\r\n                End If\r\n            Next\r\n\r\n            ' Console.WriteLine(CInt((valueToReach - oldpos).ToString.Replace(\"-\", \"\")))\r\n\r\n            current.Add(hwnd)\r\n\r\n            Dim sw As New Stopwatch\r\n            Dim originalValue As Integer = oldpos\r\n            Dim elapsed As New Integer\r\n            Dim minValue As Integer\r\n\r\n            If originalValue <= valueToReach Then\r\n                minValue = originalValue\r\n            Else\r\n                minValue = valueToReach\r\n            End If\r\n\r\n            Dim maxValue As Integer = Math.Abs(CInt((valueToReach - originalValue)))\r\n            Dim increasing As Boolean = originalValue < valueToReach\r\n\r\n            elapsed = 0\r\n            sw.Start()\r\n\r\n            If isPrimary = True Then\r\n                TaskbarCenter.isanimating = True\r\n            End If\r\n\r\n            While Not elapsed >= duration\r\n\r\n                elapsed = CInt(sw.ElapsedMilliseconds)\r\n\r\n                Dim newValue As Integer = CInt((easing(elapsed, minValue, maxValue, duration)))\r\n\r\n                If Not increasing Then\r\n                    newValue = (originalValue + valueToReach) - newValue\r\n                End If\r\n\r\n                If orient = \"H\" Then\r\n                    Win32.SetWindowPos(hwnd, IntPtr.Zero, newValue, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                Else\r\n                    Win32.SetWindowPos(hwnd, IntPtr.Zero, 0, newValue, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                End If\r\n            End While\r\n\r\n            If isPrimary = True Then\r\n                TaskbarCenter.isanimating = False\r\n            End If\r\n\r\n            sw.Stop()\r\n            current.Remove(hwnd)\r\n\r\n            Main.ClearMemory()\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n\r\n    End Sub\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/TaskbarCenter.vb",
    "content": "﻿Option Strict On\r\n\r\nImports System.Drawing\r\nImports System.Drawing.Drawing2D\r\nImports System.Text\r\nImports System.Threading\r\nImports Accessibility\r\nImports Microsoft.Win32\r\n\r\nPublic Class TaskbarCenter\r\n\r\n#Region \"Values\"\r\n\r\n    Public Shared ScreensChanged As Boolean\r\n\r\n    Public Shared TaskbarCount As Integer\r\n\r\n    Public Shared windowHandles As ArrayList = New ArrayList()\r\n\r\n    Public Shared trayfixed As Boolean\r\n    Public Shared setposhwnd As IntPtr\r\n    Public Shared setpospos As Integer\r\n    Public Shared setposori As String\r\n\r\n    Public Shared initposcalc As String\r\n    Public Shared initposcalcready As Boolean\r\n\r\n    Public Shared isanimating As Boolean\r\n\r\n    Public Shared UserPref As New Microsoft.Win32.UserPreferenceChangedEventHandler(AddressOf HandlePrefChange)\r\n\r\n#End Region\r\n\r\n    Public Shared Sub TaskbarCenterer()\r\n\r\n        RevertToZero()\r\n\r\n        AddHandler SystemEvents.DisplaySettingsChanged, AddressOf DPChange\r\n\r\n        AddHandler SystemEvents.SessionSwitch, AddressOf SystemEvents_SessionSwitch\r\n\r\n        'Start the Looper\r\n        Dim t1 As Thread = New Thread(AddressOf Looper)\r\n        t1.Start()\r\n\r\n        'Start the TrayLoopFix\r\n        If Settings.FixToolbarsOnTrayChange = 1 Then\r\n            Dim t2 As Thread = New Thread(AddressOf TrayLoopFix)\r\n            t2.Start()\r\n        End If\r\n\r\n    End Sub\r\n\r\n#Region \"Commands\"\r\n\r\n    Public Declare Function EnumWindows Lib \"user32\" (ByVal Adress As CallBack, ByVal y As Integer) As Integer\r\n\r\n    Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n\r\n    Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)\r\n\r\n    Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)\r\n        windowHandles.Clear()\r\n        EnumWindows(AddressOf Enumerator, 0)\r\n\r\n        Dim maintaskbarfound As Boolean = False\r\n        Dim sectaskbarfound As Boolean = False\r\n\r\n        For Each Taskbar In windowHandles\r\n            Dim sClassName As New StringBuilder(\"\", 256)\r\n            Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n            If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                maintaskbarfound = True\r\n            End If\r\n            If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                sectaskbarfound = True\r\n            End If\r\n            Console.WriteLine(\"=\" & maintaskbarfound)\r\n        Next\r\n\r\n        If maintaskbarfound = False Then\r\n            Try\r\n                windowHandles.Add(Win32.FindWindow(\"Shell_TrayWnd\", Nothing))\r\n            Catch\r\n            End Try\r\n        End If\r\n\r\n        If sectaskbarfound = False Then\r\n            If Screen.AllScreens.Count >= 2 Then\r\n                ''MsgBox(Screen.AllScreens.Count)\r\n                Try\r\n                    windowHandles.Add(Win32.FindWindow(\"Shell_SecondaryTrayWnd\", Nothing))\r\n                Catch\r\n                End Try\r\n            End If\r\n        End If\r\n\r\n\r\n            Return ActiveWindows\r\n    End Function\r\n\r\n    Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n        Dim sClassName As New StringBuilder(\"\", 256)\r\n        Call Win32.GetClassName(hwnd, sClassName, 256)\r\n        If sClassName.ToString = \"Shell_TrayWnd\" Or sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n            windowHandles.Add(hwnd)\r\n        End If\r\n        Return True\r\n    End Function\r\n\r\n    Structure RectangleX\r\n        Dim left As Integer\r\n        Dim top As Integer\r\n        Dim width As Integer\r\n        Dim height As Integer\r\n    End Structure\r\n\r\n    Public Shared Function GetLocation(ByVal acc As Accessibility.IAccessible, ByVal idChild As Integer) As RectangleX\r\n        Dim rect As New RectangleX\r\n        If Not IsNothing(acc) Then\r\n            acc.accLocation(rect.left, rect.top, rect.width, rect.height, idChild)\r\n        End If\r\n        Return rect\r\n    End Function\r\n\r\n    Public Shared Sub SetPos()\r\n        If setposori = \"H\" Then\r\n            Do\r\n                Win32.SetWindowPos(setposhwnd, IntPtr.Zero, setpospos, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                If isanimating = True Then\r\n                    Exit Do\r\n                End If\r\n            Loop Until trayfixed = True\r\n        Else\r\n            Do\r\n                Win32.SetWindowPos(setposhwnd, IntPtr.Zero, 0, setpospos, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                If isanimating = True Then\r\n                    Exit Do\r\n                End If\r\n            Loop Until trayfixed = True\r\n        End If\r\n    End Sub\r\n\r\n    Public Shared Sub Animate(ByVal hwnd As IntPtr, ByVal oldpos As Integer, ByVal orient As String, ByVal easing As EasingDelegate, ByVal valueToReach As Integer, ByVal duration As Integer, ByVal isPrimary As Boolean, ByVal width As Integer)\r\n        Try\r\n            Dim t1 As Thread = New Thread(Sub() TaskbarAnimate.Animate(hwnd, oldpos, orient, easing, valueToReach, duration, isPrimary, width))\r\n            t1.Start()\r\n        Catch ex As Exception\r\n\r\n            Console.WriteLine(\"@Animation Call | \" & ex.Message)\r\n        End Try\r\n    End Sub\r\n\r\n    Public Shared revertcycle As Boolean\r\n\r\n    Public Shared Sub RevertToZero()\r\n        'Put all taskbars back to default position\r\n        GetActiveWindows()\r\n\r\n        For Each prog As Process In Process.GetProcesses\r\n            If prog.ProcessName = \"AcrylicPanel\" Then\r\n                prog.Kill()\r\n            End If\r\n        Next\r\n\r\n        Dim Taskbars As New ArrayList\r\n\r\n        For Each Taskbar In windowHandles\r\n\r\n            Dim sClassName As New StringBuilder(\"\", 256)\r\n            Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n\r\n            Dim MSTaskListWClass As IntPtr\r\n\r\n            If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                Dim ReBarWindow32 = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"ReBarWindow32\", Nothing)\r\n                Dim MStart = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"Start\", Nothing)\r\n                Win32.ShowWindow(MStart, Win32.ShowWindowCommands.Show)\r\n\r\n                Dim MTray = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"TrayNotifyWnd\", Nothing)\r\n                Win32.SetWindowLong(MTray, CType(Win32.GWL_STYLE, Win32.WindowStyles), &H56000000)\r\n                Win32.SetWindowLong(MTray, CType(Win32.GWL_EXSTYLE, Win32.WindowStyles), &H2000)\r\n                Win32.SendMessage(MTray, 11, True, 0)\r\n                Win32.ShowWindow(MTray, Win32.ShowWindowCommands.Show)\r\n\r\n                Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), \"MSTaskSwWClass\", Nothing)\r\n                MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n\r\n            End If\r\n\r\n            If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                Dim WorkerW = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"WorkerW\", Nothing)\r\n                Dim SStart = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"Start\", Nothing)\r\n                Win32.ShowWindow(SStart, Win32.ShowWindowCommands.Show)\r\n                Dim STray = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"ClockButton\", Nothing)\r\n                Win32.ShowWindow(STray, Win32.ShowWindowCommands.Show)\r\n                MSTaskListWClass = Win32.FindWindowEx(WorkerW, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n            End If\r\n\r\n            Taskbars.Add(MSTaskListWClass)\r\n        Next\r\n\r\n        For Each TaskList In Taskbars\r\n            Win32.SendMessage(Win32.GetParent(Win32.GetParent(CType(TaskList, IntPtr))), 11, True, 0)\r\n            Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n        Next\r\n\r\n    End Sub\r\n\r\n#End Region\r\n\r\n#Region \"Events\"\r\n\r\n    Public Shared Sub HandlePrefChange(ByVal sender As Object, ByVal e As Microsoft.Win32.UserPreferenceChangedEventArgs)\r\n        '' Console.WriteLine(e.Category)\r\n        If e.Category = Microsoft.Win32.UserPreferenceCategory.General Then\r\n\r\n            Console.WriteLine()\r\n            Thread.Sleep(1000)\r\n            'Wait for Shell_TrayWnd\r\n            Dim Handle As IntPtr\r\n            Do\r\n                Console.WriteLine(\"Waiting for Shell_TrayWnd\")\r\n\r\n                Thread.Sleep(250)\r\n                Handle = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n            Loop Until Not Handle = Nothing\r\n\r\n            Application.Restart()\r\n\r\n        End If\r\n    End Sub\r\n\r\n    Public Shared Sub DPChange(ByVal sender As Object, ByVal e As EventArgs)\r\n        Console.WriteLine()\r\n        Thread.Sleep(1000)\r\n        'Wait for Shell_TrayWnd\r\n        Dim Handle As IntPtr\r\n        Do\r\n            Console.WriteLine(\"Waiting for Shell_TrayWnd\")\r\n\r\n            Thread.Sleep(250)\r\n            Handle = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n        Loop Until Not Handle = Nothing\r\n\r\n        Application.Restart()\r\n    End Sub\r\n\r\n    Public Shared Sub SystemEvents_SessionSwitch(sender As Object, e As SessionSwitchEventArgs)\r\n        Console.WriteLine()\r\n        Thread.Sleep(1000)\r\n        'Wait for Shell_TrayWnd\r\n        Dim Handle As IntPtr\r\n        Do\r\n            Console.WriteLine(\"Waiting for Shell_TrayWnd\")\r\n\r\n            Thread.Sleep(250)\r\n            Handle = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n        Loop Until Not Handle = Nothing\r\n\r\n        Application.Restart()\r\n    End Sub\r\n\r\n#End Region\r\n\r\n\r\n#Region \"Looper\"\r\n\r\n    Public Shared Sub Looper()\r\n\r\n        Try\r\n            'This loop will check if the taskbar changes and requires a move\r\n            GetActiveWindows()\r\n\r\n            Dim Taskbars As New ArrayList\r\n\r\n\r\n\r\n\r\n\r\n            'Put all Taskbars into an ArrayList based on each TrayWnd in the TrayWnds ArrayList\r\n            For Each Taskbar In windowHandles\r\n                Dim sClassName As New StringBuilder(\"\", 256)\r\n                Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n                Dim MSTaskListWClass As IntPtr\r\n\r\n                Console.WriteLine(sClassName.ToString)\r\n\r\n\r\n                If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                    Dim ReBarWindow32 = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"ReBarWindow32\", Nothing)\r\n\r\n                    If Not Settings.TotalPrimaryOpacity = Nothing Then\r\n                        Win32.SetWindowLong(CType(Taskbar, IntPtr), CType(Win32.GWL_EXSTYLE, Win32.WindowStyles), &H80000)\r\n                        Win32.SetLayeredWindowAttributes(CType(Taskbar, IntPtr), 0, CByte(255 / 100 * CByte(Settings.TotalPrimaryOpacity)), &H2)\r\n                    End If\r\n\r\n                    If Settings.HidePrimaryStartButton = 1 Then\r\n                        Dim MStart = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"Start\", Nothing)\r\n                        Win32.ShowWindow(MStart, Win32.ShowWindowCommands.Hide)\r\n                        Win32.SetLayeredWindowAttributes(MStart, 0, 0, &H2)\r\n                    End If\r\n\r\n                    If Settings.HidePrimaryNotifyWnd = 1 Then\r\n                        Dim MTray = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"TrayNotifyWnd\", Nothing)\r\n                        Win32.ShowWindow(MTray, Win32.ShowWindowCommands.Hide)\r\n                        Win32.SetWindowLong(MTray, CType(Win32.GWL_STYLE, Win32.WindowStyles), &H7E000000)\r\n                        Win32.SetWindowLong(MTray, CType(Win32.GWL_EXSTYLE, Win32.WindowStyles), &H80000)\r\n                        Win32.SendMessage(MTray, 11, False, 0)\r\n                        Win32.SetLayeredWindowAttributes(MTray, 0, 0, &H2)\r\n                    End If\r\n\r\n                    Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), \"MSTaskSwWClass\", Nothing)\r\n                    MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n\r\n\r\n\r\n\r\n                End If\r\n\r\n                If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                    Dim WorkerW = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"WorkerW\", Nothing)\r\n\r\n                    If Not Settings.TotalSecondaryOpacity = Nothing Then\r\n                        Win32.SetWindowLong(CType(Taskbar, IntPtr), CType(Win32.GWL_EXSTYLE, Win32.WindowStyles), &H80000)\r\n                        Win32.SetLayeredWindowAttributes(CType(Taskbar, IntPtr), 0, CByte(255 / 100 * CByte(Settings.TotalSecondaryOpacity)), &H2)\r\n                    End If\r\n\r\n                    If Settings.HideSecondaryStartButton = 1 Then\r\n                        Dim SStart = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"Start\", Nothing)\r\n                        Win32.ShowWindow(SStart, Win32.ShowWindowCommands.Hide)\r\n                        Win32.SetLayeredWindowAttributes(SStart, 0, 0, &H2)\r\n                    End If\r\n\r\n                    If Settings.HideSecondaryNotifyWnd = 1 Then\r\n                        Dim STray = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"ClockButton\", Nothing)\r\n                        Win32.ShowWindow(STray, Win32.ShowWindowCommands.Hide)\r\n                        Win32.SetLayeredWindowAttributes(STray, 0, 0, &H2)\r\n                    End If\r\n\r\n                    MSTaskListWClass = Win32.FindWindowEx(WorkerW, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n\r\n\r\n                End If\r\n\r\n                If MSTaskListWClass = Nothing Then\r\n                    MessageBox.Show(\"TaskbarX: Could not find the handle of the taskbar. Your current version or build of Windows may not be supported.\")\r\n                    End\r\n                End If\r\n\r\n                Taskbars.Add(MSTaskListWClass)\r\n            Next\r\n\r\n            Dim TaskObject = New List(Of Accessibility.IAccessible)()\r\n            For Each TaskList In Taskbars\r\n                Dim accessiblex As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(CType(TaskList, IntPtr))\r\n                TaskObject.Add(accessiblex)\r\n            Next\r\n\r\n            Dim TaskObjects As List(Of IAccessible) = TaskObject\r\n\r\n            'Start the endless loop\r\n            Do\r\n\r\n\r\n\r\n\r\n\r\n                Try\r\n\r\n                    Dim results As String = Nothing\r\n                    Dim oldresults As String\r\n\r\n                    If Not Settings.SkipResolution = 0 Then\r\n                        If Screen.PrimaryScreen.Bounds.Width = Settings.SkipResolution Then\r\n                            RevertToZero()\r\n                            Exit Do\r\n                        End If\r\n                    End If\r\n\r\n                    If Not Settings.SkipResolution2 = 0 Then\r\n                        If Screen.PrimaryScreen.Bounds.Width = Settings.SkipResolution2 Then\r\n                            RevertToZero()\r\n                            Exit Do\r\n                        End If\r\n                    End If\r\n\r\n                    If Not Settings.SkipResolution3 = 0 Then\r\n                        If Screen.PrimaryScreen.Bounds.Width = Settings.SkipResolution3 Then\r\n                            RevertToZero()\r\n                            Exit Do\r\n                        End If\r\n                    End If\r\n\r\n                    If Settings.CheckFullscreenApp = 1 Then\r\n                        Dim activewindow = Win32.GetForegroundWindow()\r\n                        Dim curmonx As Screen = Screen.FromHandle(activewindow)\r\n                        Dim activewindowsize As New Win32.RECT\r\n                        Win32.GetWindowRect(activewindow, activewindowsize)\r\n\r\n                        If activewindowsize.Top = curmonx.Bounds.Top And activewindowsize.Bottom = curmonx.Bounds.Bottom And activewindowsize.Left = curmonx.Bounds.Left And activewindowsize.Right = curmonx.Bounds.Right Then\r\n                            Console.WriteLine(\"Fullscreen App detected \" & activewindowsize.Bottom & \",\" & activewindowsize.Top & \",\" & activewindowsize.Left & \",\" & activewindowsize.Right)\r\n\r\n                            ''Main.Toaster(\"Fullscreen App detected... TaskbarX will now be disabled.\")\r\n                            ''  Main.ResetTaskbarStyle()\r\n                            ''RevertToZero()\r\n\r\n                            Settings.Pause = True\r\n                            Do\r\n                                System.Threading.Thread.Sleep(500)\r\n                                activewindow = Win32.GetForegroundWindow()\r\n                                Win32.GetWindowRect(activewindow, activewindowsize)\r\n                                System.Threading.Thread.Sleep(500)\r\n\r\n                            Loop While activewindowsize.Top = curmonx.Bounds.Top And activewindowsize.Bottom = curmonx.Bounds.Bottom And activewindowsize.Left = curmonx.Bounds.Left And activewindowsize.Right = curmonx.Bounds.Right\r\n                            Console.WriteLine(\"Fullscreen App deactivated\")\r\n\r\n                            ''  Main.Toaster(\"Fullscreen App closed or minimized... TaskbarX will now be enabled.\")\r\n\r\n                            Settings.Pause = False\r\n                        End If\r\n                    End If\r\n\r\n                    'Go through each taskbar and result in a unique string containing the current state\r\n\r\n                    Dim i As Integer = 0\r\n\r\n                    For Each TaskList In TaskObjects\r\n\r\n\r\n\r\n                        Dim children() As Accessibility.IAccessible = MSAA.GetAccessibleChildren(CType(TaskList, IAccessible))\r\n\r\n                        Dim TaskListPos As RectangleX = GetLocation(CType(TaskList, IAccessible), 0)\r\n\r\n\r\n                        Dim tH = TaskListPos.height\r\n                        Dim tW = TaskListPos.width\r\n\r\n                        Dim LastChildPos As RectangleX\r\n\r\n                        For Each childx As Accessibility.IAccessible In children\r\n                            If CInt(childx.accRole(0)) = CInt(22) Then '0x16 = toolbar\r\n                                LastChildPos = GetLocation(childx, MSAA.GetAccessibleChildren(childx).Length)\r\n                                Exit For\r\n                            End If\r\n                        Next\r\n\r\n\r\n\r\n                        Dim cL = LastChildPos.left\r\n                        Dim cT = LastChildPos.top\r\n                        Dim cW = LastChildPos.width\r\n                        Dim cH = LastChildPos.height\r\n\r\n                        Try\r\n                            Dim testiferror = cL\r\n                        Catch ex As Exception\r\n                            'Current taskbar is empty go to next taskbar.\r\n                            ''Continue For\r\n                        End Try\r\n\r\n                        Dim Orientation As String\r\n                        Dim TaskbarCount As Integer\r\n                        Dim TrayWndSize As Integer\r\n\r\n                        'Get current taskbar orientation (H = Horizontal | V = Vertical)\r\n                        If tH >= tW Then\r\n                            Orientation = \"V\"\r\n                        Else\r\n                            Orientation = \"H\"\r\n                        End If\r\n\r\n                        'Get the end position of the last icon in the taskbar\r\n                        If Orientation = \"H\" Then\r\n                            TaskbarCount = cL + cW\r\n                        Else\r\n                            TaskbarCount = cT + cH\r\n                        End If\r\n\r\n                        'Gets the width of the whole taskbars placeholder\r\n                        If Orientation = \"H\" Then\r\n                            TrayWndSize = tW\r\n                        Else\r\n                            TrayWndSize = tH\r\n                        End If\r\n\r\n                        'Put the results into a string ready to be matched for differences with last loop\r\n                        results = results & Orientation & TaskbarCount & TrayWndSize\r\n\r\n                        initposcalcready = True\r\n\r\n                        i += 1\r\n                    Next\r\n\r\n\r\n\r\n\r\n                    If Not results = oldresults Then\r\n                        'Something has changed we can now calculate the new position for each taskbar\r\n\r\n                        initposcalcready = False\r\n                        initposcalc = results\r\n\r\n                        'Start the PositionCalculator\r\n                        Dim t3 As Thread = New Thread(AddressOf InitPositionCalculator)\r\n                        t3.Start()\r\n\r\n                    End If\r\n\r\n                    'Save current results for next loop\r\n                    oldresults = results\r\n\r\n\r\n\r\n\r\n\r\n\r\n                    If SystemInformation.PowerStatus.PowerLineStatus = PowerLineStatus.Offline Then\r\n                        Thread.Sleep(Settings.OnBatteryLoopRefreshRate)\r\n                    Else\r\n                        Thread.Sleep(Settings.LoopRefreshRate)\r\n                    End If\r\n                Catch ex As Exception\r\n                    Console.WriteLine(\"@Looper1 | \" & ex.Message)\r\n\r\n                    'Lost taskbar handles restart application\r\n                    If ex.ToString.Contains(\"NullReference\") Or ex.ToString.Contains(\"Missing method\") Then\r\n                        Dim Handle As IntPtr\r\n                        Do\r\n                            Handle = Nothing\r\n                            System.Threading.Thread.Sleep(250)\r\n                            Handle = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n                        Loop Until Not Handle = Nothing\r\n                        System.Threading.Thread.Sleep(1000)\r\n                        Application.Restart()\r\n                    End If\r\n\r\n                End Try\r\n\r\n            Loop\r\n        Catch ex As Exception\r\n            MessageBox.Show(\"@Looper2 | \" & ex.Message)\r\n        End Try\r\n    End Sub\r\n\r\n#End Region\r\n\r\n#Region \"TrayLoopFix\"\r\n\r\n    Public Shared Sub TrayLoopFix()\r\n\r\n        Try\r\n            Dim Shell_TrayWnd = Win32.FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr))\r\n            Dim TrayNotifyWnd = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), \"TrayNotifyWnd\", Nothing)\r\n            Dim ReBarWindow32 = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), \"ReBarWindow32\", Nothing)\r\n            Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), \"MSTaskSwWClass\", Nothing)\r\n            Dim MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n\r\n            Dim accessible As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(MSTaskListWClass)\r\n\r\n            Dim accessible2 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(TrayNotifyWnd)\r\n\r\n            Dim accessible3 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(MSTaskSwWClass)\r\n\r\n            Dim SWP_NOSIZE As UInt32 = 1\r\n            Dim SWP_ASYNCWINDOWPOS As UInt32 = 16384\r\n            Dim SWP_NOACTIVATE As UInt32 = 16\r\n            Dim SWP_NOSENDCHANGING As UInt32 = 1024\r\n            Dim SWP_NOZORDER As UInt32 = 4\r\n\r\n            Do\r\n\r\n                Dim RebarPos As RectangleX = GetLocation(accessible3, 0)\r\n                Dim TrayNotifyPos As RectangleX = GetLocation(accessible2, 0)\r\n                Dim TaskListPos As RectangleX = GetLocation(accessible, 0)\r\n\r\n                Win32.SendMessage(ReBarWindow32, 11, False, 0)\r\n                Win32.SendMessage(Win32.GetParent(Shell_TrayWnd), 11, False, 0)\r\n\r\n                Dim TrayNotifyWidth As Integer = 0\r\n                Dim OldTrayNotifyWidth As Integer\r\n                Dim TrayOrientation As String\r\n\r\n                'If the TrayNotifyWnd updates then refresh the taskbar\r\n                If TaskListPos.height >= TaskListPos.width Then\r\n                    TrayOrientation = \"V\"\r\n                Else\r\n                    TrayOrientation = \"H\"\r\n                End If\r\n\r\n                TrayNotifyWidth = TrayNotifyPos.width\r\n\r\n                If Not TrayNotifyWidth = OldTrayNotifyWidth Then\r\n                    If Not OldTrayNotifyWidth = 0 Then\r\n                        If Not TaskListPos.left = 0 Then\r\n                            If TrayNotifyPos.left = 3 Then\r\n                                '\r\n                                Exit Sub\r\n                            End If\r\n\r\n                            Dim pos = Math.Abs((TaskListPos.left - RebarPos.left))\r\n\r\n                            trayfixed = False\r\n\r\n                            setposhwnd = MSTaskListWClass\r\n                            setpospos = CInt(pos)\r\n                            setposori = TrayOrientation\r\n\r\n                            Dim t1 As Thread = New Thread(AddressOf SetPos)\r\n                            t1.Start()\r\n\r\n                            Thread.Sleep(5)\r\n                            Win32.SendMessage(ReBarWindow32, 11, True, 0)\r\n                            Thread.Sleep(5)\r\n                            Win32.SendMessage(ReBarWindow32, 11, False, 0)\r\n                            Thread.Sleep(5)\r\n                            trayfixed = True\r\n\r\n                        End If\r\n                    End If\r\n                End If\r\n\r\n                OldTrayNotifyWidth = TrayNotifyWidth\r\n\r\n                Thread.Sleep(400)\r\n\r\n            Loop\r\n        Catch ex As Exception\r\n            Console.WriteLine(\"@TrayLoopFix | \" & ex.Message)\r\n        End Try\r\n    End Sub\r\n\r\n#End Region\r\n\r\n#Region \"PositionCalculator\"\r\n\r\n    Public Shared Sub InitPositionCalculator()\r\n\r\n        Dim mm As String\r\n        Dim mm2 As String\r\n\r\n        mm = initposcalc\r\n\r\n        Do\r\n            Thread.Sleep(10)\r\n        Loop Until initposcalcready = True\r\n\r\n        mm2 = initposcalc\r\n\r\n        If mm = mm2 Then\r\n            'Start the PositionCalculator\r\n            Dim t3 As Thread = New Thread(AddressOf PositionCalculator)\r\n            t3.Start()\r\n        End If\r\n    End Sub\r\n\r\n    Public Shared Sub PositionCalculator()\r\n\r\n\r\n\r\n        Try\r\n            'Calculate the new positions and pass them through to the animator\r\n\r\n            Dim Taskbars As New ArrayList\r\n\r\n            'Put all Taskbars into an ArrayList based on each TrayWnd in the TrayWnds ArrayList\r\n            For Each Taskbar In windowHandles\r\n                Dim sClassName As New StringBuilder(\"\", 256)\r\n                Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n\r\n                Dim MSTaskListWClass As IntPtr\r\n\r\n                If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                    Dim ReBarWindow32 = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"ReBarWindow32\", Nothing)\r\n                    Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), \"MSTaskSwWClass\", Nothing)\r\n                    MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n                End If\r\n\r\n                If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                    Dim WorkerW = Win32.FindWindowEx(CType(Taskbar, IntPtr), CType(0, IntPtr), \"WorkerW\", Nothing)\r\n                    MSTaskListWClass = Win32.FindWindowEx(WorkerW, CType(0, IntPtr), \"MSTaskListWClass\", Nothing)\r\n                End If\r\n\r\n                Win32.SetWindowLong(CType(Taskbar, IntPtr), CType(Win32.GWL_EXSTYLE, Win32.WindowStyles), &H80L)\r\n\r\n                If MSTaskListWClass = Nothing Then\r\n                    Console.WriteLine(\"TaskbarX: Could not find the handle of the taskbar. Restarting...\")\r\n                    System.Threading.Thread.Sleep(1000)\r\n                    Application.Restart()\r\n                End If\r\n\r\n                Taskbars.Add(MSTaskListWClass)\r\n            Next\r\n\r\n            'Calculate Position for every taskbar and trigger the animator\r\n            For Each TaskList In Taskbars\r\n\r\n                Dim sClassName As New StringBuilder(\"\", 256)\r\n                Call Win32.GetClassName(CType(TaskList, IntPtr), sClassName, 256)\r\n\r\n                Dim LastChildPos As RectangleX\r\n                Dim TaskListPos As RectangleX\r\n\r\n                Dim accessible As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(CType(TaskList, IntPtr))\r\n                Dim children() As Accessibility.IAccessible = MSAA.GetAccessibleChildren(accessible)\r\n\r\n                TaskListPos = GetLocation(accessible, 0)\r\n\r\n                For Each childx As Accessibility.IAccessible In children\r\n                    If CInt(childx.accRole(0)) = CInt(22) Then '0x16 = toolbar\r\n                        LastChildPos = GetLocation(childx, MSAA.GetAccessibleChildren(childx).Length)\r\n                        Exit For\r\n                    End If\r\n                Next\r\n\r\n                Dim RebarHandle = Win32.GetParent(CType(TaskList, IntPtr))\r\n                Dim accessible3 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(RebarHandle)\r\n\r\n                Dim RebarClassName As New StringBuilder(\"\", 256)\r\n                Call Win32.GetClassName(RebarHandle, RebarClassName, 256)\r\n\r\n                Dim Orientation As String\r\n                Dim TaskbarWidth As Integer\r\n                Dim TrayWndLeft As Integer\r\n                Dim TrayWndWidth As Integer\r\n                Dim RebarWndLeft As Integer\r\n                Dim TaskbarLeft As Integer\r\n                Dim Position As Integer\r\n                Dim curleft As Integer\r\n                Dim curleft2 As Integer\r\n\r\n                Dim TrayNotifyPos As RectangleX\r\n                Dim NewsAndInterestsPos As RectangleX\r\n                Dim NewsAndInterestsHandle As IntPtr\r\n\r\n\r\n                Dim TrayWndHandle = Win32.GetParent(Win32.GetParent(CType(TaskList, IntPtr)))\r\n\r\n\r\n\r\n\r\n                Dim TrayWndClassName As New StringBuilder(\"\", 256)\r\n                Call Win32.GetClassName(TrayWndHandle, TrayWndClassName, 256)\r\n\r\n                'Check if TrayWnd = wrong. if it is, correct it (This will be the primary taskbar which should be Shell_TrayWnd)\r\n                If TrayWndClassName.ToString = \"ReBarWindow32\" Then\r\n                    Win32.SendMessage(TrayWndHandle, 11, False, 0)\r\n                    TrayWndHandle = Win32.GetParent(Win32.GetParent(Win32.GetParent(CType(TaskList, IntPtr))))\r\n\r\n                    Dim TrayNotify = Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayNotifyWnd\", Nothing)\r\n                    Dim accessible4 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(TrayNotify)\r\n                    TrayNotifyPos = GetLocation(accessible4, 0)\r\n\r\n\r\n\r\n                    Dim NewsAndInterests = Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"DynamicContent1\", Nothing)\r\n                    If Not CInt(NewsAndInterests.ToString) = CInt(\"0\") Then\r\n                        NewsAndInterestsHandle = NewsAndInterests\r\n                        Dim accessible5 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(NewsAndInterests)\r\n                        NewsAndInterestsPos = GetLocation(accessible5, 0)\r\n                    End If\r\n\r\n\r\n                    Win32.SendMessage(Win32.GetParent(TrayWndHandle), 11, False, 0)\r\n\r\n                End If\r\n\r\n\r\n\r\n                Call Win32.GetClassName(TrayWndHandle, TrayWndClassName, 256)\r\n                Dim accessible2 As Accessibility.IAccessible = MSAA.GetAccessibleObjectFromHandle(TrayWndHandle)\r\n\r\n                Dim TrayWndPos As RectangleX = GetLocation(accessible2, 0)\r\n                Dim RebarPos As RectangleX = GetLocation(accessible3, 0)\r\n\r\n                'If the taskbar is still moving then wait until it's not (This will prevent unneeded calculations that trigger the animator)\r\n                Do\r\n                    curleft = TaskListPos.left\r\n                    TaskListPos = GetLocation(accessible, 0)\r\n                    '' TaskListcL = childLeft2\r\n                    System.Threading.Thread.Sleep(30)\r\n                    curleft2 = TaskListPos.left\r\n                Loop Until curleft = curleft2\r\n\r\n                'Get current taskbar orientation (H = Horizontal | V = Vertical)\r\n                If TaskListPos.height >= TaskListPos.width Then\r\n                    Orientation = \"V\"\r\n                Else\r\n                    Orientation = \"H\"\r\n                End If\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n                'Calculate the exact width of the total icons\r\n                Try\r\n                    If Orientation = \"H\" Then\r\n                        TaskbarWidth = CInt((LastChildPos.left - TaskListPos.left)) ''TaskbarTotalHeight\r\n                    Else\r\n                        TaskbarWidth = CInt((LastChildPos.top - TaskListPos.top))\r\n                    End If\r\n                Catch\r\n                    TaskbarWidth = 0\r\n                    'Taskbar is empty just skip\r\n                End Try\r\n\r\n                'Get info needed to calculate the position\r\n                If Orientation = \"H\" Then\r\n                    TrayWndLeft = Math.Abs(CInt(TrayWndPos.left))\r\n                    TrayWndWidth = Math.Abs(CInt(TrayWndPos.width))\r\n                    RebarWndLeft = Math.Abs(CInt(RebarPos.left))\r\n                    TaskbarLeft = Math.Abs(CInt(RebarWndLeft - TrayWndLeft))\r\n                Else\r\n                    TrayWndLeft = Math.Abs(CInt(TrayWndPos.top))\r\n                    TrayWndWidth = Math.Abs(CInt(TrayWndPos.height))\r\n                    RebarWndLeft = Math.Abs(CInt(RebarPos.top))\r\n                    TaskbarLeft = Math.Abs(CInt(RebarWndLeft - TrayWndLeft))\r\n                End If\r\n\r\n                Console.WriteLine(\"!\" & NewsAndInterestsPos.width)\r\n\r\n                'Calculate new position\r\n                If TrayWndClassName.ToString = \"Shell_TrayWnd\" Then\r\n                    If Settings.CenterInBetween = 1 Then\r\n                        If Orientation = \"H\" Then\r\n                            Dim offset = (TrayNotifyPos.width / 2 - (TaskbarLeft \\ 2)) + NewsAndInterestsPos.width / 2\r\n                            Position = Math.Abs(CInt((TrayWndWidth / 2 - (TaskbarWidth / 2) - TaskbarLeft - offset))) + Settings.PrimaryTaskbarOffset\r\n                        Else\r\n                            Dim offset = (TrayNotifyPos.height / 2 - (TaskbarLeft \\ 2)) + NewsAndInterestsPos.height / 2\r\n                            Position = Math.Abs(CInt((TrayWndWidth / 2 - (TaskbarWidth / 2) - TaskbarLeft - offset))) + Settings.PrimaryTaskbarOffset\r\n                        End If\r\n                    Else\r\n                        Position = Math.Abs(CInt(CInt((TrayWndWidth / 2) - (TaskbarWidth / 2) - TaskbarLeft))) + Settings.PrimaryTaskbarOffset\r\n                    End If\r\n                Else\r\n                    Position = Math.Abs(CInt(CInt((TrayWndWidth / 2) - (TaskbarWidth / 2) - TaskbarLeft))) + Settings.SecondaryTaskbarOffset\r\n                End If\r\n\r\n\r\n\r\n                '' If My.Computer.Info.OSFullName.Contains(\"Windows 11\") Then\r\n\r\n                '' Else\r\n\r\n                ''  End If\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n                If Settings.TaskbarSegments = 1 Then\r\n                    If Orientation = \"H\" Then\r\n\r\n                        Dim ttseg As New Win32.RECT\r\n                        Win32.GetClientRect(CType(TaskList, IntPtr), ttseg)\r\n                        Dim trayseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayNotifyWnd\", Nothing), trayseg)\r\n                        Dim clockseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"ClockButton\", Nothing), clockseg)\r\n\r\n\r\n                        Dim startseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"Start\", Nothing), startseg)\r\n                        ''Dim searchseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Type here to search\"), searchseg)\r\n                        ''Dim cortanaseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Talk to Cortana\"), cortanaseg)\r\n                        ''Dim taskviewseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Task View\"), taskviewseg)\r\n\r\n                        ''If Not Settings.TaskbarRounding = 0 Then\r\n                        ''Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Win32.CreateRoundRectRgn(TaskbarLeft + Position + 4, ttseg.Top, TaskbarLeft + Position + TaskbarWidth - 2, ttseg.Bottom + 1, Settings.TaskbarRounding, Settings.TaskbarRounding), True)\r\n                        ''Else\r\n\r\n                        Dim Tasklist_rgn As IntPtr = Win32.CreateRoundRectRgn(TaskbarLeft + Position + 4, ttseg.Top, TaskbarLeft + Position + TaskbarWidth - 2, ttseg.Bottom + 1, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        Dim NotifyTray_rgn As IntPtr = Win32.CreateRoundRectRgn(TrayNotifyPos.left, 0, TrayNotifyPos.left + TrayNotifyPos.width, TrayNotifyPos.top + TrayNotifyPos.height, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        Dim Start_rgn As IntPtr = Win32.CreateRoundRectRgn(startseg.Left, 0, startseg.Right, startseg.Bottom, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        ''Dim Search_rgn As IntPtr = Win32.CreateRectRgn(searchseg.Left, 0, searchseg.Right, searchseg.Bottom)\r\n                        ''Dim Cortana_rgn As IntPtr = Win32.CreateRectRgn(cortanaseg.Left, 0, cortanaseg.Right, cortanaseg.Bottom)\r\n                        ''Dim TaskView_rgn As IntPtr = Win32.CreateRectRgn(taskviewseg.Left, 0, taskviewseg.Right, taskviewseg.Bottom)\r\n                        Dim Clock_rgn As IntPtr = Win32.CreateRoundRectRgn(clockseg.Left, 0, clockseg.Right, clockseg.Bottom, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n\r\n\r\n                        Dim Totalreg As IntPtr = Win32.CreateRoundRectRgn(0, 0, 0, 0, 0, 0)\r\n                        Win32.CombineRgn(Totalreg, Tasklist_rgn, NotifyTray_rgn, 2)\r\n\r\n                        If TrayWndClassName.ToString = \"Shell_TrayWnd\" Then\r\n                            Win32.CombineRgn(Totalreg, Totalreg, Start_rgn, 2)\r\n                        End If\r\n\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, Search_rgn, 2)\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, Cortana_rgn, 2)\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, TaskView_rgn, 2)\r\n                        '' Win32.CombineRgn(Totalreg, Totalreg, Clock_rgn, 2)\r\n\r\n\r\n\r\n                        Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Totalreg, True)\r\n\r\n                        ''Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Win32.CreateRectRgn(TaskbarLeft + Position + 4, ttseg.Top, TaskbarLeft + Position + TaskbarWidth - 2, ttseg.Bottom + 1), True)\r\n                        ' End If\r\n\r\n                    Else\r\n                        Dim ttseg As New Win32.RECT\r\n                        Win32.GetClientRect(CType(TaskList, IntPtr), ttseg)\r\n                        Dim trayseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayNotifyWnd\", Nothing), trayseg)\r\n                        Dim clockseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"ClockButton\", Nothing), clockseg)\r\n\r\n\r\n                        Dim startseg As New Win32.RECT\r\n                        Win32.GetClientRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"Start\", Nothing), startseg)\r\n                        ''Dim searchseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Type here to search\"), searchseg)\r\n                        ''Dim cortanaseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Talk to Cortana\"), cortanaseg)\r\n                        ''Dim taskviewseg As New Win32.RECT\r\n                        ''Win32.GetWindowRect(Win32.FindWindowEx(TrayWndHandle, CType(0, IntPtr), \"TrayButton\", \"Task View\"), taskviewseg)\r\n\r\n                        ''If Not Settings.TaskbarRounding = 0 Then\r\n                        ''Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Win32.CreateRoundRectRgn(TaskbarLeft + Position + 4, ttseg.Top, TaskbarLeft + Position + TaskbarWidth - 2, ttseg.Bottom + 1, Settings.TaskbarRounding, Settings.TaskbarRounding), True)\r\n                        ''Else\r\n\r\n                        Dim Tasklist_rgn As IntPtr = Win32.CreateRoundRectRgn(ttseg.Left, TaskbarLeft + Position + 4, ttseg.Right, TaskbarLeft + Position + TaskbarWidth - 2, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        '' Dim NotifyTray_rgn As IntPtr = Win32.CreateRoundRectRgn(trayseg.Left, trayseg.Top, trayseg.Right, trayseg.Bottom, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        ''  Dim Start_rgn As IntPtr = Win32.CreateRoundRectRgn(startseg.Left, 0, startseg.Right, startseg.Bottom, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n                        ''Dim Search_rgn As IntPtr = Win32.CreateRectRgn(searchseg.Left, 0, searchseg.Right, searchseg.Bottom)\r\n                        ''Dim Cortana_rgn As IntPtr = Win32.CreateRectRgn(cortanaseg.Left, 0, cortanaseg.Right, cortanaseg.Bottom)\r\n                        ''Dim TaskView_rgn As IntPtr = Win32.CreateRectRgn(taskviewseg.Left, 0, taskviewseg.Right, taskviewseg.Bottom)\r\n                        ''  Dim Clock_rgn As IntPtr = Win32.CreateRoundRectRgn(clockseg.Left, 0, clockseg.Right, clockseg.Bottom, Settings.TaskbarRounding, Settings.TaskbarRounding)\r\n\r\n\r\n                        Dim Totalreg As IntPtr = Win32.CreateRoundRectRgn(0, 0, 0, 0, 0, 0)\r\n                        Win32.CombineRgn(Totalreg, Tasklist_rgn, Tasklist_rgn, 2)\r\n                        ''  Win32.CombineRgn(Totalreg, Totalreg, Start_rgn, 2)\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, Search_rgn, 2)\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, Cortana_rgn, 2)\r\n                        ''Win32.CombineRgn(Totalreg, Totalreg, TaskView_rgn, 2)\r\n                        '' Win32.CombineRgn(Totalreg, Totalreg, Clock_rgn, 2)\r\n\r\n\r\n\r\n                        Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Totalreg, True)\r\n\r\n                        ''Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Win32.CreateRectRgn(TaskbarLeft + Position + 4, ttseg.Top, TaskbarLeft + Position + TaskbarWidth - 2, ttseg.Bottom + 1), True)\r\n                        ' End If\r\n\r\n\r\n\r\n                    End If\r\n                Else\r\n                    If Not Settings.TaskbarRounding = 0 Then\r\n                        Win32.SetWindowRgn(CType(TrayWndHandle, IntPtr), Win32.CreateRoundRectRgn(0, 0, TrayWndPos.width, TrayWndPos.height, Settings.TaskbarRounding, Settings.TaskbarRounding), True)\r\n\r\n                    End If\r\n                End If\r\n\r\n\r\n\r\n                '' Dim sb = Win32.FindWindowEx(TrayWndHandle, Nothing, \"Start\", Nothing)\r\n                ''  Dim sbrect As New Win32.RECT\r\n                ''  Win32.GetClientRect(CType(sb, IntPtr), sbrect)\r\n                ''  Win32.SetWindowPos(sb, IntPtr.Zero, TaskbarLeft + Position + 4 + (sbrect.Left - sbrect.Right), 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                ''  Win32.SendMessage(TrayWndHandle, Win32.WM_DWMCOMPOSITIONCHANGED, True, 0)\r\n\r\n\r\n                If Settings.TaskbarSegments = 1 Then\r\n                    If Not Settings.TaskbarStyle = 0 Then\r\n                        '' Win32.SendMessage(TrayWndHandle, Win32.WM_THEMECHANGED, True, 0)\r\n                        ''Win32.SendMessage(TrayWndHandle, Win32.WM_DWMCOLORIZATIONCOLORCHANGED, True, 0)\r\n                        Win32.SendMessage(TrayWndHandle, Win32.WM_DWMCOMPOSITIONCHANGED, True, 0)\r\n                    End If\r\n                End If\r\n\r\n\r\n\r\n                ''  Win32.SetWindowPos(TrayWndHandle, Win32.HWND_TOPMOST, 0, 0, 0, 0, Win32.TOPMOST_FLAGS)\r\n\r\n\r\n\r\n\r\n                'Trigger the animator\r\n                If SystemInformation.PowerStatus.PowerLineStatus = PowerLineStatus.Offline Then\r\n\r\n                    If Settings.CenterPrimaryOnly = 1 Then\r\n                        If TrayWndClassName.ToString = \"Shell_TrayWnd\" Then\r\n                            If Orientation = \"H\" Then\r\n                                If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                End If\r\n                                DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, True, TaskbarWidth)\r\n                            Else\r\n                                If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, True, TaskbarWidth)\r\n                                End If\r\n                            End If\r\n                        End If\r\n                    ElseIf Settings.CenterSecondaryOnly = 1 Then\r\n                        If TrayWndClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                            If Orientation = \"H\" Then\r\n                                If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, False, TaskbarWidth)\r\n                                End If\r\n                            Else\r\n                                If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, False, TaskbarWidth)\r\n                                End If\r\n                            End If\r\n                        End If\r\n                    Else\r\n                        If Orientation = \"H\" Then\r\n                            If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                            Else\r\n                                DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, False, TaskbarWidth)\r\n                            End If\r\n                        Else\r\n                            If Settings.OnBatteryAnimationStyle = \"none\" Then\r\n                                Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                            Else\r\n                                DaAnimator(Settings.OnBatteryAnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, False, TaskbarWidth)\r\n                            End If\r\n                        End If\r\n                    End If\r\n                Else\r\n\r\n                    If Settings.CenterPrimaryOnly = 1 Then\r\n                        If TrayWndClassName.ToString = \"Shell_TrayWnd\" Then\r\n                            If Orientation = \"H\" Then\r\n                                If Settings.AnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, True, TaskbarWidth)\r\n                                End If\r\n                            Else\r\n                                If Settings.AnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, True, TaskbarWidth)\r\n                                End If\r\n                            End If\r\n                        End If\r\n                    ElseIf Settings.CenterSecondaryOnly = 1 Then\r\n                        If TrayWndClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                            If Orientation = \"H\" Then\r\n\r\n                                If Settings.AnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, False, TaskbarWidth)\r\n                                End If\r\n                            Else\r\n                                If Settings.AnimationStyle = \"none\" Then\r\n                                    Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                                Else\r\n                                    DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, False, TaskbarWidth)\r\n                                End If\r\n                            End If\r\n                        End If\r\n                    Else\r\n                        If Orientation = \"H\" Then\r\n                            If Settings.AnimationStyle = \"none\" Then\r\n                                Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, Position, 0, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                            Else\r\n                                DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.left, RebarPos.left, \"H\", Position, False, TaskbarWidth)\r\n                            End If\r\n                        Else\r\n                            If Settings.AnimationStyle = \"none\" Then\r\n                                Win32.SetWindowPos(CType(TaskList, IntPtr), IntPtr.Zero, 0, Position, 0, 0, Win32.SWP_NOSIZE Or Win32.SWP_ASYNCWINDOWPOS Or Win32.SWP_NOACTIVATE Or Win32.SWP_NOZORDER Or Win32.SWP_NOSENDCHANGING)\r\n                            Else\r\n                                DaAnimator(Settings.AnimationStyle, CType(TaskList, IntPtr), TaskListPos.top, RebarPos.top, \"V\", Position, False, TaskbarWidth)\r\n                            End If\r\n                        End If\r\n                    End If\r\n\r\n                End If\r\n\r\n            Next\r\n        Catch ex As Exception\r\n\r\n            Console.WriteLine(\"@Calculator | \" & ex.Message)\r\n\r\n        End Try\r\n\r\n    End Sub\r\n\r\n    Private Shared Sub DaAnimator(animationStyle As String, taskList As IntPtr, taskListc As Integer, rebarc As Integer, orient As String, position As Integer, isprimary As Boolean, width As Integer)\r\n\r\n        If animationStyle = \"linear\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.Linear, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"expoeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ExpoEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"expoeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ExpoEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"expoeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ExpoEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"expoeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ExpoEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"circeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CircEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"circeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CircEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"circeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CircEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"circeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CircEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quadeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuadEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quadeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuadEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quadeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuadEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quadeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuadEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"sineeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.SineEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"sineeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.SineEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"sineeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.SineEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"sineeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.SineEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"cubiceaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CubicEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"cubiceasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CubicEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"cubiceaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CubicEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"cubiceaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.CubicEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quarteaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuartEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quarteasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuartEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quarteaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuartEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quarteaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuartEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quinteaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuintEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quinteasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuintEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quinteaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuintEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"quinteaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.QuintEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"elasticeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ElasticEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"elasticeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ElasticEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"elasticeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ElasticEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"elasticeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.ElasticEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"bounceeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BounceEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"bounceeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BounceEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"bounceeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BounceEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"bounceeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BounceEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"backeaseout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BackEaseOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"backeasein\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BackEaseIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"backeaseinout\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BackEaseInOut, position, Settings.AnimationSpeed, isprimary, width)\r\n        ElseIf animationStyle = \"backeaseoutin\" Then\r\n            Animate(CType(taskList, IntPtr), (taskListc - rebarc), orient, AddressOf Easings.BackEaseOutIn, position, Settings.AnimationSpeed, isprimary, width)\r\n        End If\r\n    End Sub\r\n\r\n#End Region\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/TaskbarStyle.vb",
    "content": "﻿Option Strict On\r\n\r\nImports System.Drawing\r\nImports System.Runtime.InteropServices\r\nImports System.Text\r\nImports System.Threading\r\n\r\nPublic Class TaskbarStyle\r\n\r\n    Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n\r\n    Public Declare Function EnumWindows Lib \"user32\" (ByVal Adress As CallBack, ByVal y As Integer) As Integer\r\n    Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)\r\n\r\n    Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)\r\n        windowHandles.Clear()\r\n        EnumWindows(AddressOf Enumerator, 0)\r\n\r\n\r\n        Dim maintaskbarfound As Boolean = False\r\n        Dim sectaskbarfound As Boolean = False\r\n\r\n        For Each Taskbar In windowHandles\r\n            Dim sClassName As New StringBuilder(\"\", 256)\r\n            Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n            If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                maintaskbarfound = True\r\n            End If\r\n            If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                sectaskbarfound = True\r\n            End If\r\n            Console.WriteLine(\"=\" & maintaskbarfound)\r\n        Next\r\n\r\n        If maintaskbarfound = False Then\r\n            Try\r\n                windowHandles.Add(Win32.FindWindow(\"Shell_TrayWnd\", Nothing))\r\n            Catch\r\n            End Try\r\n        End If\r\n\r\n        If sectaskbarfound = False Then\r\n            If Screen.AllScreens.Count >= 2 Then\r\n                ''MsgBox(Screen.AllScreens.Count)\r\n                Try\r\n                    windowHandles.Add(Win32.FindWindow(\"Shell_SecondaryTrayWnd\", Nothing))\r\n                Catch\r\n                End Try\r\n            End If\r\n        End If\r\n\r\n\r\n\r\n        Return ActiveWindows\r\n    End Function\r\n\r\n    Public Shared windowHandles As ArrayList = New ArrayList()\r\n    Public Shared maximizedwindows As ArrayList = New ArrayList()\r\n    Public Shared trays As ArrayList = New ArrayList()\r\n    Public Shared traysbackup As ArrayList = New ArrayList()\r\n    Public Shared normalwindows As ArrayList = New ArrayList()\r\n    Public Shared resetted As ArrayList = New ArrayList()\r\n\r\n    Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n        Dim sClassName As New StringBuilder(\"\", 256)\r\n        Call Win32.GetClassName(hwnd, sClassName, 256)\r\n        If sClassName.ToString = \"Shell_TrayWnd\" Or sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n            windowHandles.Add(hwnd)\r\n        End If\r\n        Return True\r\n    End Function\r\n\r\n    Shared Function IsPhanthom(ByVal hWnd As IntPtr) As Boolean\r\n        Dim CloakedVal As Integer\r\n        Dim hRes As Integer = Win32.DwmGetWindowAttribute(hWnd, Win32.DWMWINDOWATTRIBUTE.Cloaked, CloakedVal, Len(CloakedVal))\r\n        If hRes = Not 0 Then\r\n            CloakedVal = 0\r\n        End If\r\n        Return If(CBool(CloakedVal), True, False)\r\n    End Function\r\n\r\n    Public Shared Function Enumerator2(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n        Try\r\n            Dim intRet As Integer\r\n            Dim wpTemp As New Win32.WINDOWPLACEMENT\r\n            wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)\r\n            intRet = CInt(Win32.GetWindowPlacement(hwnd, wpTemp))\r\n            Dim style As Integer = Win32.GetWindowLong(hwnd, Win32.GWL_STYLE)\r\n\r\n            If IsPhanthom(hwnd) = False Then 'Fix phanthom windows\r\n                If (style And Win32.WS_VISIBLE) = Win32.WS_VISIBLE Then\r\n                    If wpTemp.showCmd = 3 Then\r\n                        maximizedwindows.Remove(hwnd)\r\n                        maximizedwindows.Add(hwnd)\r\n                    Else\r\n                        normalwindows.Remove(hwnd)\r\n                        normalwindows.Add(hwnd)\r\n                    End If\r\n                End If\r\n            End If\r\n        Catch ex As Exception\r\n        End Try\r\n        Return True\r\n    End Function\r\n\r\n    Public Shared Sub Tbsm()\r\n        Do\r\n\r\n            Dim windowsold As Integer\r\n            Dim windowsnew As Integer\r\n            windowsold = maximizedwindows.Count\r\n\r\n            maximizedwindows.Clear()\r\n            System.Threading.Thread.Sleep(250)\r\n            EnumWindows(AddressOf Enumerator2, 0)\r\n\r\n            windowsnew = maximizedwindows.Count\r\n\r\n            If Not windowsnew = windowsold Then\r\n                For Each tray As IntPtr In traysbackup\r\n                    For Each normalwindow As IntPtr In normalwindows\r\n                        Dim curmonx As Screen = Screen.FromHandle(normalwindow)\r\n                        Dim curmontbx As Screen = Screen.FromHandle(tray)\r\n                        If curmonx.DeviceName = curmontbx.DeviceName Then\r\n                            trays.Remove(tray)\r\n                            trays.Add(tray)\r\n\r\n                            ''If Not Settings.TaskbarRounding = 0 Then\r\n                            ''Dim tt As New Win32.RECT\r\n                            ''Win32.GetClientRect(tray, tt)\r\n                            ''Win32.SetWindowRgn(CType(tray, IntPtr), Win32.CreateRoundRectRgn(0, 0, tt.Right, tt.Bottom - tt.Top, Settings.TaskbarRounding, Settings.TaskbarRounding), True)\r\n                            ''End If\r\n                        End If\r\n                    Next\r\n                Next\r\n\r\n                For Each tray As IntPtr In traysbackup\r\n                    For Each maxedwindow As IntPtr In maximizedwindows\r\n                        Dim curmonx As Screen = Screen.FromHandle(maxedwindow)\r\n                        Dim curmontbx As Screen = Screen.FromHandle(tray)\r\n                        If curmonx.DeviceName = curmontbx.DeviceName Then\r\n                            trays.Remove(tray)\r\n                            Win32.PostMessage(tray, &H31E, CType(&H1, IntPtr), CType(&H0, IntPtr))\r\n                            ''  If Not Settings.TaskbarRounding = 0 Then\r\n                            ''  Dim tt As New Win32.RECT\r\n                            ''  Win32.GetClientRect(tray, tt)\r\n                            ''  Win32.SetWindowRgn(CType(tray, IntPtr), Win32.CreateRoundRectRgn(0, 0, tt.Right, tt.Bottom - tt.Top, 0, 0), True)\r\n                            ''End If\r\n                        End If\r\n                    Next\r\n                Next\r\n            End If\r\n\r\n        Loop\r\n    End Sub\r\n\r\n    Public Shared Sub TaskbarStyler()\r\n        Try\r\n\r\n            GetActiveWindows()\r\n\r\n\r\n            Dim accent = New Win32.AccentPolicy()\r\n            Dim accentStructSize = Marshal.SizeOf(accent)\r\n\r\n            'Select accent based on settings\r\n            If Settings.TaskbarStyle = 1 Then\r\n                accent.AccentState = Win32.AccentState.ACCENT_ENABLE_TRANSPARANT\r\n            End If\r\n\r\n            If Settings.TaskbarStyle = 2 Then\r\n                accent.AccentState = Win32.AccentState.ACCENT_ENABLE_BLURBEHIND\r\n            End If\r\n\r\n            If Settings.TaskbarStyle = 3 Then\r\n                accent.AccentState = Win32.AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND\r\n            End If\r\n\r\n            If Settings.TaskbarStyle = 4 Then\r\n                accent.AccentState = Win32.AccentState.ACCENT_ENABLE_TRANSPARENTGRADIENT\r\n            End If\r\n\r\n            If Settings.TaskbarStyle = 5 Then\r\n                accent.AccentState = Win32.AccentState.ACCENT_ENABLE_GRADIENT\r\n            End If\r\n\r\n            accent.AccentFlags = 2 'enable colorize\r\n            accent.GradientColor = BitConverter.ToInt32(New Byte() {CByte(Settings.TaskbarStyleRed), CByte(Settings.TaskbarStyleGreen), CByte(Settings.TaskbarStyleBlue), CByte(Settings.TaskbarStyleAlpha * 2.55)}, 0)\r\n\r\n            'Save accent data\r\n            Dim accentPtr = Marshal.AllocHGlobal(accentStructSize)\r\n            Marshal.StructureToPtr(accent, accentPtr, False)\r\n\r\n            Dim data = New Win32.WindowCompositionAttributeData\r\n            data.Attribute = Win32.WindowCompositionAttribute.WCA_ACCENT_POLICY\r\n            data.SizeOfData = accentStructSize\r\n            data.Data = accentPtr\r\n\r\n            'Put all TrayWnds into an ArrayList\r\n            For Each trayWnd As IntPtr In windowHandles\r\n                trays.Add(trayWnd)\r\n                traysbackup.Add(trayWnd)\r\n            Next\r\n\r\n            If Settings.DefaultTaskbarStyleOnWinMax = 1 Then\r\n                Dim t2 As Thread = New Thread(AddressOf Tbsm)\r\n                t2.Start()\r\n            End If\r\n\r\n            'Set taskbar style for all TrayWnds each 14 millisecond\r\n            For Each tray As IntPtr In trays\r\n                Dim trayptr As IntPtr = CType(tray.ToString, IntPtr)\r\n                Win32.SetWindowCompositionAttribute(CType(trayptr, IntPtr), data)\r\n\r\n\r\n\r\n\r\n                '' Dim tt As New ListBox\r\n                '' Dim TrayPos2 As Win32.RECT\r\n                '' Win32.GetWindowRect(tray, TrayPos2)\r\n                '' tt.Top = 0\r\n                '' tt.Left = 0\r\n                '' tt.Height = 2000\r\n                '' tt.Width = 2000\r\n                '' tt.BackColor = Color.Red\r\n\r\n                ''  tt.FormBorderStyle = FormBorderStyle.None\r\n                ''  Win32.SetWindowLong(tt.Handle, CType(Win32.GWL_STYLE, Win32.WindowStyles), &H80000000L)\r\n                '' tt.Show()\r\n                '' Dim myProg As New Process\r\n                '' With myProg.StartInfo\r\n                ''     .FileName = \"D:\\Visual Studio Projects\\!TaskbarX\\APPX\\TaskbarX\\Release\\TaskbarX Configurator.exe\"\r\n                ''     .Arguments = \"\"\r\n                '' End With\r\n                '' myProg.Start()\r\n\r\n                '' Thread.Sleep(5000)\r\n\r\n\r\n                ''Win32.SetParent(myProg.MainWindowHandle, tray)\r\n\r\n            Next\r\n\r\n            Do\r\n                Try\r\n\r\n                    For Each tray As IntPtr In trays\r\n                        Win32.SetWindowCompositionAttribute(tray, data)\r\n                    Next\r\n                    System.Threading.Thread.Sleep(10)\r\n                Catch\r\n                End Try\r\n            Loop\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n    End Sub\r\n\r\n    Public Shared childLeft As Integer\r\n    Public Shared childTop As Integer\r\n    Public Shared childWidth As Integer\r\n    Public Shared childHeight As Integer\r\n\r\n    Public Shared Function GetLocation(ByVal acc As Accessibility.IAccessible, ByVal idChild As Integer) As Integer\r\n        acc.accLocation(childLeft, childTop, childWidth, childHeight, idChild)\r\n        Return Nothing\r\n    End Function\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX/TaskbarX.vbproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProjectGuid>{280F29CB-27F8-41FA-8111-21E6916583FD}</ProjectGuid>\r\n    <OutputType>WinExe</OutputType>\r\n    <StartupObject>Sub Main</StartupObject>\r\n    <RootNamespace>TaskbarX</RootNamespace>\r\n    <AssemblyName>TaskbarX</AssemblyName>\r\n    <FileAlignment>512</FileAlignment>\r\n    <MyType>WindowsFormsWithCustomSubMain</MyType>\r\n    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>\r\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\r\n    <Deterministic>true</Deterministic>\r\n    <IsWebBootstrapper>false</IsWebBootstrapper>\r\n    <TargetFrameworkProfile>\r\n    </TargetFrameworkProfile>\r\n    <PublishUrl>publish\\</PublishUrl>\r\n    <Install>true</Install>\r\n    <InstallFrom>Disk</InstallFrom>\r\n    <UpdateEnabled>false</UpdateEnabled>\r\n    <UpdateMode>Foreground</UpdateMode>\r\n    <UpdateInterval>7</UpdateInterval>\r\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r\n    <UpdatePeriodically>false</UpdatePeriodically>\r\n    <UpdateRequired>false</UpdateRequired>\r\n    <MapFileExtensions>true</MapFileExtensions>\r\n    <ApplicationRevision>1</ApplicationRevision>\r\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r\n    <UseApplicationTrust>false</UseApplicationTrust>\r\n    <PublishWizardCompleted>true</PublishWizardCompleted>\r\n    <BootstrapperEnabled>true</BootstrapperEnabled>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <NoWarn>\r\n    </NoWarn>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugType>pdbonly</DebugType>\r\n    <DefineDebug>false</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <NoWarn>\r\n    </NoWarn>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <RemoveIntegerChecks>false</RemoveIntegerChecks>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionExplicit>On</OptionExplicit>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionCompare>Binary</OptionCompare>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionStrict>On</OptionStrict>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionInfer>On</OptionInfer>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ApplicationIcon>StoreLogo-71.ico</ApplicationIcon>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ApplicationManifest>My Project\\app.manifest</ApplicationManifest>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX64\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX32\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX.xml</DocumentationFile>\r\n    <Optimize>true</Optimize>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ManifestCertificateThumbprint>A30E266A1B577C5BECBC296B8B085D7B41991D7B</ManifestCertificateThumbprint>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ManifestKeyFile>TaskbarX_TemporaryKey.pfx</ManifestKeyFile>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <GenerateManifests>true</GenerateManifests>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <SignManifests>false</SignManifests>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"System\">\r\n      <EmbedInteropTypes>False</EmbedInteropTypes>\r\n      <Private>True</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Drawing\" />\r\n    <Reference Include=\"System.Windows.Forms\" />\r\n    <Reference Include=\"WindowsBase\">\r\n      <Private>True</Private>\r\n      <EmbedInteropTypes>False</EmbedInteropTypes>\r\n    </Reference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Import Include=\"Microsoft.VisualBasic\" />\r\n    <Import Include=\"System\" />\r\n    <Import Include=\"System.Collections\" />\r\n    <Import Include=\"System.Collections.Generic\" />\r\n    <Import Include=\"System.Diagnostics\" />\r\n    <Import Include=\"System.Linq\" />\r\n    <Import Include=\"System.Windows.Forms\" />\r\n    <Import Include=\"System.Threading.Tasks\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"MSAA.vb\" />\r\n    <Compile Include=\"Settings.vb\" />\r\n    <Compile Include=\"TaskbarAnimate.vb\" />\r\n    <Compile Include=\"Easings.vb\" />\r\n    <Compile Include=\"Main.vb\" />\r\n    <Compile Include=\"My Project\\AssemblyInfo.vb\" />\r\n    <Compile Include=\"My Project\\Application.Designer.vb\">\r\n      <AutoGen>True</AutoGen>\r\n      <DependentUpon>Application.myapp</DependentUpon>\r\n      <DesignTime>True</DesignTime>\r\n    </Compile>\r\n    <Compile Include=\"My Project\\Resources.Designer.vb\">\r\n      <AutoGen>True</AutoGen>\r\n      <DesignTime>True</DesignTime>\r\n      <DependentUpon>Resources.resx</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"My Project\\Settings.Designer.vb\">\r\n      <AutoGen>True</AutoGen>\r\n      <DependentUpon>Settings.settings</DependentUpon>\r\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\r\n    </Compile>\r\n    <Compile Include=\"TaskbarCenter.vb\" />\r\n    <Compile Include=\"TaskbarStyle.vb\" />\r\n    <Compile Include=\"TrayIconBuster.vb\" />\r\n    <Compile Include=\"Win32.vb\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <EmbeddedResource Include=\"My Project\\Resources.resx\">\r\n      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>\r\n      <LastGenOutput>Resources.Designer.vb</LastGenOutput>\r\n      <CustomToolNamespace>My.Resources</CustomToolNamespace>\r\n      <SubType>Designer</SubType>\r\n    </EmbeddedResource>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\".editorconfig\" />\r\n    <None Include=\"My Project\\app.manifest\" />\r\n    <None Include=\"My Project\\Application.myapp\">\r\n      <Generator>MyApplicationCodeGenerator</Generator>\r\n      <LastGenOutput>Application.Designer.vb</LastGenOutput>\r\n    </None>\r\n    <None Include=\"My Project\\Settings.settings\">\r\n      <Generator>SettingsSingleFileGenerator</Generator>\r\n      <CustomToolNamespace>My</CustomToolNamespace>\r\n      <LastGenOutput>Settings.Designer.vb</LastGenOutput>\r\n    </None>\r\n    <None Include=\"App.config\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <BootstrapperPackage Include=\".NETFramework,Version=v4.8\">\r\n      <Visible>False</Visible>\r\n      <ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>\r\n      <Install>true</Install>\r\n    </BootstrapperPackage>\r\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\r\n      <Visible>False</Visible>\r\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\r\n      <Install>false</Install>\r\n    </BootstrapperPackage>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"Resources\\icon.ico\" />\r\n    <Content Include=\"StoreLogo-71.ico\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <COMReference Include=\"Accessibility\">\r\n      <Guid>{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}</Guid>\r\n      <VersionMajor>1</VersionMajor>\r\n      <VersionMinor>1</VersionMinor>\r\n      <Lcid>0</Lcid>\r\n      <WrapperTool>tlbimp</WrapperTool>\r\n      <Isolated>False</Isolated>\r\n      <EmbedInteropTypes>True</EmbedInteropTypes>\r\n    </COMReference>\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.VisualBasic.targets\" />\r\n</Project>"
  },
  {
    "path": "TaskbarX/TaskbarX/TrayIconBuster.vb",
    "content": "﻿\r\nImports System.Runtime.InteropServices\r\nImports System.Text\r\n\r\n\r\nNamespace TrayIconBuster\r\n\tFriend Class TrayIconBuster\r\n\t\tPrivate Const TB_BUTTONCOUNT As UInteger = &H418\r\n\t\tPrivate Const TB_GETBUTTON As UInteger = &H417\r\n\t\tPrivate Const TB_DELETEBUTTON As UInteger = &H416\r\n\r\n\t\tPrivate Shared key As New Object()\r\n\r\n\t\tPublic Shared is64bit As Boolean\r\n\r\n\r\n\r\n\t\t<StructLayout(LayoutKind.Sequential)>\r\n\t\tPublic Structure SYSTEM_INFO\r\n\t\t\tPublic processorArchitecture As UShort\r\n\t\t\tPrivate reserved As UShort\r\n\t\t\tPublic pageSize As UInteger\r\n\t\t\tPublic minimumApplicationAddress As IntPtr\r\n\t\t\tPublic maximumApplicationAddress As IntPtr\r\n\t\t\tPublic activeProcessorMask As UIntPtr\r\n\t\t\tPublic numberOfProcessors As UInteger\r\n\t\t\tPublic processorType As UInteger\r\n\t\t\tPublic allocationGranularity As UInteger\r\n\t\t\tPublic processorLevel As UShort\r\n\t\t\tPublic processorRevision As UShort\r\n\t\tEnd Structure\r\n\r\n\t\t<DllImport(\"kernel32.dll\")>\r\n\t\tPrivate Shared Sub GetSystemInfo(ByRef lpSystemInfo As SYSTEM_INFO)\r\n\t\tEnd Sub\r\n\r\n\t\tPublic Shared Function RemovePhantomIcons() As UInteger\r\n\t\t\tDim is64bitWin As Boolean = Environment.Is64BitOperatingSystem\r\n\t\t\tDim tbb64 As New ToolBarButton64()\r\n\t\t\tDim tbb32 As New ToolBarButton32()\r\n\t\t\tDim td As New TrayData()\r\n\t\t\tDim foundSomeExe As Boolean = False\r\n\t\t\tDim totalRemovedCount As Integer = 0\r\n\t\t\tDim totalItemCount As Integer = 0\r\n\r\n\t\t\tSyncLock key\r\n\t\t\t\tFor pass As Integer = 1 To 2\r\n\t\t\t\t\tFor kind As Integer = 0 To 1\r\n\t\t\t\t\t\tDim hWnd As IntPtr = IntPtr.Zero\r\n\t\t\t\t\t\tIf kind = 0 Then\r\n\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"Shell_TrayWnd\")\r\n\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"TrayNotifyWnd\")\r\n\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"SysPager\")\r\n\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"ToolbarWindow32\")\r\n\t\t\t\t\t\tElse\r\n\t\t\t\t\t\t\t' get the hidden icon collection that exists since Windows 7\r\n\t\t\t\t\t\t\tTry\r\n\t\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"NotifyIconOverflowWindow\")\r\n\t\t\t\t\t\t\t\tFindNestedWindow(hWnd, \"ToolbarWindow32\")\r\n\t\t\t\t\t\t\tCatch\r\n\t\t\t\t\t\t\t\t' fail silently, as NotifyIconOverflowWindow did not exist prior to Win7\r\n\t\t\t\t\t\t\t\tExit For\r\n\t\t\t\t\t\t\tEnd Try\r\n\t\t\t\t\t\tEnd If\r\n\t\t\t\t\t\t' create an object so we can exchange data with other process\r\n\t\t\t\t\t\tUsing process As New LP_Process(hWnd)\r\n\t\t\t\t\t\t\tDim remoteButtonPtr As IntPtr\r\n\t\t\t\t\t\t\tIf is64bitWin Then\r\n\t\t\t\t\t\t\t\tremoteButtonPtr = process.Allocate(tbb64)\r\n\t\t\t\t\t\t\tElse\r\n\t\t\t\t\t\t\t\tremoteButtonPtr = process.Allocate(tbb32)\r\n\t\t\t\t\t\t\tEnd If\r\n\t\t\t\t\t\t\tprocess.Allocate(td)\r\n\t\t\t\t\t\t\tDim itemCount As UInteger = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_BUTTONCOUNT, IntPtr.Zero, IntPtr.Zero))))\r\n\t\t\t\t\t\t\t'log(\"There are \"+itemCount+\" tray icons (some of them hidden)\");\r\n\t\t\t\t\t\t\tDim removedCount As Integer = 0\r\n\t\t\t\t\t\t\tFor item As UInteger = 0 To CUInt(itemCount - 1)\r\n\r\n\t\t\t\t\t\t\t\ttotalItemCount += 1\r\n\t\t\t\t\t\t\t\t' index changes when previous items got removed !\r\n\t\t\t\t\t\t\t\tDim item2 As UInteger = CUInt(item - removedCount)\r\n\t\t\t\t\t\t\t\tDim SOK As UInteger = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_GETBUTTON, New IntPtr(item2), remoteButtonPtr))))\r\n\t\t\t\t\t\t\t\tIf SOK <> 1 Then\r\n\t\t\t\t\t\t\t\t\tThrow New ApplicationException(\"TB_GETBUTTON failed\")\r\n\t\t\t\t\t\t\t\tEnd If\r\n\t\t\t\t\t\t\t\tIf is64bitWin Then\r\n\t\t\t\t\t\t\t\t\tprocess.Read(tbb64, remoteButtonPtr)\r\n\t\t\t\t\t\t\t\t\tprocess.Read(td, tbb64.dwData)\r\n\t\t\t\t\t\t\t\tElse\r\n\t\t\t\t\t\t\t\t\tprocess.Read(tbb32, remoteButtonPtr)\r\n\t\t\t\t\t\t\t\t\tprocess.Read(td, tbb32.dwData)\r\n\t\t\t\t\t\t\t\tEnd If\r\n\t\t\t\t\t\t\t\tDim hWnd2 As IntPtr = td.hWnd\r\n\r\n\t\t\t\t\t\t\t\tUsing proc As New LP_Process(hWnd2)\r\n\t\t\t\t\t\t\t\t\tDim filename As String = proc.GetImageFileName()\r\n\r\n\t\t\t\t\t\t\t\t\t' a phantom icon has no imagefilename\r\n\t\t\t\t\t\t\t\t\tIf filename Is Nothing Then\r\n\t\t\t\t\t\t\t\t\t\tSOK = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_DELETEBUTTON, New IntPtr(item2), IntPtr.Zero))))\r\n\r\n\t\t\t\t\t\t\t\t\t\tremovedCount += 1\r\n\t\t\t\t\t\t\t\t\t\ttotalRemovedCount += 1\r\n\t\t\t\t\t\t\t\t\tEnd If\r\n\t\t\t\t\t\t\t\tEnd Using\r\n\t\t\t\t\t\t\tNext item\r\n\t\t\t\t\t\tEnd Using\r\n\t\t\t\t\tNext kind ' next kind\r\n\r\n\r\n\t\t\t\tNext pass\r\n\t\t\tEnd SyncLock ' release lock\r\n\r\n\t\t\tReturn CUInt(totalRemovedCount)\r\n\t\tEnd Function\r\n\r\n\t\t' Find a topmost or nested window with specified name\r\n\t\tPrivate Shared Sub FindNestedWindow(ByRef hWnd As IntPtr, ByVal name As String)\r\n\t\t\tIf hWnd = IntPtr.Zero Then\r\n\t\t\t\thWnd = FindWindow(name, Nothing)\r\n\t\t\tElse\r\n\t\t\t\thWnd = FindWindowEx(hWnd, IntPtr.Zero, name, Nothing)\r\n\t\t\tEnd If\r\n\t\tEnd Sub\r\n\r\n\t\t<DllImport(\"user32.dll\", EntryPoint:=\"SendMessageA\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPublic Shared Function SendMessage(ByVal Hdc As IntPtr, ByVal Msg_Const As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"user32.dll\", EntryPoint:=\"FindWindowA\", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)>\r\n\t\tPublic Shared Function FindWindow(ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"user32.dll\", EntryPoint:=\"FindWindowExA\", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)>\r\n\t\tPublic Shared Function FindWindowEx(ByVal hwndParent As IntPtr, ByVal hwndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr\r\n\t\tEnd Function\r\n\r\n\r\n\t\t<StructLayout(LayoutKind.Sequential)>\r\n\t\tPublic Class ToolBarButton32\r\n\t\t\tPublic iBitmap As UInteger\r\n\t\t\tPublic idCommand As UInteger\r\n\t\t\tPublic fsState As Byte\r\n\t\t\tPublic fsStyle As Byte\r\n\t\t\tPrivate bReserved0 As Byte\r\n\t\t\tPrivate bReserved1 As Byte\r\n\t\t\tPublic dwData As IntPtr\r\n\t\t\tPublic iString As UInteger\r\n\t\tEnd Class\r\n\t\t<StructLayout(LayoutKind.Sequential)>\r\n\t\tPublic Class ToolBarButton64\r\n\t\t\tPublic iBitmap As UInteger\r\n\t\t\tPublic idCommand As UInteger\r\n\t\t\tPublic fsState As Byte\r\n\t\t\tPublic fsStyle As Byte\r\n\t\t\tPrivate bReserved0 As Byte\r\n\t\t\tPrivate bReserved1 As Byte\r\n\t\t\tPrivate bReserved2 As Byte\r\n\t\t\tPrivate bReserved3 As Byte\r\n\t\t\tPrivate bReserved4 As Byte\r\n\t\t\tPrivate bReserved5 As Byte\r\n\t\t\tPublic dwData As IntPtr\r\n\t\t\tPublic iString As UInteger\r\n\t\tEnd Class\r\n\r\n\r\n\t\t<StructLayout(LayoutKind.Sequential)>\r\n\t\tPublic Class TrayData\r\n\t\t\tPublic hWnd As IntPtr\r\n\t\t\tPublic uID As UInteger\r\n\t\t\tPublic uCallbackMessage As UInteger\r\n\t\t\tPrivate reserved0 As UInteger\r\n\t\t\tPrivate reserved1 As UInteger\r\n\t\t\tPublic hIcon As IntPtr\r\n\t\tEnd Class\r\n\tEnd Class\r\n\r\n\r\n\tPublic Class LP_Process\r\n\t\tImplements IDisposable\r\n\r\n\r\n\t\tPrivate Const PROCESS_VM_OPERATION As UInteger = &H8\r\n\t\tPrivate Const PROCESS_VM_READ As UInteger = &H10\r\n\t\tPrivate Const PROCESS_VM_WRITE As UInteger = &H20\r\n\t\tPrivate Const PROCESS_QUERY_INFORMATION As UInteger = &H400\r\n\r\n\t\tPrivate Const MEM_COMMIT As UInteger = &H1000\r\n\t\tPrivate Const MEM_RELEASE As UInteger = &H8000\r\n\t\tPrivate Const PAGE_READWRITE As UInteger = &H4\r\n\r\n\r\n\t\tPrivate hProcess As IntPtr\r\n\r\n\r\n\t\tPrivate ownerProcessID As UInteger\r\n\r\n\r\n\t\tPrivate allocations As New ArrayList()\r\n\r\n\t\tPublic Sub New(ByVal hWnd As IntPtr)\r\n\t\t\tGetWindowThreadProcessId(hWnd, ownerProcessID)\r\n\r\n\t\t\thProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE Or PROCESS_QUERY_INFORMATION, False, ownerProcessID)\r\n\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tPublic Sub Dispose() Implements IDisposable.Dispose\r\n\t\t\tIf hProcess <> IntPtr.Zero Then\r\n\t\t\t\tFor Each ptr As IntPtr In allocations\r\n\t\t\t\t\tVirtualFreeEx(hProcess, ptr, 0, MEM_RELEASE)\r\n\t\t\t\tNext ptr\r\n\t\t\t\tCloseHandle(hProcess)\r\n\t\t\tEnd If\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tPublic Function GetImageFileName() As String\r\n\t\t\tDim sb As New StringBuilder(1024)\r\n\t\t\tDim OK As Boolean = GetProcessImageFileName(hProcess, sb, sb.Capacity - 1)\r\n\t\t\tIf Not OK Then\r\n\t\t\t\tReturn Nothing\r\n\t\t\tEnd If\r\n\t\t\tReturn sb.ToString()\r\n\t\tEnd Function\r\n\r\n\r\n\t\tPublic Function Allocate(ByVal managedObject As Object) As IntPtr\r\n\t\t\tDim size As Integer = Marshal.SizeOf(managedObject)\r\n\t\t\tDim ptr As IntPtr = VirtualAllocEx(hProcess, 0, size, MEM_COMMIT, PAGE_READWRITE)\r\n\r\n\t\t\tIf ptr <> IntPtr.Zero Then\r\n\t\t\t\tallocations.Add(ptr)\r\n\t\t\tEnd If\r\n\t\t\tReturn ptr\r\n\t\tEnd Function\r\n\r\n\r\n\t\tPublic Sub Read(ByVal obj As Object, ByVal ptr As IntPtr)\r\n\t\t\tUsing pin As New LP_Pinner(obj)\r\n\t\t\t\tDim bytesRead As UInteger = 0\r\n\t\t\t\tDim size As Integer = Marshal.SizeOf(obj)\r\n\t\t\t\tIf Not ReadProcessMemory(hProcess, ptr, pin.Ptr, size, bytesRead) Then\r\n\t\t\t\t\tDim err As Integer = GetLastError()\r\n\t\t\t\t\tDim s As String = \"Read failed; err=\" & err & \"; bytesRead=\" & bytesRead\r\n\t\t\t\t\tThrow New ApplicationException(s)\r\n\t\t\t\tEnd If\r\n\t\t\tEnd Using\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tPublic Function ReadString(ByVal size As Integer, ByVal ptr As IntPtr) As String\r\n\t\t\tDim sb As New StringBuilder(size)\r\n\t\t\tDim bytesRead As UInteger = 0\r\n\t\t\tIf Not ReadProcessMemory(hProcess, ptr, sb, size, bytesRead) Then\r\n\t\t\t\tDim err As Integer = GetLastError()\r\n\t\t\t\tDim s As String = \"Read failed; err=\" & err & \"; bytesRead=\" & bytesRead\r\n\t\t\t\tThrow New ApplicationException(s)\r\n\t\t\tEnd If\r\n\t\t\tReturn sb.ToString()\r\n\t\tEnd Function\r\n\r\n\r\n\t\tPublic Sub Write(ByVal obj As Object, ByVal size As Integer, ByVal ptr As IntPtr)\r\n\t\t\tUsing pin As New LP_Pinner(obj)\r\n\t\t\t\tDim bytesWritten As UInteger = 0\r\n\t\t\t\tIf Not WriteProcessMemory(hProcess, ptr, pin.Ptr, size, bytesWritten) Then\r\n\t\t\t\t\tDim err As Integer = GetLastError()\r\n\t\t\t\t\tDim s As String = \"Write failed; err=\" & err & \"; bytesWritten=\" & bytesWritten\r\n\t\t\t\t\tThrow New ApplicationException(s)\r\n\t\t\t\tEnd If\r\n\t\t\tEnd Using\r\n\t\tEnd Sub\r\n\r\n\r\n\t\t<DllImport(\"user32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByRef procId As UInteger) As UInteger\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function OpenProcess(ByVal access As UInteger, ByVal inheritHandle As Boolean, ByVal procID As UInteger) As IntPtr\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function CloseHandle(ByVal handle As IntPtr) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function VirtualAllocEx(ByVal hProcess As IntPtr, ByVal address As Integer, ByVal size As Integer, ByVal allocationType As UInteger, ByVal protection As UInteger) As IntPtr\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function VirtualFreeEx(ByVal hProcess As IntPtr, ByVal address As IntPtr, ByVal size As Integer, ByVal freeType As UInteger) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal otherAddress As IntPtr, ByVal localAddress As IntPtr, ByVal size As Integer, ByRef bytesWritten As UInteger) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function ReadProcessMemory(ByVal hProcess As IntPtr, ByVal otherAddress As IntPtr, ByVal localAddress As IntPtr, ByVal size As Integer, ByRef bytesRead As UInteger) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function ReadProcessMemory(ByVal hProcess As IntPtr, ByVal otherAddress As IntPtr, ByVal localAddress As StringBuilder, ByVal size As Integer, ByRef bytesRead As UInteger) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"psapi.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPrivate Shared Function GetProcessImageFileName(ByVal hProcess As IntPtr, ByVal fileName As StringBuilder, ByVal fileNameSize As Integer) As Boolean\r\n\t\tEnd Function\r\n\r\n\t\t<DllImport(\"kernel32.dll\", CallingConvention:=CallingConvention.StdCall)>\r\n\t\tPublic Shared Function GetLastError() As Integer\r\n\t\tEnd Function\r\n\tEnd Class\r\n\r\n\tPublic Class LP_Pinner\r\n\t\tImplements IDisposable\r\n\r\n\t\tPrivate handle As GCHandle\r\n\t\tPrivate disposed As Boolean\r\n\r\n\t\tPrivate ptr_Conflict As IntPtr\r\n\r\n\r\n\t\tPublic Sub New(ByVal obj As Object)\r\n\r\n\t\t\thandle = GCHandle.Alloc(obj, GCHandleType.Pinned)\r\n\t\t\tptr_Conflict = handle.AddrOfPinnedObject()\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tProtected Overrides Sub Finalize()\r\n\t\t\tDispose()\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tPublic Sub Dispose() Implements IDisposable.Dispose\r\n\t\t\tIf Not disposed Then\r\n\r\n\t\t\t\tdisposed = True\r\n\t\t\t\thandle.Free()\r\n\t\t\t\tptr_Conflict = IntPtr.Zero\r\n\t\t\tEnd If\r\n\t\tEnd Sub\r\n\r\n\r\n\t\tPublic ReadOnly Property Ptr() As IntPtr\r\n\t\t\tGet\r\n\t\t\t\tReturn ptr_Conflict\r\n\t\t\tEnd Get\r\n\t\tEnd Property\r\n\tEnd Class\r\nEnd Namespace\r\n"
  },
  {
    "path": "TaskbarX/TaskbarX/Win32.vb",
    "content": "﻿Option Strict On\r\n\r\nImports System.Runtime.InteropServices\r\nImports System.Text\r\n\r\nPublic Class Win32\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function ShowWindow(hWnd As IntPtr, <MarshalAs(UnmanagedType.I4)> nCmdShow As ShowWindowCommands) As <MarshalAs(UnmanagedType.Bool)> Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True)>\r\n    Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInt32) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", CharSet:=CharSet.Auto)>\r\n    Public Shared Function GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"User32.dll\")>\r\n    Public Shared Function EnumChildWindows(ByVal WindowHandle As IntPtr, ByVal Callback As EnumWindowProcess, ByVal lParam As IntPtr) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function SetWindowCompositionAttribute(ByVal hwnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lclassName As String, ByVal windowTitle As String) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", ExactSpelling:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function GetParent(ByVal hWnd As IntPtr) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", CharSet:=CharSet.Auto)>\r\n    Public Shared Function GetClientRect(ByVal hWnd As System.IntPtr, ByRef lpRECT As RECT) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Shared Function SetWindowRgn(ByVal hWnd As IntPtr, ByVal hRgn As IntPtr, ByVal bRedraw As Boolean) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Shared Function GetWindowRgn(ByVal hWnd As IntPtr, ByVal hRgn As IntPtr) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"gdi32.dll\")>\r\n    Public Shared Function CreateRoundRectRgn(ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer, ByVal w As Integer, ByVal h As Integer) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"gdi32.dll\")>\r\n    Public Shared Function CreateRectRgn(ByVal nLeftRect As Integer, ByVal nTopRect As Integer, ByVal nRightRect As Integer, ByVal nBottomRect As Integer) As IntPtr\r\n    End Function\r\n\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function MonitorFromWindow(ByVal hwnd As IntPtr, ByVal dwFlags As UInteger) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function GetMonitorInfo(ByVal hMonitor As IntPtr, ByRef lpmi As MONITORINFO) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True)>\r\n    Public Shared Function GetForegroundWindow() As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True)>\r\n    Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"SHCore.dll\", SetLastError:=True)>\r\n    Public Shared Function SetProcessDpiAwareness(ByVal awareness As PROCESS_DPI_AWARENESS) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", EntryPoint:=\"FindWindow\", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)>\r\n    Public Shared Function FindWindowByClass(ByVal lpClassName As String, ByVal zero As IntPtr) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Boolean, ByVal lParam As Int32) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"kernel32.dll\")>\r\n    Public Shared Function SetProcessWorkingSetSize(ByVal hProcess As IntPtr, ByVal dwMinimumWorkingSetSize As Int32, ByVal dwMaximumWorkingSetSize As Int32) As Int32\r\n    End Function\r\n\r\n    <System.Runtime.InteropServices.DllImport(\"user32.dll\", EntryPoint:=\"SetWindowLong\")>\r\n    Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, <MarshalAs(UnmanagedType.I4)> nIndex As WindowStyles, ByVal dwNewLong As Integer) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"kernel32.dll\", SetLastError:=True)>\r\n    Public Shared Function AllocConsole() As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=False)>\r\n    Public Shared Function GetDesktopWindow() As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"dwmapi.dll\")>\r\n    Public Shared Function DwmGetWindowAttribute(ByVal hwnd As IntPtr, ByVal dwAttribute As DWMWINDOWATTRIBUTE, ByRef pvAttribute As Integer, ByVal cbAttribute As Integer) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"dwmapi.dll\")>\r\n    Public Shared Function DwmSetWindowAttribute(ByVal hwnd As IntPtr, ByVal dwAttribute As DWMWINDOWATTRIBUTE, ByRef pvAttribute As RECT, ByVal cbAttribute As Integer) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", CharSet:=CharSet.Auto, SetLastError:=False)>\r\n    Public Shared Function SendNotifyMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As String) As Boolean\r\n    End Function\r\n\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function SetLayeredWindowAttributes(ByVal hwnd As IntPtr, ByVal crKey As UInteger, ByVal bAlpha As Byte, ByVal dwFlags As UInteger) As Boolean\r\n    End Function\r\n\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function RedrawWindow(hWnd As IntPtr, lprcUpdate As IntPtr, hrgnUpdate As IntPtr, flags As RedrawWindowFlags) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"gdi32.dll\")>\r\n    Public Shared Function CombineRgn(ByVal hrgnDest As IntPtr,\r\n   ByVal hrgnSrc1 As IntPtr, ByVal hrgnSrc2 As IntPtr,\r\n   ByVal fnCombineMode As Integer) As Integer\r\n    End Function\r\n\r\n\r\n    Enum DWMWINDOWATTRIBUTE As UInteger\r\n        NCRenderingEnabled = 1\r\n        NCRenderingPolicy\r\n        TransitionsForceDisabled\r\n        AllowNCPaint\r\n        CaptionButtonBounds\r\n        NonClientRtlLayout\r\n        ForceIconicRepresentation\r\n        Flip3DPolicy\r\n        ExtendedFrameBounds\r\n        HasIconicBitmap\r\n        DisallowPeek\r\n        ExcludedFromPeek\r\n        Cloak\r\n        Cloaked\r\n        FreezeRepresentation\r\n    End Enum\r\n\r\n\r\n    Enum RedrawWindowFlags As UInteger\r\n        Invalidate = &H1\r\n        InternalPaint = &H2\r\n        [Erase] = &H4\r\n        Validate = &H8\r\n        NoInternalPaint = &H10\r\n        NoErase = &H20\r\n        NoChildren = &H40\r\n        AllChildren = &H80\r\n        UpdateNow = &H100\r\n        EraseNow = &H200\r\n        Frame = &H400\r\n        NoFrame = &H800\r\n    End Enum\r\n\r\n    Public Structure POINTAPI\r\n        Public x As Integer\r\n        Public y As Integer\r\n    End Structure\r\n\r\n    Public Shared WS_BORDER As Integer = 8388608\r\n    Public Shared WS_DLGFRAME As Integer = 4194304\r\n    Public Shared WS_CAPTION As Integer = WS_BORDER Or WS_DLGFRAME\r\n    Public Shared WS_VISIBLE As Integer = 268435456\r\n\r\n    Public Structure WINDOWPLACEMENT\r\n        Public Length As Integer\r\n        Public flags As Integer\r\n        Public showCmd As Integer\r\n        Public ptMinPosition As POINTAPI\r\n        Public ptMaxPosition As POINTAPI\r\n        Public rcNormalPosition As RECT\r\n    End Structure\r\n\r\n    Public Enum PROCESS_DPI_AWARENESS\r\n        Process_DPI_Unaware = 0\r\n        Process_System_DPI_Aware = 1\r\n        Process_Per_Monitor_DPI_Aware = 2\r\n    End Enum\r\n\r\n    Public Shared WM_DWMCOLORIZATIONCOLORCHANGED As Integer = &H320\r\n    Public Shared WM_DWMCOMPOSITIONCHANGED As Integer = &H31E\r\n    Public Shared WM_THEMECHANGED As Integer = &H31A\r\n\r\n    Public Const WM_SETREDRAW As Integer = 11\r\n\r\n    Public Structure WindowCompositionAttributeData\r\n        Public Attribute As WindowCompositionAttribute\r\n        Public Data As IntPtr\r\n        Public SizeOfData As Integer\r\n    End Structure\r\n\r\n    Public Enum WindowCompositionAttribute\r\n        WCA_ACCENT_POLICY = 19\r\n    End Enum\r\n\r\n    Public Structure RECT\r\n        Public Left As Integer\r\n        Public Top As Integer\r\n        Public Right As Integer\r\n        Public Bottom As Integer\r\n    End Structure\r\n\r\n    Public Structure MONITORINFO\r\n        Public cbSize As Long\r\n        Public rcMonitor As RECT\r\n        Public rcWork As RECT\r\n        Public dwFlags As Long\r\n    End Structure\r\n\r\n    Friend Enum AccentState\r\n        ACCENT_DISABLED = 0\r\n        ACCENT_ENABLE_GRADIENT = 1\r\n        ACCENT_ENABLE_TRANSPARENTGRADIENT = 2\r\n        ACCENT_ENABLE_BLURBEHIND = 3\r\n        ACCENT_ENABLE_TRANSPARANT = 6\r\n        ACCENT_ENABLE_ACRYLICBLURBEHIND = 4\r\n        ACCENT_NORMAL = 150\r\n    End Enum\r\n\r\n    <StructLayout(LayoutKind.Sequential)>\r\n    Friend Structure AccentPolicy\r\n        Public AccentState As AccentState\r\n        Public AccentFlags As Integer\r\n        Public GradientColor As Integer\r\n        Public AnimationId As Integer\r\n    End Structure\r\n\r\n    Public Const GWL_STYLE = -16\r\n    Public Const GWL_EXSTYLE = -20\r\n    Public Const WS_MAXIMIZE = 16777216\r\n    Public Const WS_POPUP = 2147483648\r\n    Public Const WS_EX_LAYERED As Integer = 524288\r\n\r\n    Public Enum WindowStyles\r\n        WS_BORDER = &H800000\r\n        WS_CAPTION = &HC00000\r\n        WS_CHILD = &H40000000\r\n        WS_CLIPCHILDREN = &H2000000\r\n        WS_CLIPSIBLINGS = &H4000000\r\n        WS_DISABLED = &H8000000\r\n        WS_DLGFRAME = &H400000\r\n        WS_GROUP = &H20000\r\n        WS_HSCROLL = &H100000\r\n        WS_MAXIMIZE = &H1000000\r\n        WS_MAXIMIZEBOX = &H10000\r\n        WS_MINIMIZE = &H20000000\r\n        WS_MINIMIZEBOX = &H20000\r\n        WS_OVERLAPPED = &H0\r\n        WS_OVERLAPPEDWINDOW = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_SIZEFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX\r\n        WS_SIZEFRAME = &H40000\r\n        WS_SYSMENU = &H80000\r\n        WS_TABSTOP = &H10000\r\n        WS_VISIBLE = &H10000000\r\n        WS_VSCROLL = &H200000\r\n    End Enum\r\n\r\n    Enum ShowWindowCommands As Integer\r\n        Hide = 0\r\n        Normal = 1\r\n        ShowMinimized = 2\r\n        Maximize = 3\r\n        ShowMaximized = 3\r\n        ShowNoActivate = 4\r\n        Show = 5\r\n        Minimize = 6\r\n        ShowMinNoActive = 7\r\n        ShowNA = 8\r\n        Restore = 9\r\n        ShowDefault = 10\r\n        ForceMinimize = 11\r\n    End Enum\r\n\r\n    Public Delegate Function EnumWindowProcess(ByVal Handle As IntPtr, ByVal Parameter As IntPtr) As Boolean\r\n\r\n    Public Shared SWP_NOSIZE As UInt32 = 1\r\n    Public Shared SWP_ASYNCWINDOWPOS As UInt32 = 16384\r\n    Public Shared SWP_NOACTIVATE As UInt32 = 16\r\n    Public Shared SWP_NOSENDCHANGING As UInt32 = 1024\r\n    Public Shared SWP_NOZORDER As UInt32 = 4\r\n    Public Shared WM_COMMAND As Long = &H111\r\n    Public Shared HWND_BROADCAST As IntPtr = New IntPtr(65535)\r\n    Public Shared WM_SETTINGCHANGE As UInteger = 26\r\n    Public Shared SMTO_ABORTIFHUNG As Integer = 2\r\n\r\n\r\n\r\n    Public Shared TOPMOST_FLAGS As UInt32 = &H2 Or &H1\r\n    Public Shared ReadOnly HWND_TOPMOST As IntPtr = New IntPtr(-1)\r\n\r\n\r\n\r\n    Public Shared Sub ShowStartMenu()\r\n        Dim shell = FindWindow(\"Shell_TrayWnd\", Nothing)\r\n\r\n\r\n        '' Const keyControl As Byte = &H11\r\n        '' Const keyEscape As Byte = &H1B\r\n        '' keybd_event(keyControl, 0, 0, UIntPtr.Zero)\r\n        '' keybd_event(keyEscape, 0, 0, UIntPtr.Zero)\r\n        '' Const KEYEVENTF_KEYUP As UInteger = &H2\r\n        '' keybd_event(keyControl, 0, KEYEVENTF_KEYUP, UIntPtr.Zero)\r\n        ''keybd_event(keyEscape, 0, KEYEVENTF_KEYUP, UIntPtr.Zero)\r\n\r\n        '' keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key\r\n        ''keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key\r\n\r\n        '' Dim tt As New RECT\r\n        '' GetWindowRect(shell, tt)\r\n\r\n        '' MsgBox(tt.Top)\r\n\r\n        ''SHOWS DESKTOP\r\n        ''SendMessage(shell, &H400 + 377, CBool(CType(&H1, IntPtr)), CInt(CType(0, IntPtr)))\r\n\r\n\r\n\r\n        ''  Dim sClassName As New StringBuilder(\"\", 256)\r\n        ''  GetClassName(GetActiveWindow(), sClassName, 256)\r\n\r\n        '' PostMessage(shell, &H400 + 465, CType(&H1, IntPtr), CType(&H10001, IntPtr))\r\n        '' PostMessage(shell, &H127, CType(&H30001, IntPtr), CType(0, IntPtr))\r\n        ''SendMessage(shell, &H400 + 377, CBool(CType(&H100, IntPtr)), CInt(CType(1, IntPtr)))\r\n\r\n        ''PostMessage(shell, &H400 + 243, CType(shell, IntPtr), CType(0, IntPtr))\r\n        ''SetFocus(shell)\r\n        keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) 'Press the Left Win key\r\n\r\n\r\n        keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) 'Press the Left Win key\r\n        ''  SetFocus(shell)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        '' End If\r\n\r\n        ''  SetFocus(shell)\r\n\r\n\r\n        '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key\r\n        '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key\r\n\r\n        '' PostMessage(shell, &H112, CType(&HF131, IntPtr), CType(&H1, IntPtr))\r\n\r\n        ''PostMessage(shell, wm_s, CType(&H1, IntPtr), CType(&H10001, IntPtr))\r\n\r\n        '' PostMessage(shell, &H400 + 465, CType(&H1, IntPtr), CType(&H10001, IntPtr))\r\n        '' PostMessage(shell, &H400 + 443, CType(&H1, IntPtr), CType(0, IntPtr))\r\n        '' PostMessage(shell, &H400 + 377, CType(&H0, IntPtr), CType(0, IntPtr))\r\n\r\n\r\n\r\n        '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) 'Press the Left Win key\r\n\r\n    End Sub\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As UIntPtr)\r\n\r\n    End Sub\r\n\r\n    Private Declare Function SetFocus Lib \"user32.dll\" (ByVal hwnd As IntPtr) As IntPtr\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True)>\r\n    Private Shared Function GetActiveWindow() As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", EntryPoint:=\"GetWindowLong\")>\r\n    Private Shared Function GetWindowLongPtr(ByVal hWnd As HandleRef, <MarshalAs(UnmanagedType.I4)> nIndex As WindowLongFlags) As IntPtr\r\n    End Function\r\n\r\n\r\n    Public Enum WindowLongFlags As Integer\r\n        GWL_EXSTYLE = -20\r\n        GWLP_HINSTANCE = -6\r\n        GWLP_HWNDPARENT = -8\r\n        GWL_ID = -12\r\n        GWL_STYLE = -16\r\n        GWL_USERDATA = -21\r\n        GWL_WNDPROC = -4\r\n        DWLP_USER = &H8\r\n        DWLP_MSGRESULT = &H0\r\n        DWLP_DLGPROC = &H4\r\n    End Enum\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX/TaskbarX.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.29503.13\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{F184B08F-C81C-45F6-A57F-5ABD9991F28F}\") = \"TaskbarX\", \"TaskbarX\\TaskbarX.vbproj\", \"{280F29CB-27F8-41FA-8111-21E6916583FD}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{280F29CB-27F8-41FA-8111-21E6916583FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{280F29CB-27F8-41FA-8111-21E6916583FD}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{280F29CB-27F8-41FA-8111-21E6916583FD}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{280F29CB-27F8-41FA-8111-21E6916583FD}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(ExtensibilityGlobals) = postSolution\r\n\t\tSolutionGuid = {4A800EE9-8779-4772-A980-51ECC0F9AAB6}\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n    <startup> \r\n        \r\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.8\"/></startup>\r\n</configuration>\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/Application.xaml",
    "content": "﻿<Application x:Class=\"Application\"\r\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n    xmlns:local=\"clr-namespace:TaskbarXConfiguratorWPF\"\r\n\r\n             StartupUri=\"MainWindow.xaml\"\r\n    xmlns:ui=\"http://schemas.modernwpf.com/2019\">\r\n    <Application.Resources>\r\n        <ResourceDictionary>\r\n            <ResourceDictionary.MergedDictionaries>\r\n                <ui:ThemeResources />\r\n                <ui:XamlControlsResources />\r\n            </ResourceDictionary.MergedDictionaries>\r\n        </ResourceDictionary>\r\n    </Application.Resources>\r\n</Application>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/Application.xaml.vb",
    "content": "﻿Class Application\r\n\r\n    ' Application-level events, such as Startup, Exit, and DispatcherUnhandledException\r\n    ' can be handled in this file.\r\n\r\nEnd Class\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/Easings.vb",
    "content": "﻿Option Strict On\r\n\r\nPublic Delegate Function EasingDelegate(ByVal currentTime As Double, ByVal minValue As Double, ByVal maxValue As Double, ByVal duration As Double) As Double\r\n\r\nPublic Class Easings\r\n\r\n    'All Animations are here some of them can be found here https://easings.net/en\r\n    Public Shared Function Linear(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight * currentTime / duration + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime <> duration Then\r\n            Return maxHeight * (-Math.Pow(2.0, -10.0 * currentTime / duration) + 1.0) + minHeight\r\n        End If\r\n        Return minHeight + maxHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime <> 0.0 Then\r\n            Return maxHeight * Math.Pow(2.0, 10.0 * (currentTime / duration - 1.0)) + minHeight\r\n        End If\r\n        Return minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime = 0.0 Then\r\n            Return minHeight\r\n        End If\r\n        If currentTime = duration Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * Math.Pow(2.0, 10.0 * (currentTime - 1.0)) + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim x As Double = 2.0\r\n        Dim num3 As Double = -10.0\r\n        Dim num4 As Double = currentTime - 1.0\r\n        Return num2 * (-Math.Pow(x, num3 * num4) + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ExpoEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.ExpoEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.ExpoEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function CircEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = 1.0\r\n        Dim num2 As Double = currentTime / duration - 1.0\r\n        currentTime = num2\r\n        Return maxHeight * Math.Sqrt(num - num2 * currentTime) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = 1.0\r\n        Dim num2 As Double = currentTime / duration\r\n        currentTime = num2\r\n        Dim sqrt As Double = Math.Sqrt(num - num2 * currentTime)\r\n        If Double.IsNaN(sqrt) Then\r\n            sqrt = 0.0\r\n        End If\r\n        Return -maxHeight * (sqrt - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return -maxHeight / 2.0 * (Math.Sqrt(1.0 - currentTime * currentTime) - 1.0) + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = 1.0\r\n        Dim num4 As Double = currentTime - 2.0\r\n        currentTime = num4\r\n        Return num2 * (Math.Sqrt(num3 - num4 * currentTime) + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CircEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.CircEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.CircEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = -maxHeight\r\n        Dim num2 As Double = currentTime / duration\r\n        currentTime = num2\r\n        Return num * num2 * (currentTime - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 1.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * (currentTime - 2.0) - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuadEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuadEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuadEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function SineEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight * Math.Sin(currentTime / duration * 1.5707963267948966) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return -maxHeight * Math.Cos(currentTime / duration * 1.5707963267948966) + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * Math.Sin(3.1415926535897931 * currentTime / 2.0) + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = 3.1415926535897931\r\n        Dim num4 As Double = currentTime - 1.0\r\n        Return num2 * (Math.Cos(num3 * num4 / 2.0) - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function SineEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.SineEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.SineEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * currentTime + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function CubicEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.CubicEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.CubicEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = -maxHeight\r\n        Dim num2 As Double = currentTime / duration - 1.0\r\n        currentTime = num2\r\n        Return num * (num2 * currentTime * currentTime * currentTime - 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = -maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime * currentTime - 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuartEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuartEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuartEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * currentTime * currentTime * currentTime + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * currentTime * currentTime * currentTime + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime * currentTime + minHeight\r\n        End If\r\n        Dim num2 As Double = maxHeight / 2.0\r\n        Dim num3 As Double = currentTime - 2.0\r\n        currentTime = num3\r\n        Return num2 * (num3 * currentTime * currentTime * currentTime * currentTime + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function QuintEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.QuintEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.QuintEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num = 1.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.3\r\n        Dim s As Double = p / 4.0\r\n        Return maxHeight * Math.Pow(2.0, -10.0 * currentTime) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num = 1.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.3\r\n        Dim s As Double = p / 4.0\r\n        Dim x As Double = 2.0\r\n        Dim num2 As Double = 10.0\r\n        Dim num3 As Double = currentTime - 1.0\r\n        currentTime = num3\r\n        Return -(maxHeight * Math.Pow(x, num2 * num3) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num = 2.0 Then\r\n            Return minHeight + maxHeight\r\n        End If\r\n        Dim p As Double = duration * 0.44999999999999996\r\n        Dim s As Double = p / 4.0\r\n        If currentTime < 1.0 Then\r\n            Dim num2 As Double = -0.5\r\n            Dim x As Double = 2.0\r\n            Dim num3 As Double = 10.0\r\n            Dim num4 As Double = currentTime - 1.0\r\n            currentTime = num4\r\n            Return num2 * (maxHeight * Math.Pow(x, num3 * num4) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight\r\n        End If\r\n        Dim x2 As Double = 2.0\r\n        Dim num5 As Double = -10.0\r\n        Dim num6 As Double = currentTime - 1.0\r\n        currentTime = num6\r\n        Return maxHeight * Math.Pow(x2, num5 * num6) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) * 0.5 + maxHeight + minHeight\r\n    End Function\r\n\r\n    Public Shared Function ElasticEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.ElasticEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.ElasticEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        If num < 0.36363636363636365 Then\r\n            Return maxHeight * (7.5625 * currentTime * currentTime) + minHeight\r\n        End If\r\n        If currentTime < 0.72727272727272729 Then\r\n            Dim num2 As Double = 7.5625\r\n            Dim num3 As Double = currentTime - 0.54545454545454541\r\n            currentTime = num3\r\n            Return maxHeight * (num2 * num3 * currentTime + 0.75) + minHeight\r\n        End If\r\n        If currentTime < 0.90909090909090906 Then\r\n            Dim num4 As Double = 7.5625\r\n            Dim num5 As Double = currentTime - 0.81818181818181823\r\n            currentTime = num5\r\n            Return maxHeight * (num4 * num5 * currentTime + 0.9375) + minHeight\r\n        End If\r\n        Dim num6 As Double = 7.5625\r\n        Dim num7 As Double = currentTime - 0.95454545454545459\r\n        currentTime = num7\r\n        Return maxHeight * (num6 * num7 * currentTime + 0.984375) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Return maxHeight - Easings.BounceEaseOut(duration - currentTime, 0.0, maxHeight, duration) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BounceEaseIn(currentTime * 2.0, 0.0, maxHeight, duration) * 0.5 + minHeight\r\n        End If\r\n        Return Easings.BounceEaseOut(currentTime * 2.0 - duration, 0.0, maxHeight, duration) * 0.5 + maxHeight * 0.5 + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BounceEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BounceEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.BounceEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\n    Public Shared Function BackEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration - 1.0\r\n        currentTime = num\r\n        Return maxHeight * (num * currentTime * (2.70158 * currentTime + 1.70158) + 1.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BackEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim num As Double = currentTime / duration\r\n        currentTime = num\r\n        Return maxHeight * num * currentTime * (2.70158 * currentTime - 1.70158) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BackEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        Dim s As Double = 1.70158\r\n        Dim num As Double = currentTime / (duration / 2.0)\r\n        currentTime = num\r\n        If num < 1.0 Then\r\n            Dim num2 As Double = maxHeight / 2.0\r\n            Dim num3 As Double = currentTime * currentTime\r\n            Dim num4 As Double = s * 1.525\r\n            s = num4\r\n            Return num2 * (num3 * ((num4 + 1.0) * currentTime - s)) + minHeight\r\n        End If\r\n        Dim num5 As Double = maxHeight / 2.0\r\n        Dim num6 As Double = currentTime - 2.0\r\n        currentTime = num6\r\n        Dim num7 As Double = num6 * currentTime\r\n        Dim num8 As Double = s * 1.525\r\n        s = num8\r\n        Return num5 * (num7 * ((num8 + 1.0) * currentTime + s) + 2.0) + minHeight\r\n    End Function\r\n\r\n    Public Shared Function BackEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double\r\n        If currentTime < duration / 2.0 Then\r\n            Return Easings.BackEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)\r\n        End If\r\n        Return Easings.BackEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)\r\n    End Function\r\n\r\nEnd Class"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/MainWindow.xaml",
    "content": "﻿<Window x:Class=\"MainWindow\"\r\n        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\r\n        xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\r\n        xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n        xmlns:local=\"clr-namespace:TaskbarXConfiguratorWPF\"\r\n        mc:Ignorable=\"d\"\r\n        Title=\"TaskbarX Configurator\" Height=\"649.581\" Width=\"863.329\"\r\n        ResizeMode=\"NoResize\"\r\n       ContentRendered=\"Window_Loaded\"\r\n    xmlns:ui=\"http://schemas.modernwpf.com/2019\"\r\n        xmlns:emoji=\"clr-namespace:Emoji.Wpf;assembly=Emoji.Wpf\"\r\n\r\n    ui:WindowHelper.UseModernWindowStyle=\"true\" Icon=\"StoreLogo2-71.ico\" AllowsTransparency=\"True\" WindowStyle=\"None\">\r\n\r\n    <ui:SimpleStackPanel Margin=\"12,12,12,14\" Spacing=\"24\">\r\n\r\n        <Rectangle x:Name=\"placeholder\" Fill=\"White\" Height=\"11\" VerticalAlignment=\"Top\" Margin=\"795,608,12,-519\" Visibility=\"Hidden\" />\r\n\r\n        <ListBox x:Name=\"ListBox1\"  HorizontalAlignment=\"Left\" Height=\"615\" VerticalAlignment=\"Top\" Width=\"179\" Margin=\"-12,-135,0,-448\" SelectionChanged=\"ListBox_SelectionChanged\">\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"🎨\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Style\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel x:Name=\"animation_Tab\" Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"❤️\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Animation\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"🕹️\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Position\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"🚥\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Startup\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"⚙️\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Extra\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" Width=\"36\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"🦾\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Mechanics\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" Width=\"71\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" Text=\"⚙️\" />\r\n                <TextBlock Text=\"Start Button\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" Width=\"77\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"ℹ️\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"About\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n\r\n            <StackPanel Orientation=\"Horizontal\" Grid.Row=\"1\" Margin=\"0,0,0,0\">\r\n                <emoji:TextBlock  Text=\"🗑️\" Margin=\"0,0,0,0\" FontSize=\"20\" VerticalAlignment=\"Center\" />\r\n                <TextBlock Text=\"Uninstall\"  Margin=\"24,0,0,0\" VerticalAlignment=\"Center\" />\r\n            </StackPanel>\r\n        </ListBox>\r\n        <TabControl x:Name=\"TabControl1\" HorizontalAlignment=\"Left\" Height=\"600\" VerticalAlignment=\"Top\" Width=\"661\" Margin=\"172,-258,0,-342\">\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,-124\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"166*\" />\r\n                        <ColumnDefinition Width=\"495*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <Image HorizontalAlignment=\"Left\" Height=\"152\" Margin=\"10,399,0,0\" VerticalAlignment=\"Top\" Width=\"152\" Source=\"grid.png\" />\r\n                    <TextBlock Text=\"Style\" FontSize=\"20\" Margin=\"10,50,0,618\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <RadioButton  ToolTip=\"Keep the taskbar background as it has always been.\" x:Name=\"RadioButton1\" Content=\"Default \" HorizontalAlignment=\"Left\" Margin=\"11,89,0,0\" VerticalAlignment=\"Top\" IsChecked=\"True\" Height=\"32\" Width=\"120\" />\r\n                    <RadioButton  ToolTip=\"Make the taskbar background fully Transparent.\" x:Name=\"RadioButton2\" Content=\"Transparent\" HorizontalAlignment=\"Left\" Margin=\"11,126,0,0\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"120\" />\r\n                    <RadioButton ToolTip=\"Make the taskbar background Blurred with a gradient color.\" x:Name=\"RadioButton3\" Content=\"Blur\" HorizontalAlignment=\"Left\" Margin=\"11,237,0,0\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"120\" />\r\n                    <RadioButton ToolTip=\"Make the taskbar background Acrylic/Fluent with a gradient color.\" x:Name=\"RadioButton4\" Content=\"Acrylic (can flicker)\" HorizontalAlignment=\"Left\" Margin=\"11,274,0,0\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"151\" />\r\n                    <CheckBox ToolTip=\"Revert the taskbar to the default background when a window is maximized.\" x:Name=\"Checkbox10\" Content=\"Switch back to Default on maximized window\" HorizontalAlignment=\"Left\" Margin=\"11,334,0,0\" VerticalAlignment=\"Top\" Width=\"364\" Grid.ColumnSpan=\"2\" Height=\"32\" />\r\n                    <Slider x:Name=\"sRed\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"255\" Maximum=\"255\" ValueChanged=\"Red_ValueChanged\" Foreground=\"#FFD70000\" Height=\"32\" Margin=\"56,403,0,0\" Grid.Column=\"1\" />\r\n\r\n                    <Rectangle x:Name=\"colorprev\" Fill=\"#FFF4F4F5\" HorizontalAlignment=\"Left\" Height=\"150\"  VerticalAlignment=\"Top\" Width=\"150\" Margin=\"11,400,0,0\" />\r\n                    <Slider x:Name=\"sGreen\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"255\" Maximum=\"255\" ValueChanged=\"Green_ValueChanged\" Foreground=\"#FF29B01C\" Height=\"32\" Margin=\"56,440,0,0\" Grid.Column=\"1\" />\r\n                    <Slider x:Name=\"sBlue\" VerticalAlignment=\"Top\" Maximum=\"255\" ValueChanged=\"Blue_ValueChanged\" Foreground=\"#FF0023FF\" Height=\"32\" Margin=\"56,477,184,0\" Grid.Column=\"1\" />\r\n                    <Slider x:Name=\"sAlpha\" VerticalAlignment=\"Top\" Maximum=\"100\" ValueChanged=\"Alpha_ValueChanged\" Foreground=\"#FF898989\" Height=\"32\" Margin=\"56,514,184,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Red\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"24\" Margin=\"9,410,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Green\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"42\" Margin=\"9,447,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Blue\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"27\" Margin=\"9,484,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Alpha\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"36\" Margin=\"9,521,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tRed\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"51\" Margin=\"320,410,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tGreen\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"66\" Margin=\"320,447,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tBlue\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"87\" Margin=\"320,484,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tAlpha\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0%\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"66\" Margin=\"320,520,0,0\" Grid.Column=\"1\" />\r\n                    <Button ToolTip=\"Pick a color from the screen. (Left click to pick a color on the screen from your mouse cursor.)\" FontFamily=\"Segoe MDL2 Assets\" Content=\"&#xEF3C;\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\" Width=\"33\" Click=\"Button_Click_12\" Margin=\"411,400,0,0\" Grid.Column=\"1\" />\r\n                    <RadioButton  ToolTip=\"Make the taskbar background Transparent with a gradient color.\" x:Name=\"RadioButtontc\" Content=\"Transparent Gradient\" HorizontalAlignment=\"Left\" Margin=\"11,163,0,0\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"193\" Grid.ColumnSpan=\"2\" />\r\n                    <RadioButton  ToolTip=\"Make the taskbar background Opaque with a gradient color.\" x:Name=\"RadioButtonoq\" Content=\"Opaque\" HorizontalAlignment=\"Left\" Margin=\"11,200,0,0\" VerticalAlignment=\"Top\" Height=\"32\" Width=\"193\" Grid.ColumnSpan=\"2\" />\r\n                    <emoji:TextBlock  Text=\"🎨\" Margin=\"430,58,10,585\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                    <TextBox x:Name=\"hexcolorbox\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"390,440,0,0\" TextWrapping=\"Wrap\" Text=\"TextBox\" VerticalAlignment=\"Top\" Width=\"76\" Grid.Column=\"1\" />\r\n                    <Slider x:Name=\"tpop\" VerticalAlignment=\"Top\" Maximum=\"100\" Foreground=\"#FF898989\" Height=\"32\" Margin=\"286,130,72,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Primary taskbar\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"97\" Margin=\"180,136,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tpopla\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0%\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"66\" Margin=\"432,136,-3,0\" Grid.Column=\"1\" />\r\n                    <Slider x:Name=\"tsop\" VerticalAlignment=\"Top\" Maximum=\"100\"  Foreground=\"#FF898989\" Height=\"32\" Margin=\"286,167,72,0\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"Secondary taskbar\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"114\" Margin=\"163,173,0,0\" Grid.Column=\"1\" />\r\n                    <TextBlock x:Name=\"tsopla\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"0%\" VerticalAlignment=\"Top\" Height=\"19\" Width=\"66\" Margin=\"432,173,-3,0\" Grid.Column=\"1\" />\r\n                    <Label Content=\"Total Opacity\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Margin=\"190,99,0,0\" VerticalAlignment=\"Top\" FontWeight=\"Bold\" />\r\n                    <ui:NumberBox ToolTip=\"Set the radius of the taskbar(s) corners in pixels.\" x:Name=\"tbrounding\" Text=\"0\" HorizontalAlignment=\"Left\" Margin=\"163,252,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"163,228,0,0\" TextWrapping=\"Wrap\" Text=\"Corner Radius\" VerticalAlignment=\"Top\" Width=\"201\" Grid.Column=\"1\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"251,258,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Width=\"201\" Grid.Column=\"1\" />\r\n                    <CheckBox ToolTip=\"Only show taskbar background on taskbar icons.\" x:Name=\"tbsegments\" Content=\"Taskbar Segments\" Margin=\"309,252,0,0\" Width=\"365\" Height=\"32\" Grid.Column=\"1\" VerticalAlignment=\"Top\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,16\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Animation\" FontSize=\"20\" Margin=\"10,50,0,478\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <ComboBox ToolTip=\"Select the Animation you want TaskbarX to use to move the taskbar.\" x:Name=\"ComboBox1\" HorizontalAlignment=\"Left\" Margin=\"10,117,0,0\" VerticalAlignment=\"Top\" Width=\"209\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,96,0,0\" TextWrapping=\"Wrap\" Text=\"Animation Style\" VerticalAlignment=\"Top\" />\r\n                    <ComboBox  ToolTip=\"Select the Animation you want TaskbarX to use to move the taskbar when your laptop is running on battery.\" x:Name=\"ComboBox2\" HorizontalAlignment=\"Left\" Margin=\"10,183,0,0\" VerticalAlignment=\"Top\" Width=\"209\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,162,0,0\" TextWrapping=\"Wrap\" Text=\"Animation Style OnBattery\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,244,0,0\" TextWrapping=\"Wrap\" Text=\"Animation Speed\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <ui:NumberBox  ToolTip=\"Set the speed of the Animation in milliseconds.\" x:Name=\"NumericUpDown4\" HorizontalAlignment=\"Left\" Text=\"300\" Margin=\"10,265,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,273,0,0\" TextWrapping=\"Wrap\" Text=\"ms\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <Slider x:Name=\"Slider1\" HorizontalAlignment=\"Left\" Margin=\"90,334,-6,0\" VerticalAlignment=\"Top\" Width=\"577\" Maximum=\"1000\" IsEnabled=\"False\" Grid.ColumnSpan=\"2\" />\r\n                    <Button ToolTip=\"Create a visualization of the current selected animation options.\" Content=\"Preview\" HorizontalAlignment=\"Left\" Margin=\"10,334,0,0\" VerticalAlignment=\"Top\" Width=\"75\" Click=\"Button_Click_9\" />\r\n                    <Rectangle Grid.Column=\"1\" Fill=\"#999\" HorizontalAlignment=\"Left\" Height=\"14\" Margin=\"223,343,0,0\" Stroke=\"Gray\" VerticalAlignment=\"Top\" Width=\"1\" />\r\n                    <Button Content=\"&gt;\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Margin=\"105,117,0,0\" VerticalAlignment=\"Top\" Width=\"30\" Click=\"Button_Click_10\" />\r\n                    <Button Content=\"&lt;\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Margin=\"70,117,0,0\" VerticalAlignment=\"Top\" Width=\"30\" Click=\"Button_Click_11\" />\r\n                    <emoji:TextBlock  Text=\"❤️\" Margin=\"442,58,10,445\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,20\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Position\" FontSize=\"20\" Margin=\"10,50,0,474\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,170,0,0\" TextWrapping=\"Wrap\" Text=\"Secondary Taskbar Offset\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <ui:NumberBox ToolTip=\"Set the offset position based on the center position for the secondary taskbar(s) in pixels. Use '-' for negative numbers.\" x:Name=\"NumericUpDown2\" HorizontalAlignment=\"Left\" Text=\"0\" Margin=\"10,191,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,199,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,96,0,0\" TextWrapping=\"Wrap\" Text=\"Primary Taskbar Offset\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <ui:NumberBox ToolTip=\"Set the offset position based on the center position for the primary taskbar in pixels. Use '-' for negative numbers.\" x:Name=\"NumericUpDown1\" HorizontalAlignment=\"Left\" Text=\"0\"  Margin=\"10,117,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,125,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Center between Start, Search etc... and the tray on the right with the clock, volume etc... (Keep the distance equal between them)\" x:Name=\"CheckBox1\" Content=\"Compensate Tray Clock etc...\" HorizontalAlignment=\"Left\" Margin=\"10,418,0,0\" VerticalAlignment=\"Top\" Width=\"214\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Stop TaskbarX from centering the Taskbar.\" Content=\"Don't center Taskbar\" x:Name=\"CheckBox11\" HorizontalAlignment=\"Left\" Margin=\"10,455,0,0\" VerticalAlignment=\"Top\" Width=\"230\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,244,0,0\" TextWrapping=\"Wrap\" Text=\"Skip Resolution\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <ui:NumberBox ToolTip=\"If your resolutions width becomes this value in pixels then TaskbarX will pause and put the icons back to the left. If it changes then it will start centering the icons again.\" x:Name=\"NumericUpDown7\" Text=\"0\" HorizontalAlignment=\"Left\" Margin=\"10,265,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,273,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <emoji:TextBlock  Text=\"🕹️\" Margin=\"442,58,10,441\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                    <ui:NumberBox ToolTip=\"If your resolutions width becomes this value in pixels then TaskbarX will pause and put the icons back to the left. If it changes then it will start centering the icons again.\" x:Name=\"NumericUpDown7_Copy\" Text=\"0\" HorizontalAlignment=\"Left\" Margin=\"10,308,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,316,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <ui:NumberBox ToolTip=\"If your resolutions width becomes this value in pixels then TaskbarX will pause and put the icons back to the left. If it changes then it will start centering the icons again.\" x:Name=\"NumericUpDown7_Copy1\" Text=\"0\" HorizontalAlignment=\"Left\" Margin=\"10,351,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,359,0,0\" TextWrapping=\"Wrap\" Text=\"px\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Revert the taskbar back to the left when the icons start overlapping with the Tray area.\" x:Name=\"CheckBox4_Copy\" Content=\"Revert to zero beyond Tray\" HorizontalAlignment=\"Left\" Margin=\"10,492,0,0\" VerticalAlignment=\"Top\" Width=\"194\" IsChecked=\"True\" Grid.ColumnSpan=\"2\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,16\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Taskschedule\" FontSize=\"20\" Margin=\"10,50,0,478\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,96,0,0\" TextWrapping=\"Wrap\" Text=\"Delay\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <ui:NumberBox ToolTip=\"Does TaskbarX not run on start-up? Well 6 seconds could be to early for TaskbarX to start. Try increasing this value in seconds.\" x:Name=\"NumericUpDown6\" HorizontalAlignment=\"Left\" Text=\"6\" Margin=\"10,117,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,125,0,0\" TextWrapping=\"Wrap\" Text=\"sec\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"201\" />\r\n                    <Button ToolTip=\"Remove the TaskbarX start-up taskschedule.\" Content=\"Remove\" HorizontalAlignment=\"Left\" Margin=\"10,177,0,0\" VerticalAlignment=\"Top\" Width=\"83\" Click=\"Button_Click_3\" />\r\n                    <Button ToolTip=\"Create the TaskbarX start-up taskschedule.\" Content=\"Create\" HorizontalAlignment=\"Left\" Margin=\"98,177,0,0\" VerticalAlignment=\"Top\" Width=\"83\" Click=\"Button_Click_33\" Grid.ColumnSpan=\"2\" />\r\n                    <emoji:TextBlock HorizontalAlignment=\"Left\" Margin=\"10,228,0,0\" TextWrapping=\"Wrap\" Text=\"📌 The taskschedule is responsible for making TaskbarX run at startup. And also stores your settings.\" VerticalAlignment=\"Top\" Width=\"641\" Grid.ColumnSpan=\"2\" />\r\n                    <emoji:TextBlock  Text=\"🚥\" Margin=\"442,58,10,445\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                    <TextBox x:Name=\"TextboxLink\" HorizontalAlignment=\"Left\" Height=\"116\" Margin=\"10,329,0,0\" TextWrapping=\"Wrap\" VerticalAlignment=\"Top\" Width=\"359\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,305,0,0\" TextWrapping=\"Wrap\" Text=\"Shortcut link\" VerticalAlignment=\"Top\" />\r\n                    <Button ToolTip=\"I want to create my own shortcut.. Generate the parameters.\" Content=\"Generate\" HorizontalAlignment=\"Left\" Margin=\"10,473,0,0\" VerticalAlignment=\"Top\" Width=\"75\" RenderTransformOrigin=\"0.778,0.442\" Click=\"Button_Click_13\" />\r\n                    <emoji:TextBlock HorizontalAlignment=\"Left\" Margin=\"10,523,0,0\" TextWrapping=\"Wrap\" Text=\"⚠️ If you want to create your own start-up shortcut then make sure to Remove the Taskschedule above and don't use the Apply button. The Apply button creates the Taskschedule again.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,-18\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Extra\" FontSize=\"20\" Margin=\"10,50,0,512\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Only center the primary/default taskbar on your main monitor.\" x:Name=\"CheckBox2\" Content=\"Only Center Primary Taskbar\" HorizontalAlignment=\"Left\" Margin=\"10,91,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"240\" />\r\n                    <CheckBox ToolTip=\"Only center the secondary taskbar(s) on your secondary monitor(s).\" x:Name=\"CheckBox3\" Content=\"Only Center Secondary Taskbar\" HorizontalAlignment=\"Left\" Margin=\"10,129,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"271\" />\r\n                    <CheckBox ToolTip=\"Do you have custom toolbars like NetSpeedMonitor? Enable this to update the toolbars position when the size of the tray changes.\" x:Name=\"CheckBox4\" Content=\"Update Taskbar Toolbars\" HorizontalAlignment=\"Left\" Margin=\"10,166,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"252\" IsChecked=\"True\" />\r\n\r\n                    <CheckBox ToolTip=\"Are you a gamer? Well MSAA may interfere with your game while playing. It can cause keyboard ghosting in some games. Enable this to Pause TaskbarX when you are running a game in fullscreen.\" x:Name=\"Checkbox9\" Content=\"Pause looper when fullscreen app is running\" HorizontalAlignment=\"Left\" Margin=\"10,203,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Hide the Primary Start button.\" Content=\"Hide Primary Start button\" x:Name=\"Checkbox12\" HorizontalAlignment=\"Left\" Margin=\"10,240,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"252\" />\r\n                    <CheckBox ToolTip=\"Hide the Secondary Start button.\" Content=\"Hide Secondary Start button\" HorizontalAlignment=\"Left\" Margin=\"10,277,0,0\" x:Name=\"Checkbox13\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"240\" />\r\n                    <CheckBox ToolTip=\"Hide the Primary Tray area with the clock.\" Content=\"Hide Primary Tray area\" HorizontalAlignment=\"Left\" Margin=\"10,314,0,0\" x:Name=\"Checkbox14\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" />\r\n                    <CheckBox ToolTip=\"Show a trayicon to quickly restart and stop TaskbarX.\" Content=\"Show Tray icon\" HorizontalAlignment=\"Left\" Margin=\"10,388,0,0\" VerticalAlignment=\"Top\" x:Name=\"Checkbox16\" Visibility=\"Hidden\" />\r\n                    <CheckBox ToolTip=\"Hide the Secondary Tray area with the clock.\" x:Name=\"Checkbox15\" Content=\"Hide Secondary Tray area\" HorizontalAlignment=\"Left\" Margin=\"10,351,0,0\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"289\" />\r\n                    <emoji:TextBlock  Text=\"⚙️\" Margin=\"442,58,10,479\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,-18\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Mechanics\" FontSize=\"20\" Margin=\"10,50,0,512\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,185,0,0\" TextWrapping=\"Wrap\" Text=\"Refresh Rate\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <ui:NumberBox ToolTip=\"TaskbarX uses a looper to detect changes in the taskbar. The delay is 400ms by default. Making it faster will make TaskbarX respond faster to a change but, will increase CPU Usage.\" x:Name=\"NumericUpDown3\" Text=\"400\" HorizontalAlignment=\"Left\" Margin=\"10,207,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" Minimum=\"100\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,215,0,0\" TextWrapping=\"Wrap\" Text=\"ms\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,259,0,0\" TextWrapping=\"Wrap\" Text=\"Refresh Rate OnBattery\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n                    <ui:NumberBox ToolTip=\"Override the Refresh Rate when your laptop is running on battery.\" x:Name=\"NumericUpDown5\" Text=\"400\" HorizontalAlignment=\"Left\" Margin=\"10,281,0,0\" VerticalAlignment=\"Top\" Width=\"83\" PreviewTextInput=\"NumberValidationTextBox\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"98,289,0,0\" TextWrapping=\"Wrap\" Text=\"ms\" VerticalAlignment=\"Top\" Width=\"201\" Grid.ColumnSpan=\"2\" />\r\n\r\n                    <emoji:TextBlock  Text=\"🦾\" Margin=\"442,58,10,479\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                    <RadioButton ToolTip=\"Use Microsoft Active Accessibility to retrieve data from the taskbar.\" Content=\"MSAA\" HorizontalAlignment=\"Left\" Margin=\"10,91,0,0\" VerticalAlignment=\"Top\" IsChecked=\"True\" IsEnabled=\"False\" />\r\n                    <RadioButton ToolTip=\"Use UI Automation to retrieve data from the taskbar.\" Content=\"UIAutomation\" HorizontalAlignment=\"Left\" Margin=\"10,128,0,0\" VerticalAlignment=\"Top\" IsEnabled=\"False\" />\r\n                    <Button Content=\"?\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Margin=\"10,107,0,0\" VerticalAlignment=\"Top\" Width=\"33\" Click=\"Button_Click_14\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,-18\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Start Button\" FontSize=\"20\" Margin=\"10,50,0,512\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <emoji:TextBlock  Text=\"⚙️\" Margin=\"442,58,10,479\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,96,0,0\" TextWrapping=\"Wrap\" Text=\"How to add a custom start button?\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"226\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,131,0,0\" TextWrapping=\"Wrap\" Text=\"1. Create a new shortcut on your desktop.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"303\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,155,0,0\" TextWrapping=\"Wrap\" Text=\"2. Copy the string below for the location.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"303\" />\r\n                    <TextBox x:Name=\"startbutton_shortcut\" HorizontalAlignment=\"Left\" Margin=\"10,185,0,0\" TextWrapping=\"Wrap\" Text=\"TextBox\" VerticalAlignment=\"Top\" Width=\"388\" Grid.ColumnSpan=\"2\" Height=\"81\"/>\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,278,0,0\" TextWrapping=\"Wrap\" Text=\"3. Give it a name.. Like Start\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"303\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,302,0,0\" TextWrapping=\"Wrap\" Text=\"4. Then hit Finish.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"303\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,326,0,0\" TextWrapping=\"Wrap\" Text=\"5. Change the icon of the shortcut to any ico you like.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"369\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"25,350,0,0\" TextWrapping=\"Wrap\" Text=\"To do this. Right click on the icon and hit properties. Then hit the 'Change Icon...' button. After changing the icon hit the 'Apply' button followed by 'OK'.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"383\" FontSize=\"11\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,384,0,0\" TextWrapping=\"Wrap\" Text=\"6. Finally drag the shortcut to your taskbar to pin it and remove the shortcut from your desktop.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"614\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,490,0,0\" TextWrapping=\"Wrap\" Text=\"This might be automated in a future update.\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"303\" FontStyle=\"Italic\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,-27,16\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"137*\" />\r\n                        <ColumnDefinition Width=\"551*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"About\" FontSize=\"20\" Margin=\"10,50,0,478\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,97,0,0\" TextWrapping=\"Wrap\" Text=\"Version:\" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,134,0,0\" TextWrapping=\"Wrap\" Text=\"Author: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,171,0,0\" TextWrapping=\"Wrap\" Text=\"Website: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,208,0,0\" TextWrapping=\"Wrap\" Text=\"Github: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,310,0,0\" TextWrapping=\"Wrap\" Text=\"E-mail: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,347,0,0\" TextWrapping=\"Wrap\" Text=\"Reddit: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,245,0,0\" TextWrapping=\"Wrap\" Text=\"Bug Report: \" VerticalAlignment=\"Top\" Width=\"124\" Height=\"32\" />\r\n                    <TextBox x:Name=\"versiontb\" IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,91,0,0\" TextWrapping=\"Wrap\" Text=\"1.7.8.0\" VerticalAlignment=\"Top\" Width=\"64\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,165,0,0\" TextWrapping=\"Wrap\" Text=\"https://chrisandriessen.nl/taskbarx\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,128,0,0\" TextWrapping=\"Wrap\" Text=\"Chris Andriessen\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,202,0,0\" TextWrapping=\"Wrap\" Text=\"https://github.com/ChrisAnd1998/TaskbarX\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,239,0,0\" TextWrapping=\"Wrap\" Text=\"https://github.com/ChrisAnd1998/TaskbarX/issues\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,304,0,0\" TextWrapping=\"Wrap\" Text=\"chrisand1998@gmail.com\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <TextBox IsReadOnly=\"True\" HorizontalAlignment=\"Left\" Height=\"32\" Margin=\"0,341,0,0\" TextWrapping=\"Wrap\" Text=\"u/chrisand1998\" VerticalAlignment=\"Top\" Width=\"447\" Grid.Column=\"1\" />\r\n                    <Button ToolTip=\"Check if there is a new version available.\" x:Name=\"bb\" Content=\"Check\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"57\" Margin=\"69,91,0,0\" Style=\"{StaticResource AccentButtonStyle}\" Grid.Column=\"1\" Click=\"Button_Click_4\" />\r\n                    <TextBlock x:Name=\"vers\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Margin=\"131,99,0,0\"  Text=\"No connection..\" VerticalAlignment=\"Top\" Width=\"197\" Height=\"19\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" FontWeight=\"Bold\" Margin=\"10,412,0,0\" TextWrapping=\"Wrap\" Text=\"References: \" VerticalAlignment=\"Top\" Width=\"129\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBox IsReadOnly=\"True\" Grid.Column=\"1\" HorizontalAlignment=\"Left\" Height=\"71\" Margin=\"0,406,0,0\" TextWrapping=\"Wrap\" Text=\"ModernWPF:  https://github.com/Kinnara/ModernWpf&#xD;&#xA;TaskScheduler:  https://github.com/dahall/TaskScheduler&#xD;&#xA;Emoji.Wpf:  https://github.com/samhocevar/emoji.wpf\" VerticalAlignment=\"Top\" Width=\"447\" />\r\n                </Grid>\r\n            </TabItem>\r\n            <TabItem>\r\n                <Grid Margin=\"0,0,0,16\">\r\n                    <Grid.ColumnDefinitions>\r\n                        <ColumnDefinition Width=\"139*\" />\r\n                        <ColumnDefinition Width=\"457*\" />\r\n                    </Grid.ColumnDefinitions>\r\n                    <TextBlock Text=\"Uninstall\" FontSize=\"20\" Margin=\"10,50,0,478\" VerticalAlignment=\"Center\" Height=\"32\" Grid.ColumnSpan=\"2\" />\r\n                    <TextBlock HorizontalAlignment=\"Left\" Margin=\"10,96,0,0\" TextWrapping=\"Wrap\" Text=\"The only way to properly uninstall TaskbarX...\" VerticalAlignment=\"Top\" Grid.ColumnSpan=\"2\" Width=\"407\" />\r\n                    <Button ToolTip=\"Uninstall TaskbarX :(\" Content=\"Uninstall\" HorizontalAlignment=\"Left\" Margin=\"10,136,0,0\" VerticalAlignment=\"Top\" Width=\"75\" Click=\"Button_Click_8\" />\r\n                    <emoji:TextBlock  Text=\"🗑️\" Margin=\"442,58,10,445\" FontSize=\"40\" VerticalAlignment=\"Center\" Grid.Column=\"1\" Height=\"57\" />\r\n                </Grid>\r\n            </TabItem>\r\n        </TabControl>\r\n\r\n        <Button ToolTip=\"Apply settings, start-up task and restart TaskbarX.\" Content=\"Apply\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"87\" Margin=\"750,357,0,-357\" Style=\"{StaticResource AccentButtonStyle}\" Click=\"Button_Click_1\" />\r\n        <Button ToolTip=\"Close the Configurator.\" Content=\"Close\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"87\" Margin=\"658,301,0,-301\" Click=\"Button_Click\" />\r\n        <Button ToolTip=\"Stop the TaskbarX background service. And put the icons back to the left.\" Content=\"Stop TaskbarX\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"121\" Margin=\"510,245,0,-245\" Click=\"Button_Click_2\" />\r\n        <Button ToolTip=\"Reset all settings back to default. Click 'Apply' to confirm.\" FontFamily=\"Segoe MDL2 Assets\" Content=\"&#xE777;\"  FontSize=\"19\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"38\" Margin=\"-2,190,0,-190\" Click=\"Button_Click_6\" />\r\n        <Button ToolTip=\"Reload current applied settings.\" FontFamily=\"Segoe MDL2 Assets\" Content=\"&#xE895;\"  FontSize=\"19\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"38\" Margin=\"41,134,0,-134\" Click=\"Button_Click_5\" />\r\n        <Button ToolTip=\"Restart the TaskbarX background service.\" Content=\"Restart TaskbarX\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"121\" Margin=\"384,77,0,-77\" Click=\"Button_Click_7\" />\r\n        <CheckBox  ToolTip=\"Show console output for debugging.\" x:Name=\"checkboxconsole\" Content=\"Show Console\" HorizontalAlignment=\"Left\" Height=\"32\" VerticalAlignment=\"Top\" Width=\"51\" RenderTransformOrigin=\"0.5,0.5\" Margin=\"183,21,0,-21\" />\r\n    </ui:SimpleStackPanel>\r\n</Window>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/MainWindow.xaml.vb",
    "content": "﻿Option Strict On\r\n\r\nImports System.Drawing\r\nImports System.IO\r\nImports System.Net\r\nImports System.Reflection\r\nImports System.Runtime\r\nImports System.Runtime.InteropServices\r\nImports System.Security.Principal\r\nImports System.Text\r\nImports System.Threading\r\n\r\nImports Microsoft.Win32.TaskScheduler\r\nImports ModernWpf.Controls\r\n\r\nClass MainWindow\r\n\r\n    <DllImport(\"user32.dll\", ExactSpelling:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function GetParent(ByVal hWnd As IntPtr) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True)>\r\n    Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInt32) As Boolean\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\")>\r\n    Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Boolean, ByVal lParam As Int32) As Integer\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", EntryPoint:=\"FindWindow\", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)>\r\n    Private Shared Function FindWindowByClass(ByVal lpClassName As String, ByVal zero As IntPtr) As IntPtr\r\n    End Function\r\n\r\n    <DllImport(\"user32.dll\", SetLastError:=True, CharSet:=CharSet.Auto)>\r\n    Public Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lclassName As String, ByVal windowTitle As String) As IntPtr\r\n    End Function\r\n\r\n    Public Declare Function GetCursorPos Lib \"user32\" (ByRef lpPoint As PointAPI) As Boolean\r\n\r\n    Declare Function GetAsyncKeyState Lib \"user32\" (ByVal vkey As Integer) As Short\r\n\r\n    <System.Runtime.InteropServices.DllImport(\"user32.dll\", EntryPoint:=\"SetWindowLong\")>\r\n    Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, <MarshalAs(UnmanagedType.I4)> nIndex As WindowStyles, ByVal dwNewLong As Integer) As Integer\r\n    End Function\r\n\r\n    Public Enum WindowStyles\r\n        WS_BORDER = &H800000\r\n        WS_CAPTION = &HC00000\r\n        WS_CHILD = &H40000000\r\n        WS_CLIPCHILDREN = &H2000000\r\n        WS_CLIPSIBLINGS = &H4000000\r\n        WS_DISABLED = &H8000000\r\n        WS_DLGFRAME = &H400000\r\n        WS_GROUP = &H20000\r\n        WS_HSCROLL = &H100000\r\n        WS_MAXIMIZE = &H1000000\r\n        WS_MAXIMIZEBOX = &H10000\r\n        WS_MINIMIZE = &H20000000\r\n        WS_MINIMIZEBOX = &H20000\r\n        WS_OVERLAPPED = &H0\r\n        WS_OVERLAPPEDWINDOW = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_SIZEFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX\r\n        WS_SIZEFRAME = &H40000\r\n        WS_SYSMENU = &H80000\r\n        WS_TABSTOP = &H10000\r\n        WS_VISIBLE = &H10000000\r\n        WS_VSCROLL = &H200000\r\n    End Enum\r\n    Friend Structure WindowCompositionAttributeData\r\n        Public Attribute As WindowCompositionAttribute\r\n        Public Data As IntPtr\r\n        Public SizeOfData As Integer\r\n    End Structure\r\n\r\n    Friend Enum WindowCompositionAttribute\r\n        WCA_ACCENT_POLICY = 19\r\n    End Enum\r\n\r\n    Friend Enum AccentState\r\n        ACCENT_DISABLED = 0\r\n        ACCENT_ENABLE_GRADIENT = 1\r\n        ACCENT_ENABLE_TRANSPARENTGRADIENT = 2\r\n        ACCENT_ENABLE_BLURBEHIND = 3\r\n        ACCENT_ENABLE_TRANSPARANT = 6\r\n        ACCENT_ENABLE_ACRYLICBLURBEHIND = 4\r\n    End Enum\r\n\r\n    <StructLayout(LayoutKind.Sequential)>\r\n    Friend Structure AccentPolicy\r\n        Public AccentState As AccentState\r\n        Public AccentFlags As Integer\r\n        Public GradientColor As Integer\r\n        Public AnimationId As Integer\r\n    End Structure\r\n\r\n    Friend Declare Function SetWindowCompositionAttribute Lib \"user32.dll\" (ByVal hwnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer\r\n    Private Declare Auto Function FindWindow Lib \"user32.dll\" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr\r\n\r\n    Structure PointAPI\r\n        Public x As Int32\r\n        Public y As Int32\r\n    End Structure\r\n\r\n    Public Const GWL_STYLE = -16\r\n    Public Const GWL_EXSTYLE = -20\r\n    Public Const WS_MAXIMIZE = 16777216\r\n    Public Const WS_POPUP = 2147483648\r\n    Public Const WS_EX_LAYERED As Integer = 524288\r\n\r\n    Public Shared SWP_NOSIZE As UInt32 = 1\r\n    Public Shared SWP_ASYNCWINDOWPOS As UInt32 = 16384\r\n    Public Shared SWP_NOACTIVATE As UInt32 = 16\r\n    Public Shared SWP_NOSENDCHANGING As UInt32 = 1024\r\n    Public Shared SWP_NOZORDER As UInt32 = 4\r\n\r\n    Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n\r\n    Public Declare Function EnumWindows Lib \"user32\" (ByVal Adress As CallBack, ByVal y As Integer) As Integer\r\n    Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)\r\n\r\n    <DllImport(\"user32.dll\", CharSet:=CharSet.Auto)>\r\n    Private Shared Function GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer\r\n    End Function\r\n\r\n\r\n\r\n    Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)\r\n        windowHandles.Clear()\r\n        EnumWindows(AddressOf Enumerator, 0)\r\n\r\n        Dim maintaskbarfound As Boolean = False\r\n        Dim sectaskbarfound As Boolean = False\r\n\r\n        For Each Taskbar In windowHandles\r\n            Dim sClassName As New StringBuilder(\"\", 256)\r\n            Call GetClassName(CType(Taskbar, IntPtr), sClassName, 256)\r\n            If sClassName.ToString = \"Shell_TrayWnd\" Then\r\n                maintaskbarfound = True\r\n            End If\r\n            If sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n                sectaskbarfound = True\r\n            End If\r\n            Console.WriteLine(\"=\" & maintaskbarfound)\r\n        Next\r\n\r\n        If maintaskbarfound = False Then\r\n            Try\r\n                windowHandles.Add(FindWindow(\"Shell_TrayWnd\", Nothing))\r\n            Catch\r\n            End Try\r\n        End If\r\n\r\n        If sectaskbarfound = False Then\r\n\r\n            Try\r\n                If Not FindWindow(\"Shell_SecondaryTrayWnd\", Nothing) = CType(0, IntPtr) Then\r\n                    If Not FindWindow(\"Shell_SecondaryTrayWnd\", Nothing) = Nothing Then\r\n                        windowHandles.Add(FindWindow(\"Shell_SecondaryTrayWnd\", Nothing))\r\n                    End If\r\n                End If\r\n\r\n            Catch\r\n            End Try\r\n\r\n        End If\r\n\r\n\r\n        Return ActiveWindows\r\n    End Function\r\n\r\n    Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean\r\n        Dim sClassName As New StringBuilder(\"\", 256)\r\n        Call GetClassName(hwnd, sClassName, 256)\r\n        If sClassName.ToString = \"Shell_TrayWnd\" Or sClassName.ToString = \"Shell_SecondaryTrayWnd\" Then\r\n            windowHandles.Add(hwnd)\r\n        End If\r\n        Return True\r\n    End Function\r\n\r\n    Public Shared windowHandles As ArrayList = New ArrayList()\r\n\r\n    Public Shared Sub RevertToZero()\r\n\r\n        If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n            Try\r\n                Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {\r\n                    .WindowStyle = ProcessWindowStyle.Hidden,\r\n                    .FileName = \"explorer.exe\",\r\n                    .Arguments = \" taskbarx:\" & Chr(34) & \"-stop\" & Chr(34)\r\n                }\r\n                Process.Start(processInfo)\r\n            Catch\r\n            End Try\r\n        Else\r\n            Try\r\n                System.Diagnostics.Process.Start(\"TaskbarX.exe\", \"-stop\")\r\n            Catch\r\n            End Try\r\n        End If\r\n\r\n    End Sub\r\n\r\n    Private ReadOnly bmp As Bitmap = New Bitmap(1, 1)\r\n\r\n    Private Function GetColorAt(ByVal x As Integer, ByVal y As Integer) As Color\r\n        Dim bounds As Rectangle = New Rectangle(x, y, 1, 1)\r\n\r\n        Using g As Graphics = Graphics.FromImage(bmp)\r\n            g.CopyFromScreen(bounds.Location, Point.Empty, bounds.Size)\r\n        End Using\r\n\r\n        Return bmp.GetPixel(0, 0)\r\n    End Function\r\n\r\n\r\n\r\n\r\n\r\n    Private Async Sub Window_Loaded(ByVal sender As Object, ByVal e As EventArgs)\r\n\r\n        InitializeComponent()\r\n\r\n\r\n\r\n        If Me.Background.ToString = \"#FF000000\" Then\r\n            Dim mySolidColorBrush As SolidColorBrush = New SolidColorBrush()\r\n            mySolidColorBrush.Color = System.Windows.Media.Color.FromArgb(255, 10, 10, 10)\r\n            Dim mySolidColorBrush2 As SolidColorBrush = New SolidColorBrush()\r\n            mySolidColorBrush2.Color = System.Windows.Media.Color.FromArgb(255, 20, 20, 20)\r\n            placeholder.Fill = mySolidColorBrush\r\n            Me.Background = mySolidColorBrush\r\n            ListBox1.Background = mySolidColorBrush2\r\n        End If\r\n\r\n        If Me.Background.ToString = \"#FFFFFFFF\" Then\r\n            Dim mySolidColorBrush As SolidColorBrush = New SolidColorBrush()\r\n            mySolidColorBrush.Color = System.Windows.Media.Color.FromArgb(255, 240, 240, 240)\r\n            Dim mySolidColorBrush2 As SolidColorBrush = New SolidColorBrush()\r\n            mySolidColorBrush2.Color = System.Windows.Media.Color.FromArgb(255, 255, 255, 255)\r\n            placeholder.Fill = mySolidColorBrush\r\n            Me.Background = mySolidColorBrush2\r\n            ListBox1.Background = mySolidColorBrush\r\n        End If\r\n\r\n\r\n        Dim identity = WindowsIdentity.GetCurrent()\r\n        Dim principal = New WindowsPrincipal(identity)\r\n        Dim isElevated As Boolean = principal.IsInRole(WindowsBuiltInRole.Administrator)\r\n        If isElevated Then\r\n            Dim adminDialog As ContentDialog = New ContentDialog With {\r\n        .Title = \"Warning!\",\r\n        .Content = \"Please DON'T run the Configurator as Administrator. This may cause the start-up task not to work properly!\",\r\n        .PrimaryButtonText = \"Ok\"\r\n    }\r\n            Dim result As ContentDialogResult = Await adminDialog.ShowAsync()\r\n        End If\r\n\r\n        'Checkbox10.Visibility = Visibility.Hidden\r\n\r\n        ListBox1.SelectedIndex = 0\r\n\r\n        sAlpha.Value = 50\r\n        tpop.Value = 100\r\n        tsop.Value = 100\r\n\r\n        tbrounding.Value = 0\r\n\r\n        ComboBox1.Items.Add(\"none\")\r\n        ComboBox1.Items.Add(\"linear\")\r\n        ComboBox1.Items.Add(\"expoeaseout\")\r\n        ComboBox1.Items.Add(\"expoeasein\")\r\n        ComboBox1.Items.Add(\"expoeaseinout\")\r\n        ComboBox1.Items.Add(\"expoeaseoutin\")\r\n        ComboBox1.Items.Add(\"circeaseout\")\r\n        ComboBox1.Items.Add(\"circeasein\")\r\n        ComboBox1.Items.Add(\"circeaseinout\")\r\n        ComboBox1.Items.Add(\"circeaseoutin\")\r\n        ComboBox1.Items.Add(\"quadeaseout\")\r\n        ComboBox1.Items.Add(\"quadeasein\")\r\n        ComboBox1.Items.Add(\"quadeaseinout\")\r\n        ComboBox1.Items.Add(\"quadeaseoutin\")\r\n        ComboBox1.Items.Add(\"sineeaseout\")\r\n        ComboBox1.Items.Add(\"sineeasein\")\r\n        ComboBox1.Items.Add(\"sineeaseinout\")\r\n        ComboBox1.Items.Add(\"sineeaseoutin\")\r\n        ComboBox1.Items.Add(\"cubiceaseout\")\r\n        ComboBox1.Items.Add(\"cubiceasein\")\r\n        ComboBox1.Items.Add(\"cubiceaseinout\")\r\n        ComboBox1.Items.Add(\"cubiceaseoutin\")\r\n        ComboBox1.Items.Add(\"quarteaseout\")\r\n        ComboBox1.Items.Add(\"quarteasein\")\r\n        ComboBox1.Items.Add(\"quarteaseinout\")\r\n        ComboBox1.Items.Add(\"quarteaseoutin\")\r\n        ComboBox1.Items.Add(\"quinteaseout\")\r\n        ComboBox1.Items.Add(\"quinteasein\")\r\n        ComboBox1.Items.Add(\"quinteaseinout\")\r\n        ComboBox1.Items.Add(\"quinteaseoutin\")\r\n        ComboBox1.Items.Add(\"elasticeaseout\")\r\n        ComboBox1.Items.Add(\"elasticeasein\")\r\n        ComboBox1.Items.Add(\"elasticeaseinout\")\r\n        ComboBox1.Items.Add(\"elasticeaseoutin\")\r\n        ComboBox1.Items.Add(\"bounceeaseout\")\r\n        ComboBox1.Items.Add(\"bounceeasein\")\r\n        ComboBox1.Items.Add(\"bounceeaseinout\")\r\n        ComboBox1.Items.Add(\"bounceeaseoutin\")\r\n        ComboBox1.Items.Add(\"backeaseout\")\r\n        ComboBox1.Items.Add(\"backeasein\")\r\n        ComboBox1.Items.Add(\"backeaseinout\")\r\n        ComboBox1.Items.Add(\"backeaseoutin\")\r\n\r\n        ComboBox1.SelectedItem = \"cubiceaseinout\"\r\n\r\n        ComboBox2.Items.Add(\"none\")\r\n        ComboBox2.Items.Add(\"linear\")\r\n        ComboBox2.Items.Add(\"expoeaseout\")\r\n        ComboBox2.Items.Add(\"expoeasein\")\r\n        ComboBox2.Items.Add(\"expoeaseinout\")\r\n        ComboBox2.Items.Add(\"expoeaseoutin\")\r\n        ComboBox2.Items.Add(\"circeaseout\")\r\n        ComboBox2.Items.Add(\"circeasein\")\r\n        ComboBox2.Items.Add(\"circeaseinout\")\r\n        ComboBox2.Items.Add(\"circeaseoutin\")\r\n        ComboBox2.Items.Add(\"quadeaseout\")\r\n        ComboBox2.Items.Add(\"quadeasein\")\r\n        ComboBox2.Items.Add(\"quadeaseinout\")\r\n        ComboBox2.Items.Add(\"quadeaseoutin\")\r\n        ComboBox2.Items.Add(\"sineeaseout\")\r\n        ComboBox2.Items.Add(\"sineeasein\")\r\n        ComboBox2.Items.Add(\"sineeaseinout\")\r\n        ComboBox2.Items.Add(\"sineeaseoutin\")\r\n        ComboBox2.Items.Add(\"cubiceaseout\")\r\n        ComboBox2.Items.Add(\"cubiceasein\")\r\n        ComboBox2.Items.Add(\"cubiceaseinout\")\r\n        ComboBox2.Items.Add(\"cubiceaseoutin\")\r\n        ComboBox2.Items.Add(\"quarteaseout\")\r\n        ComboBox2.Items.Add(\"quarteasein\")\r\n        ComboBox2.Items.Add(\"quarteaseinout\")\r\n        ComboBox2.Items.Add(\"quarteaseoutin\")\r\n        ComboBox2.Items.Add(\"quinteaseout\")\r\n        ComboBox2.Items.Add(\"quinteasein\")\r\n        ComboBox2.Items.Add(\"quinteaseinout\")\r\n        ComboBox2.Items.Add(\"quinteaseoutin\")\r\n        ComboBox2.Items.Add(\"elasticeaseout\")\r\n        ComboBox2.Items.Add(\"elasticeasein\")\r\n        ComboBox2.Items.Add(\"elasticeaseinout\")\r\n        ComboBox2.Items.Add(\"elasticeaseoutin\")\r\n        ComboBox2.Items.Add(\"bounceeaseout\")\r\n        ComboBox2.Items.Add(\"bounceeasein\")\r\n        ComboBox2.Items.Add(\"bounceeaseinout\")\r\n        ComboBox2.Items.Add(\"bounceeaseoutin\")\r\n        ComboBox2.Items.Add(\"backeaseout\")\r\n        ComboBox2.Items.Add(\"backeasein\")\r\n        ComboBox2.Items.Add(\"backeaseinout\")\r\n        ComboBox2.Items.Add(\"backeaseoutin\")\r\n\r\n        ComboBox2.SelectedItem = \"cubiceaseinout\"\r\n\r\n\r\n\r\n\r\n\r\n        If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n            startbutton_shortcut.Text = \"explorer.exe taskbarx: -showstartmenu\"\r\n        Else\r\n\r\n\r\n            startbutton_shortcut.Text = Chr(34) & System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\" & Chr(34) & \" -showstartmenu\"\r\n\r\n        End If\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12\r\n\r\n        If Not System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n            Try\r\n                Dim address As String = \"https://raw.githubusercontent.com/ChrisAnd1998/FalconX-Center-Taskbar/master/VERSION\"\r\n                Dim client As WebClient = New WebClient With {\r\n                    .CachePolicy = New System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore)\r\n                }\r\n                Dim reader As StreamReader = New StreamReader(client.OpenRead(address))\r\n\r\n                Dim latest = reader.ReadToEnd.ToString\r\n\r\n\r\n\r\n                If latest.Contains(Assembly.GetExecutingAssembly().GetName().Version.ToString()) Then\r\n                    vers.Text = \"You are up to date.\"\r\n                Else\r\n                    If latest.Substring(0, 7).ToString.Replace(\".\", \"\") <= Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(\".\", \"\") Then\r\n                        vers.Text = \"This is a Pre-Release! Unstable.\"\r\n                    Else\r\n                        vers.Text = \"Update \" & latest.Substring(0, 7) & \" is available!\"\r\n                    End If\r\n\r\n                End If\r\n\r\n                reader.Dispose()\r\n                client.Dispose()\r\n            Catch\r\n            End Try\r\n        Else\r\n            bb.Visibility = Visibility.Hidden\r\n            vers.Visibility = Visibility.Hidden\r\n        End If\r\n\r\n        Try\r\n\r\n            Using ts As TaskService = New TaskService()\r\n\r\n                Dim td = ts.GetTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n\r\n                Dim cfg As String = Nothing\r\n\r\n\r\n\r\n                If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n\r\n                    ''cfg = td.Definition.Actions.ToString.Replace(\"cmd.exe /c start shell:AppsFolder\\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarX\", \"\")\r\n                    cfg = td.Definition.Actions.ToString.Replace(\"explorer.exe taskbarx:\", \"\")\r\n                Else\r\n                    cfg = td.Definition.Actions.ToString.Replace(Chr(34) & System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\" & Chr(34), \"\")\r\n                End If\r\n\r\n                Dim arguments() As String = cfg.Split(CType(\" \", Char()))\r\n\r\n                For Each argument In arguments\r\n                    Dim val() As String = Split(argument, \"=\")\r\n                    Console.WriteLine(val(0))\r\n                    If argument.Contains(\"-tbs=\") Then\r\n\r\n                        If CInt(val(1)) = 0 Then\r\n                            RadioButton1.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 1 Then\r\n                            RadioButton2.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 2 Then\r\n                            RadioButton3.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 3 Then\r\n                            RadioButton4.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 4 Then\r\n                            RadioButtontc.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 5 Then\r\n                            RadioButtonoq.IsChecked = True\r\n                        End If\r\n\r\n                    End If\r\n\r\n                    If argument.Contains(\"-color=\") Then\r\n                        Dim colorval As String = val(1)\r\n                        Dim colorsep = colorval.Split(CType(\";\", Char()))\r\n\r\n                        sRed.Value = CDbl(colorsep(0))\r\n                        sGreen.Value = CDbl(colorsep(1))\r\n                        sBlue.Value = CDbl(colorsep(2))\r\n                        sAlpha.Value = CDbl(colorsep(3))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tpop=\") Then\r\n                        tpop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbr=\") Then\r\n                        tbrounding.Text = val(1)\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbsg=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            tbsegments.IsChecked = True\r\n                        End If\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tsop=\") Then\r\n                        tsop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-ptbo=\") Then\r\n                        NumericUpDown1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-stbo=\") Then\r\n                        NumericUpDown2.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cpo=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox2.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cso=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox3.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-as=\") Then\r\n                        ComboBox1.SelectedItem = val(1)\r\n\r\n                    End If\r\n                    If argument.Contains(\"-asp=\") Then\r\n                        NumericUpDown4.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr=\") Then\r\n                        NumericUpDown7.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr2=\") Then\r\n                        NumericUpDown7_Copy.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr3=\") Then\r\n                        NumericUpDown7_Copy1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-lr=\") Then\r\n                        NumericUpDown3.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cib=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox1.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-obas=\") Then\r\n                        ComboBox2.SelectedItem = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-oblr=\") Then\r\n                        NumericUpDown5.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-ftotc=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-rzbt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4_Copy.IsChecked = True\r\n                        End If\r\n                        If val(1) = \"0\" Then\r\n                            CheckBox4_Copy.IsChecked = False\r\n                        End If\r\n                    End If\r\n\r\n                    If argument.Contains(\"-dtbsowm=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox10.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cfsa=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox9.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-dct=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox11.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hps=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox12.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hss=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox13.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hpt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox14.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hst=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox15.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-sti=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox16.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-console\") Then\r\n                        checkboxconsole.IsChecked = True\r\n                    End If\r\n\r\n                Next\r\n\r\n                Console.WriteLine(td.Definition.Actions.ToString)\r\n\r\n                Dim lg As LogonTrigger = CType(td.Definition.Triggers.Item(0), LogonTrigger)\r\n                Dim times As TimeSpan = lg.Delay\r\n\r\n                NumericUpDown6.Value = times.Seconds\r\n            End Using\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n\r\n\r\n\r\n        ''Override Older settings if exist\r\n        Try\r\n            Using mts As TaskService = New TaskService()\r\n\r\n                Dim mtd = mts.GetTask(\"TaskbarX\")\r\n\r\n                If mtd.Name = \"TaskbarX\" Then\r\n                    Migrate()\r\n                End If\r\n\r\n            End Using\r\n        Catch\r\n            'older Task not found\r\n        End Try\r\n\r\n\r\n\r\n\r\n        '' Dim Win11Taskbar = FindWindowEx(FindWindowByClass(\"Shell_TrayWnd\", CType(0, IntPtr)), CType(0, IntPtr), \"Windows.UI.Composition.DesktopWindowContentBridge\", Nothing)\r\n        '' If Not Win11Taskbar = CType(0, IntPtr) Then\r\n\r\n        ''ListBox1.Items.RemoveAt(1)\r\n\r\n        '' End If\r\n\r\n    End Sub\r\n\r\n\r\n    Sub Migrate()\r\n\r\n\r\n        Try\r\n\r\n            Using ts As TaskService = New TaskService()\r\n\r\n                Dim td = ts.GetTask(\"TaskbarX\")\r\n\r\n\r\n                Dim cfg As String = Nothing\r\n\r\n\r\n\r\n                If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n                    cfg = td.Definition.Actions.ToString.Replace(\"cmd.exe /c start shell:AppsFolder\\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarX\", \"\")\r\n                    ''  cfg = td.Definition.Actions.ToString.Replace(\"explorer.exe taskbarx:\", \"\")\r\n                Else\r\n                    cfg = td.Definition.Actions.ToString.Replace(System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\", \"\")\r\n                End If\r\n\r\n                Dim arguments() As String = cfg.Split(CType(\" \", Char()))\r\n\r\n                For Each argument In arguments\r\n                    Dim val() As String = Split(argument, \"=\")\r\n                    Console.WriteLine(val(0))\r\n                    If argument.Contains(\"-tbs=\") Then\r\n                        If CInt(val(1)) = 0 Then\r\n                            RadioButton1.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 1 Then\r\n                            RadioButton2.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 2 Then\r\n                            RadioButton3.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 3 Then\r\n                            RadioButton4.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 4 Then\r\n                            RadioButtontc.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 5 Then\r\n                            RadioButtonoq.IsChecked = True\r\n                        End If\r\n\r\n                    End If\r\n\r\n                    If argument.Contains(\"-color=\") Then\r\n                        Dim colorval As String = val(1)\r\n                        Dim colorsep = colorval.Split(CType(\";\", Char()))\r\n\r\n                        sRed.Value = CDbl(colorsep(0))\r\n                        sGreen.Value = CDbl(colorsep(1))\r\n                        sBlue.Value = CDbl(colorsep(2))\r\n                        sAlpha.Value = CDbl(colorsep(3))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tpop=\") Then\r\n                        tpop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbr=\") Then\r\n                        tbrounding.Text = val(1)\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbsg=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            tbsegments.IsChecked = True\r\n                        End If\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tsop=\") Then\r\n                        tsop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-ptbo=\") Then\r\n                        NumericUpDown1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-stbo=\") Then\r\n                        NumericUpDown2.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cpo=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox2.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cso=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox3.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-as=\") Then\r\n                        ComboBox1.SelectedItem = val(1)\r\n\r\n                    End If\r\n                    If argument.Contains(\"-asp=\") Then\r\n                        NumericUpDown4.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr=\") Then\r\n                        NumericUpDown7.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr2=\") Then\r\n                        NumericUpDown7_Copy.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr3=\") Then\r\n                        NumericUpDown7_Copy1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-lr=\") Then\r\n                        NumericUpDown3.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cib=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox1.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-obas=\") Then\r\n                        ComboBox2.SelectedItem = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-oblr=\") Then\r\n                        NumericUpDown5.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-ftotc=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-rzbt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4_Copy.IsChecked = True\r\n                        End If\r\n                        If val(1) = \"0\" Then\r\n                            CheckBox4_Copy.IsChecked = False\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-dtbsowm=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox10.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cfsa=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox9.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-dct=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox11.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hps=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox12.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hss=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox13.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hpt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox14.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hst=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox15.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-sti=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox16.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-console\") Then\r\n                        checkboxconsole.IsChecked = True\r\n                    End If\r\n\r\n                Next\r\n\r\n                Console.WriteLine(td.Definition.Actions.ToString)\r\n\r\n                Dim lg As LogonTrigger = CType(td.Definition.Triggers.Item(0), LogonTrigger)\r\n                Dim times As TimeSpan = lg.Delay\r\n\r\n                NumericUpDown6.Value = times.Seconds\r\n\r\n\r\n\r\n\r\n                Dim parameters As String = \"\"\r\n\r\n                If RadioButton1.IsChecked = True Then\r\n                    parameters &= \"-tbs=0 \"\r\n                End If\r\n                If RadioButton2.IsChecked = True Then\r\n                    parameters &= \"-tbs=1 \"\r\n                End If\r\n                If RadioButton3.IsChecked = True Then\r\n                    parameters &= \"-tbs=2 \"\r\n                End If\r\n                If RadioButton4.IsChecked = True Then\r\n                    parameters &= \"-tbs=3 \"\r\n                End If\r\n                If RadioButtontc.IsChecked = True Then\r\n                    parameters &= \"-tbs=4 \"\r\n                End If\r\n                If RadioButtonoq.IsChecked = True Then\r\n                    parameters &= \"-tbs=5 \"\r\n                End If\r\n\r\n                parameters &= \"-color=\" & tRed.Text.ToString & \";\" & tGreen.Text.ToString & \";\" & tBlue.Text.ToString & \";\" & tAlpha.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n                parameters &= \"-tpop=\" & tpopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n                parameters &= \"-tsop=\" & tsopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n                If Not ComboBox1.SelectedItem Is Nothing Then\r\n                    parameters &= \"-as=\" & ComboBox1.SelectedItem.ToString.ToLower & \" \"\r\n                End If\r\n\r\n                If Not ComboBox2.SelectedItem Is Nothing Then\r\n                    parameters &= \"-obas=\" & ComboBox2.SelectedItem.ToString.ToLower & \" \"\r\n                End If\r\n\r\n                If Not tbrounding.Text = Nothing Then\r\n                    parameters &= \"-tbr=\" & tbrounding.Text & \" \"\r\n                End If\r\n\r\n                If tbsegments.IsChecked = True Then\r\n                    parameters &= \"-tbsg=1 \"\r\n                End If\r\n\r\n                If Not NumericUpDown4.Text = Nothing Then\r\n                    parameters &= \"-asp=\" & NumericUpDown4.Text & \" \"\r\n                End If\r\n\r\n                If Not NumericUpDown1.Text = Nothing Then\r\n                    parameters &= \"-ptbo=\" & NumericUpDown1.Text & \" \"\r\n                End If\r\n                If Not NumericUpDown2.Text = Nothing Then\r\n                    parameters &= \"-stbo=\" & NumericUpDown2.Text & \" \"\r\n                End If\r\n\r\n                If CheckBox1.IsChecked = True Then\r\n                    parameters &= \"-cib=1 \"\r\n                End If\r\n\r\n                If Not NumericUpDown3.Text = Nothing Then\r\n                    parameters &= \"-lr=\" & NumericUpDown3.Text & \" \"\r\n                End If\r\n\r\n                If Not NumericUpDown5.Text = Nothing Then\r\n                    parameters &= \"-oblr=\" & NumericUpDown5.Text & \" \"\r\n                End If\r\n\r\n                If Not NumericUpDown7.Text = Nothing Then\r\n                    parameters &= \"-sr=\" & NumericUpDown7.Text & \" \"\r\n                End If\r\n\r\n                If Not NumericUpDown7_Copy.Text = Nothing Then\r\n                    parameters &= \"-sr2=\" & NumericUpDown7_Copy.Text & \" \"\r\n                End If\r\n\r\n                If Not NumericUpDown7_Copy1.Text = Nothing Then\r\n                    parameters &= \"-sr3=\" & NumericUpDown7_Copy1.Text & \" \"\r\n                End If\r\n\r\n                If CheckBox2.IsChecked = True Then\r\n                    parameters &= \"-cpo=1 \"\r\n                End If\r\n\r\n                If CheckBox3.IsChecked = True Then\r\n                    parameters &= \"-cso=1 \"\r\n                End If\r\n\r\n                If CheckBox4.IsChecked = True Then\r\n                    parameters &= \"-ftotc=1 \"\r\n                End If\r\n\r\n                If CheckBox4_Copy.IsChecked = True Then\r\n                    parameters &= \"-rzbt=1 \"\r\n                End If\r\n\r\n\r\n                If CheckBox4_Copy.IsChecked = False Then\r\n                    parameters &= \"-rzbt=0 \"\r\n                End If\r\n\r\n                If Checkbox10.IsChecked = True Then\r\n                    parameters &= \"-dtbsowm=1 \"\r\n                End If\r\n                If Checkbox9.IsChecked = True Then\r\n                    parameters &= \"-cfsa=1 \"\r\n                End If\r\n                If CheckBox11.IsChecked = True Then\r\n                    parameters &= \"-dct=1 \"\r\n                End If\r\n                If Checkbox12.IsChecked = True Then\r\n                    parameters &= \"-hps=1 \"\r\n                End If\r\n                If Checkbox13.IsChecked = True Then\r\n                    parameters &= \"-hss=1 \"\r\n                End If\r\n                If Checkbox14.IsChecked = True Then\r\n                    parameters &= \"-hpt=1 \"\r\n                End If\r\n                If Checkbox15.IsChecked = True Then\r\n                    parameters &= \"-hst=1 \"\r\n                End If\r\n                If Checkbox16.IsChecked = True Then\r\n                    parameters &= \"-sti=1 \"\r\n                End If\r\n                If checkboxconsole.IsChecked = True Then\r\n                    parameters &= \"-console \"\r\n                End If\r\n\r\n                Try\r\n                    Using ts2 As TaskService = New TaskService()\r\n                        ts2.RootFolder.DeleteTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n                        ts2.RootFolder.DeleteTask(\"TaskbarX\")\r\n                    End Using\r\n                Catch ex As Exception\r\n                    ' MessageBox.Show(ex.Message)\r\n                End Try\r\n\r\n                Try\r\n                    Using ts2 As TaskService = New TaskService()\r\n\r\n                        Dim td2 As TaskDefinition = ts2.NewTask()\r\n                        Dim delay As Integer = CInt(NumericUpDown6.Text)\r\n\r\n                        td2.RegistrationInfo.Description = \"Center taskbar icons\"\r\n\r\n                        td2.Triggers.Add(New LogonTrigger With {\r\n                            .UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name,\r\n                            .Delay = TimeSpan.FromSeconds(delay)})\r\n\r\n                        td2.Settings.DisallowStartIfOnBatteries = False\r\n                        td2.Settings.StopIfGoingOnBatteries = False\r\n                        td2.Settings.RunOnlyIfIdle = False\r\n                        td2.Settings.IdleSettings.RestartOnIdle = False\r\n                        td2.Settings.IdleSettings.StopOnIdleEnd = False\r\n                        td2.Settings.Hidden = True\r\n                        td2.Settings.ExecutionTimeLimit = TimeSpan.Zero\r\n                        td2.RegistrationInfo.Author = \"Chris Andriessen\"\r\n\r\n                        If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n\r\n                            td2.Actions.Add(New ExecAction(\"explorer.exe\", \"taskbarx:\" & Chr(34) & parameters & Chr(34), Nothing))\r\n                        Else\r\n\r\n                            td2.Actions.Add(New ExecAction(Chr(34) & System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\" & Chr(34), parameters, Nothing))\r\n\r\n                        End If\r\n\r\n                        ts2.RootFolder.RegisterTaskDefinition(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"), td2)\r\n\r\n                    End Using\r\n                Catch ex As Exception\r\n                    ' MessageBox.Show(ex.Message)\r\n                End Try\r\n\r\n\r\n\r\n\r\n\r\n            End Using\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n\r\n\r\n        Try\r\n            Using ts3 As TaskService = New TaskService()\r\n                ts3.RootFolder.DeleteTask(\"TaskbarX\")\r\n            End Using\r\n        Catch ex As Exception\r\n            ' MessageBox.Show(ex.Message)\r\n        End Try\r\n\r\n    End Sub\r\n\r\n    Private Sub ListBox_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)\r\n\r\n        Dim item = CType(sender, ListBox)\r\n        Dim index = item.SelectedIndex\r\n\r\n        TabControl1.SelectedIndex = index\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click(sender As Object, e As RoutedEventArgs)\r\n        Me.Close()\r\n    End Sub\r\n\r\n    Public Sub Button_Click_1(sender As Object, e As RoutedEventArgs)\r\n\r\n        'Kill every other running instance of FalconX\r\n\r\n        Try\r\n            For Each prog As Process In Process.GetProcesses\r\n                If prog.ProcessName = \"TaskbarX\" Then\r\n                    prog.Kill()\r\n                End If\r\n            Next\r\n        Catch ex As Exception\r\n\r\n        End Try\r\n\r\n        System.Threading.Thread.Sleep(50)\r\n\r\n        Dim t1 As System.Threading.Thread = New System.Threading.Thread(AddressOf RevertToZero)\r\n        t1.Start()\r\n\r\n        System.Threading.Thread.Sleep(1000)\r\n\r\n\r\n\r\n        Dim parameters As String = \"\"\r\n\r\n        If RadioButton1.IsChecked = True Then\r\n            parameters &= \"-tbs=0 \"\r\n        End If\r\n        If RadioButton2.IsChecked = True Then\r\n            parameters &= \"-tbs=1 \"\r\n        End If\r\n        If RadioButton3.IsChecked = True Then\r\n            parameters &= \"-tbs=2 \"\r\n        End If\r\n        If RadioButton4.IsChecked = True Then\r\n            parameters &= \"-tbs=3 \"\r\n        End If\r\n        If RadioButtontc.IsChecked = True Then\r\n            parameters &= \"-tbs=4 \"\r\n        End If\r\n        If RadioButtonoq.IsChecked = True Then\r\n            parameters &= \"-tbs=5 \"\r\n        End If\r\n\r\n        parameters &= \"-color=\" & tRed.Text.ToString & \";\" & tGreen.Text.ToString & \";\" & tBlue.Text.ToString & \";\" & tAlpha.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tpop=\" & tpopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tsop=\" & tsopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        If Not ComboBox1.SelectedItem Is Nothing Then\r\n            parameters &= \"-as=\" & ComboBox1.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not ComboBox2.SelectedItem Is Nothing Then\r\n            parameters &= \"-obas=\" & ComboBox2.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not tbrounding.Text = Nothing Then\r\n            parameters &= \"-tbr=\" & tbrounding.Text & \" \"\r\n        End If\r\n\r\n        If tbsegments.IsChecked = True Then\r\n            parameters &= \"-tbsg=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown4.Text = Nothing Then\r\n            parameters &= \"-asp=\" & NumericUpDown4.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown1.Text = Nothing Then\r\n            parameters &= \"-ptbo=\" & NumericUpDown1.Text & \" \"\r\n        End If\r\n        If Not NumericUpDown2.Text = Nothing Then\r\n            parameters &= \"-stbo=\" & NumericUpDown2.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox1.IsChecked = True Then\r\n            parameters &= \"-cib=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown3.Text = Nothing Then\r\n            parameters &= \"-lr=\" & NumericUpDown3.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown5.Text = Nothing Then\r\n            parameters &= \"-oblr=\" & NumericUpDown5.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7.Text = Nothing Then\r\n            parameters &= \"-sr=\" & NumericUpDown7.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy.Text = Nothing Then\r\n            parameters &= \"-sr2=\" & NumericUpDown7_Copy.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy1.Text = Nothing Then\r\n            parameters &= \"-sr3=\" & NumericUpDown7_Copy1.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox2.IsChecked = True Then\r\n            parameters &= \"-cpo=1 \"\r\n        End If\r\n\r\n        If CheckBox3.IsChecked = True Then\r\n            parameters &= \"-cso=1 \"\r\n        End If\r\n\r\n        If CheckBox4.IsChecked = True Then\r\n            parameters &= \"-ftotc=1 \"\r\n        End If\r\n\r\n        If CheckBox4_Copy.IsChecked = True Then\r\n            parameters &= \"-rzbt=1 \"\r\n        End If\r\n\r\n        If CheckBox4_Copy.IsChecked = False Then\r\n            parameters &= \"-rzbt=0 \"\r\n        End If\r\n\r\n        If Checkbox10.IsChecked = True Then\r\n            parameters &= \"-dtbsowm=1 \"\r\n        End If\r\n        If Checkbox9.IsChecked = True Then\r\n            parameters &= \"-cfsa=1 \"\r\n        End If\r\n        If CheckBox11.IsChecked = True Then\r\n            parameters &= \"-dct=1 \"\r\n        End If\r\n        If Checkbox12.IsChecked = True Then\r\n            parameters &= \"-hps=1 \"\r\n        End If\r\n        If Checkbox13.IsChecked = True Then\r\n            parameters &= \"-hss=1 \"\r\n        End If\r\n        If Checkbox14.IsChecked = True Then\r\n            parameters &= \"-hpt=1 \"\r\n        End If\r\n        If Checkbox15.IsChecked = True Then\r\n            parameters &= \"-hst=1 \"\r\n        End If\r\n        If Checkbox16.IsChecked = True Then\r\n            parameters &= \"-sti=1 \"\r\n        End If\r\n        If checkboxconsole.IsChecked = True Then\r\n            parameters &= \"-console \"\r\n        End If\r\n\r\n        Try\r\n            Using ts As TaskService = New TaskService()\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\")\r\n            End Using\r\n        Catch ex As Exception\r\n            ' MessageBox.Show(ex.Message)\r\n        End Try\r\n\r\n        Try\r\n            Using ts As TaskService = New TaskService()\r\n\r\n                Dim td As TaskDefinition = ts.NewTask()\r\n                Dim delay As Integer = CInt(NumericUpDown6.Text)\r\n\r\n                td.RegistrationInfo.Description = \"Center taskbar icons\"\r\n\r\n                td.Triggers.Add(New LogonTrigger With {\r\n                    .UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name,\r\n                    .Delay = TimeSpan.FromSeconds(delay)})\r\n\r\n                td.Settings.DisallowStartIfOnBatteries = False\r\n                td.Settings.StopIfGoingOnBatteries = False\r\n                td.Settings.RunOnlyIfIdle = False\r\n                td.Settings.IdleSettings.RestartOnIdle = False\r\n                td.Settings.IdleSettings.StopOnIdleEnd = False\r\n                td.Settings.Hidden = True\r\n                td.Settings.ExecutionTimeLimit = TimeSpan.Zero\r\n                td.RegistrationInfo.Author = \"Chris Andriessen\"\r\n\r\n                If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n\r\n                    td.Actions.Add(New ExecAction(\"explorer.exe\", \"taskbarx:\" & Chr(34) & parameters & Chr(34), Nothing))\r\n\r\n                    Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {\r\n                        .WindowStyle = ProcessWindowStyle.Hidden,\r\n                        .FileName = \"explorer.exe\",\r\n                        .Arguments = \" taskbarx:\" & Chr(34) & parameters & Chr(34)\r\n                    }\r\n                    Process.Start(processInfo)\r\n                Else\r\n\r\n                    td.Actions.Add(New ExecAction(Chr(34) & System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\" & Chr(34), parameters, Nothing))\r\n\r\n                    System.Diagnostics.Process.Start(\"TaskbarX.exe\", parameters)\r\n\r\n                End If\r\n\r\n                ts.RootFolder.RegisterTaskDefinition(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"), td)\r\n\r\n            End Using\r\n        Catch ex As Exception\r\n            ' MessageBox.Show(ex.Message)\r\n        End Try\r\n\r\n    End Sub\r\n\r\n    Public Shared WM_DWMCOLORIZATIONCOLORCHANGED As Integer = &H320\r\n    Public Shared WM_DWMCOMPOSITIONCHANGED As Integer = &H31E\r\n    Public Shared WM_THEMECHANGED As Integer = &H31A\r\n\r\n    Private Sub Button_Click_2(sender As Object, e As RoutedEventArgs)\r\n        'Kill every other running instance of FalconX\r\n\r\n        Try\r\n            For Each prog As Process In Process.GetProcesses\r\n                If prog.ProcessName = \"TaskbarX\" Then\r\n                    prog.Kill()\r\n                End If\r\n            Next\r\n        Catch\r\n        End Try\r\n\r\n        System.Threading.Thread.Sleep(50)\r\n\r\n\r\n\r\n        Dim t1 As System.Threading.Thread = New System.Threading.Thread(AddressOf RevertToZero)\r\n        t1.Start()\r\n\r\n\r\n\r\n        ' ResetTaskbarStyle()\r\n    End Sub\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n    Private Async Sub Button_Click_3(sender As Object, e As RoutedEventArgs)\r\n        Try\r\n            Using ts As TaskService = New TaskService()\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\")\r\n            End Using\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n\r\n        Dim deleteFileDialog As ContentDialog = New ContentDialog With {\r\n        .Title = \"Taskscheduler\",\r\n        .Content = \"Taskschedule Removed!\",\r\n        .PrimaryButtonText = \"Ok\"\r\n    }\r\n        Dim result As ContentDialogResult = Await deleteFileDialog.ShowAsync()\r\n\r\n    End Sub\r\n\r\n    Private Async Sub Button_Click_33(sender As Object, e As RoutedEventArgs)\r\n\r\n        Dim parameters As String = \"\"\r\n\r\n        If RadioButton1.IsChecked = True Then\r\n            parameters &= \"-tbs=0 \"\r\n        End If\r\n        If RadioButton2.IsChecked = True Then\r\n            parameters &= \"-tbs=1 \"\r\n        End If\r\n        If RadioButton3.IsChecked = True Then\r\n            parameters &= \"-tbs=2 \"\r\n        End If\r\n        If RadioButton4.IsChecked = True Then\r\n            parameters &= \"-tbs=3 \"\r\n        End If\r\n        If RadioButtontc.IsChecked = True Then\r\n            parameters &= \"-tbs=4 \"\r\n        End If\r\n        If RadioButtonoq.IsChecked = True Then\r\n            parameters &= \"-tbs=5 \"\r\n        End If\r\n\r\n        parameters &= \"-color=\" & tRed.Text.ToString & \";\" & tGreen.Text.ToString & \";\" & tBlue.Text.ToString & \";\" & tAlpha.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tpop=\" & tpopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tsop=\" & tsopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        If Not ComboBox1.SelectedItem Is Nothing Then\r\n            parameters &= \"-as=\" & ComboBox1.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not ComboBox2.SelectedItem Is Nothing Then\r\n            parameters &= \"-obas=\" & ComboBox2.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown4.Text = Nothing Then\r\n            parameters &= \"-asp=\" & NumericUpDown4.Text & \" \"\r\n        End If\r\n\r\n        If Not tbrounding.Text = Nothing Then\r\n            parameters &= \"-tbr=\" & tbrounding.Text & \" \"\r\n        End If\r\n\r\n        If tbsegments.IsChecked = True Then\r\n            parameters &= \"-tbsg=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown1.Text = Nothing Then\r\n            parameters &= \"-ptbo=\" & NumericUpDown1.Text & \" \"\r\n        End If\r\n        If Not NumericUpDown2.Text = Nothing Then\r\n            parameters &= \"-stbo=\" & NumericUpDown2.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox1.IsChecked = True Then\r\n            parameters &= \"-cib=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown3.Text = Nothing Then\r\n            parameters &= \"-lr=\" & NumericUpDown3.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown5.Text = Nothing Then\r\n            parameters &= \"-oblr=\" & NumericUpDown5.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7.Text = Nothing Then\r\n            parameters &= \"-sr=\" & NumericUpDown7.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy.Text = Nothing Then\r\n            parameters &= \"-sr2=\" & NumericUpDown7_Copy.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy1.Text = Nothing Then\r\n            parameters &= \"-sr3=\" & NumericUpDown7_Copy1.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox2.IsChecked = True Then\r\n            parameters &= \"-cpo=1 \"\r\n        End If\r\n\r\n        If CheckBox3.IsChecked = True Then\r\n            parameters &= \"-cso=1 \"\r\n        End If\r\n\r\n        If CheckBox4.IsChecked = True Then\r\n            parameters &= \"-ftotc=1 \"\r\n        End If\r\n\r\n        If CheckBox4_Copy.IsChecked = True Then\r\n            parameters &= \"-rzbt=1 \"\r\n        End If\r\n\r\n\r\n        If CheckBox4_Copy.IsChecked = False Then\r\n            parameters &= \"-rzbt=0 \"\r\n        End If\r\n\r\n        If Checkbox10.IsChecked = True Then\r\n            parameters &= \"-dtbsowm=1 \"\r\n        End If\r\n        If Checkbox9.IsChecked = True Then\r\n            parameters &= \"-cfsa=1 \"\r\n        End If\r\n        If CheckBox11.IsChecked = True Then\r\n            parameters &= \"-dct=1 \"\r\n        End If\r\n        If Checkbox12.IsChecked = True Then\r\n            parameters &= \"-hps=1 \"\r\n        End If\r\n        If Checkbox13.IsChecked = True Then\r\n            parameters &= \"-hss=1 \"\r\n        End If\r\n        If Checkbox14.IsChecked = True Then\r\n            parameters &= \"-hpt=1 \"\r\n        End If\r\n        If Checkbox15.IsChecked = True Then\r\n            parameters &= \"-hst=1 \"\r\n        End If\r\n        If Checkbox16.IsChecked = True Then\r\n            parameters &= \"-sti=1 \"\r\n        End If\r\n        If checkboxconsole.IsChecked = True Then\r\n            parameters &= \"-console \"\r\n        End If\r\n\r\n        Try\r\n            Using ts As TaskService = New TaskService()\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n                ts.RootFolder.DeleteTask(\"TaskbarX\")\r\n            End Using\r\n        Catch ex As Exception\r\n            ' MessageBox.Show(ex.Message)\r\n        End Try\r\n\r\n        Try\r\n            Using ts As TaskService = New TaskService()\r\n\r\n                Dim td As TaskDefinition = ts.NewTask()\r\n                Dim delay As Integer = CInt(NumericUpDown6.Text)\r\n\r\n                td.RegistrationInfo.Description = \"Center taskbar icons\"\r\n\r\n                td.Triggers.Add(New LogonTrigger With {\r\n                    .UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name,\r\n                    .Delay = TimeSpan.FromSeconds(delay)})\r\n\r\n                td.Settings.DisallowStartIfOnBatteries = False\r\n                td.Settings.StopIfGoingOnBatteries = False\r\n                td.Settings.RunOnlyIfIdle = False\r\n                td.Settings.IdleSettings.RestartOnIdle = False\r\n                td.Settings.IdleSettings.StopOnIdleEnd = False\r\n                td.Settings.Hidden = True\r\n                td.Settings.ExecutionTimeLimit = TimeSpan.Zero\r\n                td.RegistrationInfo.Author = \"Chris Andriessen\"\r\n\r\n                If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n\r\n                    td.Actions.Add(New ExecAction(\"explorer.exe\", \"taskbarx: \" & Chr(34) & parameters & Chr(34), Nothing))\r\n                Else\r\n\r\n                    td.Actions.Add(New ExecAction(System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\", parameters, Nothing))\r\n\r\n                End If\r\n\r\n                ts.RootFolder.RegisterTaskDefinition(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"), td)\r\n\r\n            End Using\r\n        Catch ex As Exception\r\n            ' MessageBox.Show(ex.Message)\r\n        End Try\r\n\r\n        Dim deleteFileDialog As ContentDialog = New ContentDialog With {\r\n        .Title = \"Taskscheduler\",\r\n        .Content = \"Taskschedule Created!\",\r\n        .PrimaryButtonText = \"Ok\"\r\n    }\r\n        Dim result As ContentDialogResult = Await deleteFileDialog.ShowAsync()\r\n\r\n    End Sub\r\n\r\n    Private Sub NumberValidationTextBox(ByVal sender As Object, ByVal e As TextCompositionEventArgs)\r\n\r\n        If Not Char.IsNumber(CChar(e.Text)) Then\r\n            If Not e.Text = \"-\" Then\r\n                e.Handled = True\r\n            End If\r\n        End If\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_4(sender As Object, e As RoutedEventArgs)\r\n\r\n        Try\r\n            Dim address As String = \"https://raw.githubusercontent.com/ChrisAnd1998/FalconX-Center-Taskbar/master/VERSION\"\r\n            Dim client As WebClient = New WebClient With {\r\n                .CachePolicy = New System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore)\r\n            }\r\n            Dim reader As StreamReader = New StreamReader(client.OpenRead(address))\r\n\r\n            Dim latest = reader.ReadToEnd.ToString\r\n\r\n            If latest.Contains(Assembly.GetExecutingAssembly().GetName().Version.ToString()) Then\r\n                vers.Text = \"You are up to date.\"\r\n            Else\r\n                If latest.Substring(0, 7).ToString.Replace(\".\", \"\") <= Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(\".\", \"\") Then\r\n                    vers.Text = \"This is a Pre-Release! Unstable.\"\r\n                Else\r\n                    vers.Text = \"Update \" & latest.Substring(0, 7) & \" is available!\"\r\n                    Process.Start(\"https://chrisandriessen.nl/taskbarx\")\r\n                End If\r\n\r\n            End If\r\n\r\n            reader.Dispose()\r\n            client.Dispose()\r\n        Catch\r\n        End Try\r\n    End Sub\r\n\r\n    Private Sub Button_Click_5(sender As Object, e As RoutedEventArgs)\r\n        Try\r\n\r\n            Using ts As TaskService = New TaskService()\r\n\r\n                Dim td = ts.GetTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n\r\n                Dim cfg As String = Nothing\r\n\r\n\r\n\r\n                If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n                    ''cfg = td.Definition.Actions.ToString.Replace(\"cmd.exe /c start shell:AppsFolder\\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarX\", \"\")\r\n                    cfg = td.Definition.Actions.ToString.Replace(\"explorer.exe taskbarx:\", \"\")\r\n\r\n                Else\r\n                    cfg = td.Definition.Actions.ToString.Replace(System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\", \"\")\r\n                End If\r\n\r\n                Dim arguments() As String = cfg.Split(CType(\" \", Char()))\r\n\r\n                For Each argument In arguments\r\n                    Dim val() As String = Split(argument, \"=\")\r\n                    Console.WriteLine(val(0))\r\n                    If argument.Contains(\"-tbs=\") Then\r\n                        If CInt(val(1)) = 0 Then\r\n                            RadioButton1.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 1 Then\r\n                            RadioButton2.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 2 Then\r\n                            RadioButton3.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 3 Then\r\n                            RadioButton4.IsChecked = True\r\n                        End If\r\n\r\n                        If CInt(val(1)) = 4 Then\r\n                            RadioButtontc.IsChecked = True\r\n                        End If\r\n                        If CInt(val(1)) = 5 Then\r\n                            RadioButtonoq.IsChecked = True\r\n                        End If\r\n\r\n                    End If\r\n\r\n                    If argument.Contains(\"-color=\") Then\r\n                        Dim colorval As String = val(1)\r\n                        Dim colorsep = colorval.Split(CType(\";\", Char()))\r\n\r\n                        sRed.Value = CDbl(colorsep(0))\r\n                        sGreen.Value = CDbl(colorsep(1))\r\n                        sBlue.Value = CDbl(colorsep(2))\r\n                        sAlpha.Value = CDbl(colorsep(3))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tpop=\") Then\r\n                        tpop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbr=\") Then\r\n                        tbrounding.Text = val(1)\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tbsg=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            tbsegments.IsChecked = True\r\n                        End If\r\n                    End If\r\n\r\n                    If argument.Contains(\"-tsop=\") Then\r\n                        tsop.Value = CDbl(val(1))\r\n                    End If\r\n\r\n                    If argument.Contains(\"-ptbo=\") Then\r\n                        NumericUpDown1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-stbo=\") Then\r\n                        NumericUpDown2.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cpo=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox2.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cso=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox3.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-as=\") Then\r\n                        ComboBox1.SelectedItem = val(1)\r\n\r\n                    End If\r\n                    If argument.Contains(\"-asp=\") Then\r\n                        NumericUpDown4.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr=\") Then\r\n                        NumericUpDown7.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr2=\") Then\r\n                        NumericUpDown7_Copy.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-sr3=\") Then\r\n                        NumericUpDown7_Copy1.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-lr=\") Then\r\n                        NumericUpDown3.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-cib=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox1.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-obas=\") Then\r\n                        ComboBox2.SelectedItem = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-oblr=\") Then\r\n                        NumericUpDown5.Text = val(1)\r\n                    End If\r\n                    If argument.Contains(\"-ftotc=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-rzbt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox4_Copy.IsChecked = True\r\n                        End If\r\n                        If val(1) = \"0\" Then\r\n                            CheckBox4_Copy.IsChecked = False\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-dtbsowm=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox10.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-cfsa=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox9.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-dct=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            CheckBox11.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hps=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox12.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hss=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox13.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hpt=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox14.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-hst=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox15.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-sti=\") Then\r\n                        If val(1) = \"1\" Then\r\n                            Checkbox16.IsChecked = True\r\n                        End If\r\n                    End If\r\n                    If argument.Contains(\"-console\") Then\r\n                        checkboxconsole.IsChecked = True\r\n                    End If\r\n\r\n                Next\r\n\r\n                Console.WriteLine(td.Definition.Actions.ToString)\r\n\r\n                Dim lg As LogonTrigger = CType(td.Definition.Triggers.Item(0), LogonTrigger)\r\n                Dim times As TimeSpan = lg.Delay\r\n\r\n                NumericUpDown6.Value = times.Seconds\r\n            End Using\r\n        Catch\r\n        End Try\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_6(sender As Object, e As RoutedEventArgs)\r\n        RadioButton1.IsChecked = True\r\n        Checkbox10.IsChecked = False\r\n        ComboBox1.SelectedItem = \"cubiceaseinout\"\r\n        ComboBox2.SelectedItem = \"cubiceaseinout\"\r\n        NumericUpDown4.Text = \"300\"\r\n        NumericUpDown1.Text = \"0\"\r\n        NumericUpDown2.Text = \"0\"\r\n        CheckBox1.IsChecked = False\r\n        NumericUpDown6.Text = \"6\"\r\n        CheckBox2.IsChecked = False\r\n        CheckBox3.IsChecked = False\r\n        CheckBox4.IsChecked = True\r\n        CheckBox4_Copy.IsChecked = True\r\n        Checkbox9.IsChecked = False\r\n        CheckBox11.IsChecked = False\r\n        Checkbox12.IsChecked = False\r\n        Checkbox13.IsChecked = False\r\n        Checkbox14.IsChecked = False\r\n        Checkbox15.IsChecked = False\r\n        Checkbox16.IsChecked = False\r\n        checkboxconsole.IsChecked = False\r\n        NumericUpDown3.Text = \"400\"\r\n        NumericUpDown5.Text = \"400\"\r\n        NumericUpDown7.Text = \"0\"\r\n        NumericUpDown7_Copy.Text = \"0\"\r\n        NumericUpDown7_Copy1.Text = \"0\"\r\n        sAlpha.Value = 50\r\n        tpop.Value = 100\r\n        tsop.Value = 100\r\n        sRed.Value = 0\r\n        sGreen.Value = 0\r\n        sBlue.Value = 0\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_7(sender As Object, e As RoutedEventArgs)\r\n\r\n        'Kill every other running instance of FalconX\r\n\r\n        Try\r\n            For Each prog As Process In Process.GetProcesses\r\n                If prog.ProcessName = \"TaskbarX\" Then\r\n                    prog.Kill()\r\n                End If\r\n            Next\r\n        Catch ex As Exception\r\n\r\n        End Try\r\n\r\n        System.Threading.Thread.Sleep(50)\r\n\r\n        Dim t1 As System.Threading.Thread = New System.Threading.Thread(AddressOf RevertToZero)\r\n        t1.Start()\r\n\r\n        System.Threading.Thread.Sleep(1000)\r\n\r\n        'ResetTaskbarStyle()\r\n\r\n        Dim parameters As String = \"\"\r\n\r\n        If RadioButton1.IsChecked = True Then\r\n            parameters &= \"-tbs=0 \"\r\n        End If\r\n        If RadioButton2.IsChecked = True Then\r\n            parameters &= \"-tbs=1 \"\r\n        End If\r\n        If RadioButton3.IsChecked = True Then\r\n            parameters &= \"-tbs=2 \"\r\n        End If\r\n        If RadioButton4.IsChecked = True Then\r\n            parameters &= \"-tbs=3 \"\r\n        End If\r\n        If RadioButtontc.IsChecked = True Then\r\n            parameters &= \"-tbs=4 \"\r\n        End If\r\n        If RadioButtonoq.IsChecked = True Then\r\n            parameters &= \"-tbs=5 \"\r\n        End If\r\n\r\n        parameters &= \"-color=\" & tRed.Text.ToString & \";\" & tGreen.Text.ToString & \";\" & tBlue.Text.ToString & \";\" & tAlpha.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tpop=\" & tpopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tsop=\" & tsopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        If Not ComboBox1.SelectedItem Is Nothing Then\r\n            parameters &= \"-as=\" & ComboBox1.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not ComboBox2.SelectedItem Is Nothing Then\r\n            parameters &= \"-obas=\" & ComboBox2.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not tbrounding.Text = Nothing Then\r\n            parameters &= \"-tbr=\" & tbrounding.Text & \" \"\r\n        End If\r\n\r\n        If tbsegments.IsChecked = True Then\r\n            parameters &= \"-tbsg=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown4.Text = Nothing Then\r\n            parameters &= \"-asp=\" & NumericUpDown4.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown1.Text = Nothing Then\r\n            parameters &= \"-ptbo=\" & NumericUpDown1.Text & \" \"\r\n        End If\r\n        If Not NumericUpDown2.Text = Nothing Then\r\n            parameters &= \"-stbo=\" & NumericUpDown2.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox1.IsChecked = True Then\r\n            parameters &= \"-cib=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown3.Text = Nothing Then\r\n            parameters &= \"-lr=\" & NumericUpDown3.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown5.Text = Nothing Then\r\n            parameters &= \"-oblr=\" & NumericUpDown5.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7.Text = Nothing Then\r\n            parameters &= \"-sr=\" & NumericUpDown7.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy.Text = Nothing Then\r\n            parameters &= \"-sr2=\" & NumericUpDown7_Copy.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy1.Text = Nothing Then\r\n            parameters &= \"-sr3=\" & NumericUpDown7_Copy1.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox2.IsChecked = True Then\r\n            parameters &= \"-cpo=1 \"\r\n        End If\r\n\r\n        If CheckBox3.IsChecked = True Then\r\n            parameters &= \"-cso=1 \"\r\n        End If\r\n\r\n        If CheckBox4.IsChecked = True Then\r\n            parameters &= \"-ftotc=1 \"\r\n        End If\r\n        If CheckBox4_Copy.IsChecked = True Then\r\n            parameters &= \"-rzbt=1 \"\r\n        End If\r\n        If CheckBox4_Copy.IsChecked = False Then\r\n            parameters &= \"-rzbt=0 \"\r\n        End If\r\n\r\n        If Checkbox10.IsChecked = True Then\r\n            parameters &= \"-dtbsowm=1 \"\r\n        End If\r\n        If Checkbox9.IsChecked = True Then\r\n            parameters &= \"-cfsa=1 \"\r\n        End If\r\n        If CheckBox11.IsChecked = True Then\r\n            parameters &= \"-dct=1 \"\r\n        End If\r\n        If Checkbox12.IsChecked = True Then\r\n            parameters &= \"-hps=1 \"\r\n        End If\r\n        If Checkbox13.IsChecked = True Then\r\n            parameters &= \"-hss=1 \"\r\n        End If\r\n        If Checkbox14.IsChecked = True Then\r\n            parameters &= \"-hpt=1 \"\r\n        End If\r\n        If Checkbox15.IsChecked = True Then\r\n            parameters &= \"-hst=1 \"\r\n        End If\r\n        If Checkbox16.IsChecked = True Then\r\n            parameters &= \"-sti=1 \"\r\n        End If\r\n        If Checkbox16.IsChecked = True Then\r\n            parameters &= \"-console \"\r\n        End If\r\n\r\n        If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n            Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {\r\n                .WindowStyle = ProcessWindowStyle.Hidden,\r\n                .FileName = \"explorer.exe\",\r\n                .Arguments = \" taskbarx:\" & Chr(34) & parameters & Chr(34)\r\n            }\r\n            Process.Start(processInfo)\r\n        Else\r\n            System.Diagnostics.Process.Start(\"TaskbarX.exe\", parameters)\r\n        End If\r\n\r\n    End Sub\r\n\r\n    Private Async Sub Button_Click_8(sender As Object, e As RoutedEventArgs)\r\n\r\n        Dim deleteFileDialog As ContentDialog = New ContentDialog With {\r\n        .Title = \"Uninstall TaskbarX?\",\r\n        .Content = \"Are you sure you want to uninstall TaskbarX?\",\r\n        .PrimaryButtonText = \"Yes\",\r\n        .CloseButtonText = \"No\"\r\n    }\r\n        Dim result As ContentDialogResult = Await deleteFileDialog.ShowAsync()\r\n\r\n        If result = ContentDialogResult.Primary Then\r\n            Try\r\n                Using ts As TaskService = New TaskService()\r\n                    ts.RootFolder.DeleteTask(\"TaskbarX\" & \" \" & System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace(\"\\\", \"\"))\r\n                    ts.RootFolder.DeleteTask(\"TaskbarX\")\r\n                End Using\r\n            Catch ex As Exception\r\n                Console.WriteLine(ex.Message)\r\n            End Try\r\n\r\n            Try\r\n                For Each prog As Process In Process.GetProcesses\r\n                    If prog.ProcessName = \"TaskbarX\" Then\r\n                        prog.Kill()\r\n                    End If\r\n                Next\r\n            Catch\r\n            End Try\r\n\r\n            System.Threading.Thread.Sleep(50)\r\n\r\n            Dim t1 As System.Threading.Thread = New System.Threading.Thread(AddressOf RevertToZero)\r\n            t1.Start()\r\n\r\n            If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n\r\n                Dim ggFileDialog As ContentDialog = New ContentDialog With {\r\n        .Title = \"Good bye.\",\r\n        .Content = \"Ready for uninstall.\" & vbNewLine & \"TaskbarX will be removed within a minute once you click Ok...\",\r\n        .PrimaryButtonText = \"Ok\"\r\n    }\r\n                Dim results As ContentDialogResult = Await ggFileDialog.ShowAsync()\r\n\r\n                Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {\r\n                    .WindowStyle = ProcessWindowStyle.Hidden,\r\n                    .FileName = \"powershell.exe\",\r\n                    .Arguments = \" Get-AppxPackage *40210ChrisAndriessen.FalconX* | Remove-AppxPackage\"\r\n                }\r\n                Process.Start(processInfo)\r\n                End\r\n            Else\r\n\r\n                Dim ffFileDialog As ContentDialog = New ContentDialog With {\r\n      .Title = \"Ready for removal.\",\r\n      .Content = \"The Taskschedule is successfully removed.\" & vbNewLine & \"You can now remove TaskbarX's files.\",\r\n      .PrimaryButtonText = \"Ok\"\r\n  }\r\n                Dim results2 As ContentDialogResult = Await ffFileDialog.ShowAsync()\r\n\r\n                Process.Start(System.AppDomain.CurrentDomain.BaseDirectory)\r\n\r\n                End\r\n            End If\r\n        Else\r\n        End If\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_9(sender As Object, e As RoutedEventArgs)\r\n        Callanim()\r\n\r\n    End Sub\r\n\r\n    Private Sub Callanim()\r\n        Dim xx As Integer = CInt(NumericUpDown4.Value)\r\n        Dim an As String = ComboBox1.Text\r\n\r\n        If an = \"linear\" Then\r\n            Dim t1 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.Linear, 500, xx))\r\n            t1.Start()\r\n        ElseIf an = \"none\" Then\r\n            'Dim t0 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.Linear, 500, 1))\r\n            ' t0.Start()\r\n        ElseIf an = \"expoeaseout\" Then\r\n            Dim t2 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ExpoEaseOut, 500, xx))\r\n            t2.Start()\r\n        ElseIf an = \"expoeasein\" Then\r\n            Dim t3 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ExpoEaseIn, 500, xx))\r\n            t3.Start()\r\n        ElseIf an = \"expoeaseinout\" Then\r\n            Dim t4 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ExpoEaseInOut, 500, xx))\r\n            t4.Start()\r\n        ElseIf an = \"expoeaseoutin\" Then\r\n            Dim t5 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ExpoEaseOutIn, 500, xx))\r\n            t5.Start()\r\n        ElseIf an = \"circeaseout\" Then\r\n            Dim t6 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CircEaseOut, 500, xx))\r\n            t6.Start()\r\n        ElseIf an = \"circeasein\" Then\r\n            Dim t7 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CircEaseIn, 500, xx))\r\n            t7.Start()\r\n        ElseIf an = \"circeaseinout\" Then\r\n            Dim t8 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CircEaseInOut, 500, xx))\r\n            t8.Start()\r\n        ElseIf an = \"circeaseoutin\" Then\r\n            Dim t9 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CircEaseOutIn, 500, xx))\r\n            t9.Start()\r\n        ElseIf an = \"quadeaseout\" Then\r\n            Dim t10 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuadEaseOut, 500, xx))\r\n            t10.Start()\r\n        ElseIf an = \"quadeasein\" Then\r\n            Dim t11 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuadEaseIn, 500, xx))\r\n            t11.Start()\r\n        ElseIf an = \"quadeaseinout\" Then\r\n            Dim t12 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuadEaseInOut, 500, xx))\r\n            t12.Start()\r\n        ElseIf an = \"quadeaseoutin\" Then\r\n            Dim t13 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuadEaseOutIn, 500, xx))\r\n            t13.Start()\r\n        ElseIf an = \"sineeaseout\" Then\r\n            Dim t14 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.SineEaseOut, 500, xx))\r\n            t14.Start()\r\n        ElseIf an = \"sineeasein\" Then\r\n            Dim t15 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.SineEaseIn, 500, xx))\r\n            t15.Start()\r\n        ElseIf an = \"sineeaseinout\" Then\r\n            Dim t16 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.SineEaseInOut, 500, xx))\r\n            t16.Start()\r\n        ElseIf an = \"sineeaseoutin\" Then\r\n            Dim t17 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.SineEaseOutIn, 500, xx))\r\n            t17.Start()\r\n        ElseIf an = \"cubiceaseout\" Then\r\n            Dim t18 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CubicEaseOut, 500, xx))\r\n            t18.Start()\r\n        ElseIf an = \"cubiceasein\" Then\r\n            Dim t19 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CubicEaseIn, 500, xx))\r\n            t19.Start()\r\n        ElseIf an = \"cubiceaseinout\" Then\r\n            Dim t20 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CubicEaseInOut, 500, xx))\r\n            t20.Start()\r\n        ElseIf an = \"cubiceaseoutin\" Then\r\n            Dim t21 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.CubicEaseOutIn, 500, xx))\r\n            t21.Start()\r\n        ElseIf an = \"quarteaseout\" Then\r\n            Dim t22 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuartEaseOut, 500, xx))\r\n            t22.Start()\r\n        ElseIf an = \"quarteasein\" Then\r\n            Dim t23 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuartEaseIn, 500, xx))\r\n            t23.Start()\r\n        ElseIf an = \"quarteaseinout\" Then\r\n            Dim t24 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuartEaseInOut, 500, xx))\r\n            t24.Start()\r\n        ElseIf an = \"quarteaseoutin\" Then\r\n            Dim t25 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuartEaseOutIn, 500, xx))\r\n            t25.Start()\r\n        ElseIf an = \"quinteaseout\" Then\r\n            Dim t26 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuintEaseOut, 500, xx))\r\n            t26.Start()\r\n        ElseIf an = \"quinteasein\" Then\r\n            Dim t27 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuintEaseIn, 500, xx))\r\n            t27.Start()\r\n        ElseIf an = \"quinteaseinout\" Then\r\n            Dim t28 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuintEaseInOut, 500, xx))\r\n            t28.Start()\r\n        ElseIf an = \"quinteaseoutin\" Then\r\n            Dim t29 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.QuintEaseOutIn, 500, xx))\r\n            t29.Start()\r\n        ElseIf an = \"elasticeaseout\" Then\r\n            Dim t30 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ElasticEaseOut, 500, xx))\r\n            t30.Start()\r\n        ElseIf an = \"elasticeasein\" Then\r\n            Dim t31 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ElasticEaseIn, 500, xx))\r\n            t31.Start()\r\n        ElseIf an = \"elasticeaseinout\" Then\r\n            Dim t32 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ElasticEaseInOut, 500, xx))\r\n            t32.Start()\r\n        ElseIf an = \"elasticeaseoutin\" Then\r\n            Dim t33 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.ElasticEaseOutIn, 500, xx))\r\n            t33.Start()\r\n        ElseIf an = \"bounceeaseout\" Then\r\n            Dim t34 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BounceEaseOut, 500, xx))\r\n            t34.Start()\r\n        ElseIf an = \"bounceeasein\" Then\r\n            Dim t35 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BounceEaseIn, 500, xx))\r\n            t35.Start()\r\n        ElseIf an = \"bounceeaseinout\" Then\r\n            Dim t36 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BounceEaseInOut, 500, xx))\r\n            t36.Start()\r\n        ElseIf an = \"bounceeaseoutin\" Then\r\n            Dim t37 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BounceEaseOutIn, 500, xx))\r\n            t37.Start()\r\n        ElseIf an = \"backeaseout\" Then\r\n            Dim t38 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BackEaseOut, 500, xx))\r\n            t38.Start()\r\n        ElseIf an = \"backeasein\" Then\r\n            Dim t39 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BackEaseIn, 500, xx))\r\n            t39.Start()\r\n        ElseIf an = \"backeaseinout\" Then\r\n            Dim t40 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BackEaseInOut, 500, xx))\r\n            t40.Start()\r\n        ElseIf an = \"backeaseoutin\" Then\r\n            Dim t41 As Thread = New Thread(Sub() Animate(CType(0, IntPtr), 0, \"\", AddressOf Easings.BackEaseOutIn, 500, xx))\r\n            t41.Start()\r\n        End If\r\n    End Sub\r\n\r\n    Private Sub Animate(ByVal hwnd As IntPtr, ByVal oldpos As Integer, ByVal orient As String, ByVal easing As EasingDelegate, ByVal valueToReach As Integer, ByVal duration As Integer)\r\n\r\n        Try\r\n\r\n            Dim sw As New Stopwatch\r\n            Dim originalValue As Integer = oldpos\r\n            Dim elapsed As New Integer\r\n            Dim minValue As Integer = Math.Min(originalValue, valueToReach)\r\n            Dim maxValue As Integer = Math.Abs(valueToReach - originalValue)\r\n            Dim increasing As Boolean = originalValue < valueToReach\r\n\r\n            elapsed = 0\r\n            sw.Start()\r\n\r\n            While Not elapsed >= duration\r\n                elapsed = CInt(sw.ElapsedMilliseconds)\r\n\r\n                Dim newValue As Integer = CInt(Math.Truncate(easing(elapsed, minValue, maxValue, duration)))\r\n\r\n                If Not increasing Then\r\n                    newValue = (originalValue + valueToReach) - newValue\r\n                End If\r\n\r\n                Me.Dispatcher.Invoke(Sub()\r\n                                         Slider1.Value = newValue\r\n                                     End Sub)\r\n\r\n                Console.WriteLine(newValue)\r\n\r\n            End While\r\n\r\n            sw.Stop()\r\n\r\n            Me.Dispatcher.Invoke(Sub()\r\n                                     Slider1.Value = 0\r\n                                 End Sub)\r\n        Catch ex As Exception\r\n            Console.WriteLine(ex.Message)\r\n        End Try\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_10(sender As Object, e As RoutedEventArgs)\r\n        If Not ComboBox1.SelectedIndex = ComboBox1.Items.Count Then\r\n            ComboBox1.SelectedIndex = ComboBox1.SelectedIndex + 1\r\n        End If\r\n    End Sub\r\n\r\n    Private Sub Button_Click_11(sender As Object, e As RoutedEventArgs)\r\n        If Not ComboBox1.SelectedIndex = 0 Then\r\n            ComboBox1.SelectedIndex = ComboBox1.SelectedIndex - 1\r\n        End If\r\n    End Sub\r\n\r\n    Private Sub Alpha_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double))\r\n        Dim val As Integer = CInt(sAlpha.Value)\r\n        tAlpha.Text = CType(val, String) & \"%\"\r\n\r\n        colorprev.Fill = New SolidColorBrush(System.Windows.Media.Color.FromRgb(CByte(sRed.Value), CByte(sGreen.Value), CByte(sBlue.Value)))\r\n\r\n        colorprev.Opacity = sAlpha.Value / 100\r\n\r\n\r\n\r\n        calchexcolor2()\r\n    End Sub\r\n\r\n    Private Sub Blue_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double))\r\n        Dim val As Integer = CInt(sBlue.Value)\r\n        tBlue.Text = CType(val, String)\r\n\r\n        colorprev.Fill = New SolidColorBrush(System.Windows.Media.Color.FromRgb(CByte(sRed.Value), CByte(sGreen.Value), CByte(sBlue.Value)))\r\n\r\n        colorprev.Opacity = sAlpha.Value / 100\r\n\r\n        calchexcolor2()\r\n    End Sub\r\n\r\n    Private Sub Green_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double))\r\n        Dim val As Integer = CInt(sGreen.Value)\r\n        tGreen.Text = CType(val, String)\r\n\r\n        colorprev.Fill = New SolidColorBrush(System.Windows.Media.Color.FromRgb(CByte(sRed.Value), CByte(sGreen.Value), CByte(sBlue.Value)))\r\n\r\n        colorprev.Opacity = sAlpha.Value / 100\r\n\r\n        calchexcolor2()\r\n    End Sub\r\n\r\n    Private Sub Red_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double))\r\n        Dim val As Integer = CInt(sRed.Value)\r\n        tRed.Text = CType(val, String)\r\n\r\n        colorprev.Fill = New SolidColorBrush(System.Windows.Media.Color.FromRgb(CByte(sRed.Value), CByte(sGreen.Value), CByte(sBlue.Value)))\r\n\r\n        colorprev.Opacity = sAlpha.Value / 100\r\n\r\n        calchexcolor2()\r\n    End Sub\r\n\r\n\r\n    Sub calchexcolor2()\r\n        Try\r\n            Dim myColor As Color = Color.FromArgb(CInt(sRed.Value), CInt(sGreen.Value), CInt(sBlue.Value))\r\n            Dim hex As String = myColor.R.ToString(\"X2\") + myColor.G.ToString(\"X2\") + myColor.B.ToString(\"X2\")\r\n\r\n            hexcolorbox.Text = \"#\" & hex\r\n        Catch\r\n        End Try\r\n\r\n\r\n    End Sub\r\n    Sub calchexcolor()\r\n        Try\r\n            Dim color As Color = ColorTranslator.FromHtml(hexcolorbox.Text)\r\n            Dim r As Integer = Convert.ToInt16(color.R)\r\n            Dim g As Integer = Convert.ToInt16(color.G)\r\n            Dim b As Integer = Convert.ToInt16(color.B)\r\n\r\n            sRed.Value = r\r\n            sGreen.Value = g\r\n            sBlue.Value = b\r\n        Catch\r\n        End Try\r\n\r\n\r\n    End Sub\r\n\r\n    Private Sub Button_Click_12(sender As Object, e As RoutedEventArgs)\r\n\r\n        Dim t1 As Thread = New Thread(AddressOf Colorthread)\r\n        t1.Start()\r\n\r\n    End Sub\r\n\r\n    Sub Colorthread()\r\n        Dim lpPoint As PointAPI\r\n        Dim x = GetAsyncKeyState(1) = 0\r\n\r\n        Do\r\n            System.Threading.Thread.Sleep(1)\r\n            GetCursorPos(lpPoint)\r\n\r\n            Console.WriteLine(GetColorAt(lpPoint.x, lpPoint.y))\r\n\r\n            Dim colorp As Color = GetColorAt(lpPoint.x, lpPoint.y)\r\n\r\n            Me.Dispatcher.Invoke(Sub()\r\n                                     ' sAlpha.Value = colorp.A\r\n                                     sRed.Value = colorp.R\r\n                                     sGreen.Value = colorp.G\r\n                                     sBlue.Value = colorp.B\r\n                                 End Sub)\r\n\r\n        Loop Until Not GetAsyncKeyState(1) = 0\r\n    End Sub\r\n\r\n    Private Sub Button_Click_13(sender As Object, e As RoutedEventArgs)\r\n\r\n        Dim parameters As String = \"\"\r\n\r\n        If RadioButton1.IsChecked = True Then\r\n            parameters &= \"-tbs=0 \"\r\n        End If\r\n        If RadioButton2.IsChecked = True Then\r\n            parameters &= \"-tbs=1 \"\r\n        End If\r\n        If RadioButton3.IsChecked = True Then\r\n            parameters &= \"-tbs=2 \"\r\n        End If\r\n        If RadioButton4.IsChecked = True Then\r\n            parameters &= \"-tbs=3 \"\r\n        End If\r\n        If RadioButtontc.IsChecked = True Then\r\n            parameters &= \"-tbs=4 \"\r\n        End If\r\n        If RadioButtonoq.IsChecked = True Then\r\n            parameters &= \"-tbs=5 \"\r\n        End If\r\n\r\n        parameters &= \"-color=\" & tRed.Text.ToString & \";\" & tGreen.Text.ToString & \";\" & tBlue.Text.ToString & \";\" & tAlpha.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tpop=\" & tpopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        parameters &= \"-tsop=\" & tsopla.Text.ToString.Replace(\"%\", \"\") & \" \"\r\n\r\n        If Not ComboBox1.SelectedItem Is Nothing Then\r\n            parameters &= \"-as=\" & ComboBox1.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not tbrounding.Text = Nothing Then\r\n            parameters &= \"-tbr=\" & tbrounding.Text & \" \"\r\n        End If\r\n\r\n        If tbsegments.IsChecked = True Then\r\n            parameters &= \"-tbsg=1 \"\r\n        End If\r\n\r\n        If Not ComboBox2.SelectedItem Is Nothing Then\r\n            parameters &= \"-obas=\" & ComboBox2.SelectedItem.ToString.ToLower & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown4.Text = Nothing Then\r\n            parameters &= \"-asp=\" & NumericUpDown4.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown1.Text = Nothing Then\r\n            parameters &= \"-ptbo=\" & NumericUpDown1.Text & \" \"\r\n        End If\r\n        If Not NumericUpDown2.Text = Nothing Then\r\n            parameters &= \"-stbo=\" & NumericUpDown2.Text & \" \"\r\n        End If\r\n\r\n        If CheckBox1.IsChecked = True Then\r\n            parameters &= \"-cib=1 \"\r\n        End If\r\n\r\n        If Not NumericUpDown3.Text = Nothing Then\r\n            parameters &= \"-lr=\" & NumericUpDown3.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown5.Text = Nothing Then\r\n            parameters &= \"-oblr=\" & NumericUpDown5.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7.Text = Nothing Then\r\n            parameters &= \"-sr=\" & NumericUpDown7.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy.Text = Nothing Then\r\n            parameters &= \"-sr2=\" & NumericUpDown7_Copy.Text & \" \"\r\n        End If\r\n\r\n        If Not NumericUpDown7_Copy1.Text = Nothing Then\r\n            parameters &= \"-sr3=\" & NumericUpDown7_Copy1.Text & \" \"\r\n        End If\r\n\r\n\r\n        If CheckBox2.IsChecked = True Then\r\n            parameters &= \"-cpo=1 \"\r\n        End If\r\n\r\n        If CheckBox3.IsChecked = True Then\r\n            parameters &= \"-cso=1 \"\r\n        End If\r\n\r\n        If CheckBox4.IsChecked = True Then\r\n            parameters &= \"-ftotc=1 \"\r\n        End If\r\n\r\n        If CheckBox4_Copy.IsChecked = True Then\r\n            parameters &= \"-rzbt=1 \"\r\n        End If\r\n\r\n        If CheckBox4_Copy.IsChecked = False Then\r\n            parameters &= \"-rzbt=0 \"\r\n        End If\r\n\r\n        If Checkbox10.IsChecked = True Then\r\n            parameters &= \"-dtbsowm=1 \"\r\n        End If\r\n        If Checkbox9.IsChecked = True Then\r\n            parameters &= \"-cfsa=1 \"\r\n        End If\r\n        If CheckBox11.IsChecked = True Then\r\n            parameters &= \"-dct=1 \"\r\n        End If\r\n        If Checkbox12.IsChecked = True Then\r\n            parameters &= \"-hps=1 \"\r\n        End If\r\n        If Checkbox13.IsChecked = True Then\r\n            parameters &= \"-hss=1 \"\r\n        End If\r\n        If Checkbox14.IsChecked = True Then\r\n            parameters &= \"-hpt=1 \"\r\n        End If\r\n        If Checkbox15.IsChecked = True Then\r\n            parameters &= \"-hst=1 \"\r\n        End If\r\n        If Checkbox16.IsChecked = True Then\r\n            parameters &= \"-sti=1 \"\r\n        End If\r\n        If checkboxconsole.IsChecked = True Then\r\n            parameters &= \"-console \"\r\n        End If\r\n\r\n        If System.AppDomain.CurrentDomain.BaseDirectory.Contains(\"40210ChrisAndriessen\") Then\r\n            '' TextboxLink.Text = \"cmd.exe /c start shell:AppsFolder\\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarX \" & parameters\r\n            TextboxLink.Text = \"explorer.exe taskbarx:\" & Chr(34) & parameters & Chr(34)\r\n        Else\r\n            TextboxLink.Text = Chr(34) & System.AppDomain.CurrentDomain.BaseDirectory & \"TaskbarX.exe\" & Chr(34) & \" \" & parameters\r\n        End If\r\n\r\n    End Sub\r\n\r\n    Private Sub hexcolorbox_TextChanged(sender As Object, e As TextChangedEventArgs) Handles hexcolorbox.TextChanged\r\n        hexcolorbox.MaxLength = 7\r\n        calchexcolor()\r\n    End Sub\r\n\r\n    Private Sub tpop_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double)) Handles tpop.ValueChanged\r\n        Dim val As Integer = CInt(tpop.Value)\r\n        tpopla.Text = CType(val, String) & \"%\"\r\n    End Sub\r\n\r\n    Private Sub tsop_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of Double)) Handles tsop.ValueChanged\r\n        Dim val As Integer = CInt(tsop.Value)\r\n        tsopla.Text = CType(val, String) & \"%\"\r\n    End Sub\r\n\r\n    Private Sub Button_Click_14(sender As Object, e As RoutedEventArgs)\r\n        Process.Start(\"https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility-and-ui-automation-compared\")\r\n    End Sub\r\nEnd Class"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/AssemblyInfo.vb",
    "content": "﻿Imports System\r\nImports System.Reflection\r\nImports System.Runtime.InteropServices\r\nImports System.Globalization\r\nImports System.Resources\r\nImports System.Windows\r\n\r\n' General Information about an assembly is controlled through the following\r\n' set of attributes. Change these attribute values to modify the information\r\n' associated with an assembly.\r\n\r\n' Review the values of the assembly attributes\r\n\r\n<Assembly: AssemblyTitle(\"TaskbarX Configurator\")>\r\n<Assembly: AssemblyDescription(\"Configurator for TaskbarX\")>\r\n<Assembly: AssemblyCompany(\"Chris Andriessen\")>\r\n<Assembly: AssemblyProduct(\"TaskbarX Configurator\")>\r\n<Assembly: AssemblyCopyright(\"Copyright © Chris Andriessen 2021\")>\r\n<Assembly: AssemblyTrademark(\"\")>\r\n<Assembly: ComVisible(false)>\r\n\r\n'In order to begin building localizable applications, set\r\n'<UICulture>CultureYouAreCodingWith</UICulture> in your .vbproj file\r\n'inside a <PropertyGroup>.  For example, if you are using US english\r\n'in your source files, set the <UICulture> to \"en-US\".  Then uncomment the\r\n'NeutralResourceLanguage attribute below.  Update the \"en-US\" in the line\r\n'below to match the UICulture setting in the project file.\r\n\r\n'<Assembly: NeutralResourcesLanguage(\"en-US\", UltimateResourceFallbackLocation.Satellite)>\r\n\r\n\r\n'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.\r\n'1st parameter: where theme specific resource dictionaries are located\r\n'(used if a resource is not found in the page,\r\n' or application resource dictionaries)\r\n\r\n'2nd parameter: where the generic resource dictionary is located\r\n'(used if a resource is not found in the page,\r\n'app, and any theme specific resource dictionaries)\r\n<Assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)>\r\n\r\n\r\n\r\n'The following GUID is for the ID of the typelib if this project is exposed to COM\r\n<Assembly: Guid(\"1d3ba368-75e1-42b7-910d-e581ebd0da78\")>\r\n\r\n' Version information for an assembly consists of the following four values:\r\n'\r\n'      Major Version\r\n'      Minor Version\r\n'      Build Number\r\n'      Revision\r\n'\r\n' You can specify all the values or you can default the Build and Revision Numbers\r\n' by using the '*' as shown below:\r\n' <Assembly: AssemblyVersion(\"1.0.*\")>\r\n\r\n<Assembly: AssemblyVersion(\"1.7.7.0\")>\r\n<Assembly: AssemblyFileVersion(\"1.7.8.0\")>\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/Resources.Designer.vb",
    "content": "﻿'------------------------------------------------------------------------------\r\n' <auto-generated>\r\n'     This code was generated by a tool.\r\n'     Runtime Version:4.0.30319.42000\r\n'\r\n'     Changes to this file may cause incorrect behavior and will be lost if\r\n'     the code is regenerated.\r\n' </auto-generated>\r\n'------------------------------------------------------------------------------\r\n\r\nOption Strict On\r\nOption Explicit On\r\n\r\nImports System\r\n\r\nNamespace My.Resources\r\n    \r\n    'This class was auto-generated by the StronglyTypedResourceBuilder\r\n    'class via a tool like ResGen or Visual Studio.\r\n    'To add or remove a member, edit your .ResX file then rerun ResGen\r\n    'with the /str option, or rebuild your VS project.\r\n    '''<summary>\r\n    '''  A strongly-typed resource class, for looking up localized strings, etc.\r\n    '''</summary>\r\n    <Global.System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"17.0.0.0\"),  _\r\n     Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _\r\n     Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(),  _\r\n     Global.Microsoft.VisualBasic.HideModuleNameAttribute()>  _\r\n    Public Module Resources\r\n        \r\n        Private resourceMan As Global.System.Resources.ResourceManager\r\n        \r\n        Private resourceCulture As Global.System.Globalization.CultureInfo\r\n        \r\n        '''<summary>\r\n        '''  Returns the cached ResourceManager instance used by this class.\r\n        '''</summary>\r\n        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\n        Public ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager\r\n            Get\r\n                If Object.ReferenceEquals(resourceMan, Nothing) Then\r\n                    Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager(\"TaskbarXConfiguratorWPF.Resources\", GetType(Resources).Assembly)\r\n                    resourceMan = temp\r\n                End If\r\n                Return resourceMan\r\n            End Get\r\n        End Property\r\n        \r\n        '''<summary>\r\n        '''  Overrides the current thread's CurrentUICulture property for all\r\n        '''  resource lookups using this strongly typed resource class.\r\n        '''</summary>\r\n        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\n        Public Property Culture() As Global.System.Globalization.CultureInfo\r\n            Get\r\n                Return resourceCulture\r\n            End Get\r\n            Set\r\n                resourceCulture = value\r\n            End Set\r\n        End Property\r\n        \r\n        '''<summary>\r\n        '''  Looks up a localized resource of type System.Drawing.Bitmap.\r\n        '''</summary>\r\n        Public ReadOnly Property grid() As System.Drawing.Bitmap\r\n            Get\r\n                Dim obj As Object = ResourceManager.GetObject(\"grid\", resourceCulture)\r\n                Return CType(obj,System.Drawing.Bitmap)\r\n            End Get\r\n        End Property\r\n    End Module\r\nEnd Namespace\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    The primary goals of this format is to allow a simple XML format \r\n    that is mostly human readable. The generation and parsing of the \r\n    various data types are done through the TypeConverter classes \r\n    associated with the data types.\r\n    \r\n    Example:\r\n    \r\n    ... ado.net/XML headers & schema ...\r\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\r\n    <resheader name=\"version\">2.0</resheader>\r\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\r\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\r\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\r\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\r\n    </data>\r\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\r\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r\n        <comment>This is a comment</comment>\r\n    </data>\r\n                \r\n    There are any number of \"resheader\" rows that contain simple \r\n    name/value pairs.\r\n    \r\n    Each data row contains a name, and value. The row also contains a \r\n    type or mimetype. Type corresponds to a .NET class that support \r\n    text/value conversion through the TypeConverter architecture. \r\n    Classes that don't support this are serialized and stored with the \r\n    mimetype set.\r\n    \r\n    The mimetype is used for serialized objects, and tells the \r\n    ResXResourceReader how to depersist the object. This is currently not \r\n    extensible. For a given mimetype the value must be set accordingly:\r\n    \r\n    Note - application/x-microsoft.net.object.binary.base64 is the format \r\n    that the ResXResourceWriter will generate, however the reader can \r\n    read any of the formats listed below.\r\n    \r\n    mimetype: application/x-microsoft.net.object.binary.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r\n            : and then encoded with base64 encoding.\r\n    \r\n    mimetype: application/x-microsoft.net.object.soap.base64\r\n    value   : The object must be serialized with \r\n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r\n            : and then encoded with base64 encoding.\r\n\r\n    mimetype: application/x-microsoft.net.object.bytearray.base64\r\n    value   : The object must be serialized into a byte array \r\n            : using a System.ComponentModel.TypeConverter\r\n            : and then encoded with base64 encoding.\r\n    -->\r\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\r\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\r\n      <xsd:complexType>\r\n        <xsd:choice maxOccurs=\"unbounded\">\r\n          <xsd:element name=\"metadata\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"assembly\">\r\n            <xsd:complexType>\r\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"data\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\r\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\r\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\r\n              <xsd:attribute ref=\"xml:space\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n          <xsd:element name=\"resheader\">\r\n            <xsd:complexType>\r\n              <xsd:sequence>\r\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\r\n              </xsd:sequence>\r\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\r\n            </xsd:complexType>\r\n          </xsd:element>\r\n        </xsd:choice>\r\n      </xsd:complexType>\r\n    </xsd:element>\r\n  </xsd:schema>\r\n  <resheader name=\"resmimetype\">\r\n    <value>text/microsoft-resx</value>\r\n  </resheader>\r\n  <resheader name=\"version\">\r\n    <value>2.0</value>\r\n  </resheader>\r\n  <resheader name=\"reader\">\r\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <resheader name=\"writer\">\r\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r\n  </resheader>\r\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\r\n  <data name=\"grid\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\r\n    <value>..\\Resources\\grid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r\n  </data>\r\n</root>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/Settings.Designer.vb",
    "content": "﻿'------------------------------------------------------------------------------\r\n' <auto-generated>\r\n'     This code was generated by a tool.\r\n'     Runtime Version:4.0.30319.42000\r\n'\r\n'     Changes to this file may cause incorrect behavior and will be lost if\r\n'     the code is regenerated.\r\n' </auto-generated>\r\n'------------------------------------------------------------------------------\r\n\r\nOption Strict On\r\nOption Explicit On\r\n\r\n\r\n\r\n<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(),  _\r\n Global.System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"17.0.1.0\"),  _\r\n Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)>  _\r\nPartial Friend NotInheritable Class MySettings\r\n    Inherits Global.System.Configuration.ApplicationSettingsBase\r\n    \r\n    Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)\r\n    \r\n#Region \"My.Settings Auto-Save Functionality\"\r\n#If _MyType = \"WindowsForms\" Then\r\n    Private Shared addedHandler As Boolean\r\n\r\n    Private Shared addedHandlerLockObject As New Object\r\n\r\n    <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _\r\n    Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)\r\n        If My.Application.SaveMySettingsOnExit Then\r\n            My.Settings.Save()\r\n        End If\r\n    End Sub\r\n#End If\r\n#End Region\r\n    \r\n    Public Shared ReadOnly Property [Default]() As MySettings\r\n        Get\r\n            \r\n#If _MyType = \"WindowsForms\" Then\r\n               If Not addedHandler Then\r\n                    SyncLock addedHandlerLockObject\r\n                        If Not addedHandler Then\r\n                            AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings\r\n                            addedHandler = True\r\n                        End If\r\n                    End SyncLock\r\n                End If\r\n#End If\r\n            Return defaultInstance\r\n        End Get\r\n    End Property\r\nEnd Class\r\n\r\nNamespace My\r\n    \r\n    <Global.Microsoft.VisualBasic.HideModuleNameAttribute(),  _\r\n     Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _\r\n     Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()>  _\r\n    Friend Module MySettingsProperty\r\n        \r\n        <Global.System.ComponentModel.Design.HelpKeywordAttribute(\"My.Settings\")>  _\r\n        Friend ReadOnly Property Settings() As Global.TaskbarXConfiguratorWPF.MySettings\r\n            Get\r\n                Return Global.TaskbarXConfiguratorWPF.MySettings.Default\r\n            End Get\r\n        End Property\r\n    End Module\r\nEnd Namespace\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\r\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\" UseMySettingsClassName=\"true\">\r\n  <Profiles>\r\n    <Profile Name=\"(Default)\" />\r\n  </Profiles>\r\n  <Settings />\r\n</SettingsFile>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/My Project/app.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\r\n  <assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\"/>\r\n  <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\r\n    <security>\r\n      <requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\r\n        <!-- UAC Manifest Options\r\n             If you want to change the Windows User Account Control level replace the \r\n             requestedExecutionLevel node with one of the following.\r\n\r\n        <requestedExecutionLevel  level=\"asInvoker\" uiAccess=\"false\" />\r\n        <requestedExecutionLevel  level=\"requireAdministrator\" uiAccess=\"false\" />\r\n        <requestedExecutionLevel  level=\"highestAvailable\" uiAccess=\"false\" />\r\n\r\n            Specifying requestedExecutionLevel element will disable file and registry virtualization. \r\n            Remove this element if your application requires this virtualization for backwards\r\n            compatibility.\r\n        -->\r\n        <requestedExecutionLevel level=\"asInvoker\" uiAccess=\"false\" />\r\n      </requestedPrivileges>\r\n    </security>\r\n  </trustInfo>\r\n\r\n  <compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\r\n    <application>\r\n      <!-- A list of the Windows versions that this application has been tested on\r\n           and is designed to work with. Uncomment the appropriate elements\r\n           and Windows will automatically select the most compatible environment. -->\r\n\r\n      <!-- Windows Vista -->\r\n      <!--<supportedOS Id=\"{e2011457-1546-43c5-a5fe-008deee3d3f0}\" />-->\r\n\r\n      <!-- Windows 7 -->\r\n      <!--<supportedOS Id=\"{35138b9a-5d96-4fbd-8e2d-a2440225f93a}\" />-->\r\n\r\n      <!-- Windows 8 -->\r\n      <!--<supportedOS Id=\"{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}\" />-->\r\n\r\n      <!-- Windows 8.1 -->\r\n      <!--<supportedOS Id=\"{1f676c76-80e1-4239-95bb-83d0f6d0da78}\" />-->\r\n\r\n      <!-- Windows 10 -->\r\n      <!--<supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />-->\r\n\r\n    </application>\r\n  </compatibility>\r\n\r\n  <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher\r\n       DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need \r\n       to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should \r\n       also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->\r\n  <!--\r\n  <application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\r\n    <windowsSettings>\r\n      <dpiAware xmlns=\"http://schemas.microsoft.com/SMI/2005/WindowsSettings\">true</dpiAware>\r\n    </windowsSettings>\r\n  </application>\r\n  -->\r\n\r\n  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->\r\n  <!--\r\n  <dependency>\r\n    <dependentAssembly>\r\n      <assemblyIdentity\r\n          type=\"win32\"\r\n          name=\"Microsoft.Windows.Common-Controls\"\r\n          version=\"6.0.0.0\"\r\n          processorArchitecture=\"*\"\r\n          publicKeyToken=\"6595b64144ccf1df\"\r\n          language=\"*\"\r\n        />\r\n    </dependentAssembly>\r\n  </dependency>\r\n  -->\r\n\r\n</assembly>\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/TaskbarX Configurator.exe.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n    <startup> \r\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.7.2\"/>\r\n    </startup>\r\n</configuration>\r\n"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/TaskbarX Configurator.vbproj",
    "content": "﻿<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\r\n  <PropertyGroup>\r\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\r\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\r\n    <ProjectGuid>{EB569675-BF03-4E0B-B19B-3551013DB88D}</ProjectGuid>\r\n    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>\r\n    <OutputType>WinExe</OutputType>\r\n    <RootNamespace>TaskbarXConfiguratorWPF</RootNamespace>\r\n    <AssemblyName>TaskbarX Configurator</AssemblyName>\r\n    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>\r\n    <MyType>Custom</MyType>\r\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\r\n    <Deterministic>true</Deterministic>\r\n    <NuGetPackageImportStamp>\r\n    </NuGetPackageImportStamp>\r\n    <TargetFrameworkProfile />\r\n    <IsWebBootstrapper>false</IsWebBootstrapper>\r\n    <PublishUrl>D:\\Visual Studio Projects\\!TaskbarX\\Publish\\</PublishUrl>\r\n    <Install>true</Install>\r\n    <InstallFrom>Disk</InstallFrom>\r\n    <UpdateEnabled>false</UpdateEnabled>\r\n    <UpdateMode>Foreground</UpdateMode>\r\n    <UpdateInterval>7</UpdateInterval>\r\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\r\n    <UpdatePeriodically>false</UpdatePeriodically>\r\n    <UpdateRequired>false</UpdateRequired>\r\n    <MapFileExtensions>true</MapFileExtensions>\r\n    <AutorunEnabled>true</AutorunEnabled>\r\n    <ApplicationRevision>2</ApplicationRevision>\r\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\r\n    <UseApplicationTrust>false</UseApplicationTrust>\r\n    <PublishWizardCompleted>true</PublishWizardCompleted>\r\n    <BootstrapperEnabled>true</BootstrapperEnabled>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DebugType>full</DebugType>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <IncrementalBuild>true</IncrementalBuild>\r\n    <OutputPath>bin\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <NoWarn>42314</NoWarn>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\r\n    <PlatformTarget>AnyCPU</PlatformTarget>\r\n    <DebugType>pdbonly</DebugType>\r\n    <DebugSymbols>false</DebugSymbols>\r\n    <DefineDebug>false</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <IncrementalBuild>false</IncrementalBuild>\r\n    <Optimize>true</Optimize>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <NoWarn>42314</NoWarn>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionExplicit>On</OptionExplicit>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionCompare>Binary</OptionCompare>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionStrict>On</OptionStrict>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <OptionInfer>On</OptionInfer>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ApplicationIcon>StoreLogo2-71.ico</ApplicationIcon>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ApplicationManifest>My Project\\app.manifest</ApplicationManifest>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <NoWarn>42314</NoWarn>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX64\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <Optimize>true</Optimize>\r\n    <NoWarn>42314</NoWarn>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x64</PlatformTarget>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <Prefer32Bit>false</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\r\n    <DebugSymbols>true</DebugSymbols>\r\n    <DefineDebug>true</DefineDebug>\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <NoWarn>42314</NoWarn>\r\n    <DebugType>full</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n  </PropertyGroup>\r\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\r\n    <DefineTrace>true</DefineTrace>\r\n    <OutputPath>..\\..\\APPX\\TaskbarX32\\Release\\</OutputPath>\r\n    <DocumentationFile>TaskbarX Configurator.xml</DocumentationFile>\r\n    <Optimize>true</Optimize>\r\n    <NoWarn>42314</NoWarn>\r\n    <DebugType>pdbonly</DebugType>\r\n    <PlatformTarget>x86</PlatformTarget>\r\n    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r\n    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>\r\n    <Prefer32Bit>true</Prefer32Bit>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ManifestCertificateThumbprint>264F8D322D8DA53FB5812F8E791F057AF6D206CC</ManifestCertificateThumbprint>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <ManifestKeyFile>TaskbarX Configurator_TemporaryKey.pfx</ManifestKeyFile>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <GenerateManifests>true</GenerateManifests>\r\n  </PropertyGroup>\r\n  <PropertyGroup>\r\n    <SignManifests>false</SignManifests>\r\n  </PropertyGroup>\r\n  <ItemGroup>\r\n    <Reference Include=\"Microsoft.CSharp\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"netstandard\" />\r\n    <Reference Include=\"System.Core\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Drawing\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.IO.Compression\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Windows.Forms\" />\r\n    <Reference Include=\"System.Xml.Linq\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Data.DataSetExtensions\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Data\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Xml\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Xaml\">\r\n      <RequiredTargetFramework>4.0</RequiredTargetFramework>\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"WindowsBase\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"PresentationCore\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"PresentationFramework\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n    <Reference Include=\"System.Net.Http\">\r\n      <Private>False</Private>\r\n    </Reference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <ApplicationDefinition Include=\"Application.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n    </ApplicationDefinition>\r\n    <Page Include=\"MainWindow.xaml\">\r\n      <Generator>MSBuild:Compile</Generator>\r\n      <SubType>Designer</SubType>\r\n    </Page>\r\n    <Compile Include=\"Application.xaml.vb\">\r\n      <DependentUpon>Application.xaml</DependentUpon>\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n    <Compile Include=\"Easings.vb\" />\r\n    <Compile Include=\"MainWindow.xaml.vb\">\r\n      <DependentUpon>MainWindow.xaml</DependentUpon>\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Import Include=\"System.Threading.Tasks\" />\r\n    <Import Include=\"System.Linq\" />\r\n    <Import Include=\"System.Xml.Linq\" />\r\n    <Import Include=\"Microsoft.VisualBasic\" />\r\n    <Import Include=\"System\" />\r\n    <Import Include=\"System.Collections\" />\r\n    <Import Include=\"System.Collections.Generic\" />\r\n    <Import Include=\"System.Diagnostics\" />\r\n    <Import Include=\"System.Windows\" />\r\n    <Import Include=\"System.Windows.Controls\" />\r\n    <Import Include=\"System.Windows.Data\" />\r\n    <Import Include=\"System.Windows.Documents\" />\r\n    <Import Include=\"System.Windows.Input\" />\r\n    <Import Include=\"System.Windows.Shapes\" />\r\n    <Import Include=\"System.Windows.Media\" />\r\n    <Import Include=\"System.Windows.Media.Imaging\" />\r\n    <Import Include=\"System.Windows.Navigation\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Compile Include=\"My Project\\AssemblyInfo.vb\">\r\n      <SubType>Code</SubType>\r\n    </Compile>\r\n    <Compile Include=\"My Project\\MyExtensions\\MyWpfExtension.vb\">\r\n      <VBMyExtensionTemplateID>Microsoft.VisualBasic.WPF.MyExtension</VBMyExtensionTemplateID>\r\n      <VBMyExtensionTemplateVersion>1.0.0.0</VBMyExtensionTemplateVersion>\r\n    </Compile>\r\n    <Compile Include=\"My Project\\Resources.Designer.vb\">\r\n      <AutoGen>True</AutoGen>\r\n      <DesignTime>True</DesignTime>\r\n      <DependentUpon>Resources.resx</DependentUpon>\r\n    </Compile>\r\n    <Compile Include=\"My Project\\Settings.Designer.vb\">\r\n      <AutoGen>True</AutoGen>\r\n      <DependentUpon>Settings.settings</DependentUpon>\r\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\r\n    </Compile>\r\n    <EmbeddedResource Include=\"My Project\\Resources.resx\">\r\n      <Generator>PublicVbMyResourcesResXFileCodeGenerator</Generator>\r\n      <LastGenOutput>Resources.Designer.vb</LastGenOutput>\r\n      <CustomToolNamespace>My.Resources</CustomToolNamespace>\r\n      <SubType>Designer</SubType>\r\n    </EmbeddedResource>\r\n    <None Include=\"My Project\\app.manifest\" />\r\n    <None Include=\"My Project\\Settings.settings\">\r\n      <Generator>SettingsSingleFileGenerator</Generator>\r\n      <LastGenOutput>Settings.Designer.vb</LastGenOutput>\r\n    </None>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"App.config\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Resource Include=\"StoreLogo2-71.ico\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <None Include=\"Resources\\grid.png\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <Resource Include=\"grid.png\" />\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <PackageReference Include=\"Emoji.Wpf\">\r\n      <Version>0.3.3</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"Microsoft.Windows.SDK.Contracts\">\r\n      <Version>10.0.22621.2</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"ModernWpfUI\">\r\n      <Version>0.9.6</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"System.Runtime.WindowsRuntime.UI.Xaml\">\r\n      <Version>4.7.0</Version>\r\n    </PackageReference>\r\n    <PackageReference Include=\"TaskScheduler\">\r\n      <Version>2.10.1</Version>\r\n    </PackageReference>\r\n  </ItemGroup>\r\n  <ItemGroup>\r\n    <BootstrapperPackage Include=\".NETFramework,Version=v4.7.2\">\r\n      <Visible>False</Visible>\r\n      <ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>\r\n      <Install>true</Install>\r\n    </BootstrapperPackage>\r\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\r\n      <Visible>False</Visible>\r\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\r\n      <Install>false</Install>\r\n    </BootstrapperPackage>\r\n  </ItemGroup>\r\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.VisualBasic.targets\" />\r\n</Project>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n  <package id=\"Emoji.Wpf\" version=\"0.0.19-experimental\" targetFramework=\"net472\" />\r\n  <package id=\"ModernWpfUI\" version=\"0.9.1\" targetFramework=\"net472\" />\r\n  <package id=\"System.Runtime.WindowsRuntime\" version=\"4.7.0\" targetFramework=\"net48\" />\r\n  <package id=\"System.ValueTuple\" version=\"4.5.0\" targetFramework=\"net48\" />\r\n  <package id=\"TaskScheduler\" version=\"2.8.20\" targetFramework=\"net472\" />\r\n</packages>"
  },
  {
    "path": "TaskbarX Configurator/TaskbarX Configurator.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.29503.13\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{F184B08F-C81C-45F6-A57F-5ABD9991F28F}\") = \"TaskbarX Configurator\", \"TaskbarX Configurator\\TaskbarX Configurator.vbproj\", \"{EB569675-BF03-4E0B-B19B-3551013DB88D}\"\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{EB569675-BF03-4E0B-B19B-3551013DB88D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{EB569675-BF03-4E0B-B19B-3551013DB88D}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{EB569675-BF03-4E0B-B19B-3551013DB88D}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{EB569675-BF03-4E0B-B19B-3551013DB88D}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(ExtensibilityGlobals) = postSolution\r\n\t\tSolutionGuid = {616A3F68-566E-4699-9DEE-1A35A4558E62}\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "VERSION",
    "content": "1.7.8.0\n"
  }
]