├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── LICENSE
├── README.md
├── TaskbarX Configurator
├── TaskbarX Configurator.sln
└── TaskbarX Configurator
│ ├── App.config
│ ├── Application.xaml
│ ├── Application.xaml.vb
│ ├── Easings.vb
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.vb
│ ├── My Project
│ ├── AssemblyInfo.vb
│ ├── Resources.Designer.vb
│ ├── Resources.resx
│ ├── Settings.Designer.vb
│ ├── Settings.settings
│ └── app.manifest
│ ├── Resources
│ ├── grid.png
│ ├── logo2020-64.png
│ └── logo2020_64.png
│ ├── StoreLogo2-71.ico
│ ├── TaskbarX Configurator.exe.config
│ ├── TaskbarX Configurator.vbproj
│ ├── TaskbarX Configurator.vbproj.user
│ ├── grid.png
│ └── packages.config
├── TaskbarX
├── TaskbarX.sln
└── TaskbarX
│ ├── .editorconfig
│ ├── App.config
│ ├── Easings.vb
│ ├── MSAA.vb
│ ├── Main.vb
│ ├── My Project
│ ├── Application.Designer.vb
│ ├── Application.myapp
│ ├── AssemblyInfo.vb
│ ├── Resources.Designer.vb
│ ├── Resources.resx
│ ├── Settings.Designer.vb
│ ├── Settings.settings
│ └── app.manifest
│ ├── Resources
│ └── icon.ico
│ ├── Settings.vb
│ ├── StoreLogo-71.ico
│ ├── TaskbarAnimate.vb
│ ├── TaskbarCenter.vb
│ ├── TaskbarStyle.vb
│ ├── TaskbarX.vbproj
│ ├── TaskbarX.vbproj.user
│ ├── TaskbarX_TemporaryKey.pfx
│ ├── TrayIconBuster.vb
│ └── Win32.vb
└── VERSION
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
17 |
18 | **Describe the bug**
19 | A clear and concise description of what the bug is.
20 |
21 | **To Reproduce**
22 | Steps to reproduce the behavior:
23 | 1. Go to '...'
24 | 2. Click on '....'
25 | 3. Scroll down to '....'
26 | 4. See error
27 |
28 | **Expected behavior**
29 | A clear and concise description of what you expected to happen.
30 |
31 | **Screenshots**
32 | If applicable, add screenshots to help explain your problem.
33 |
34 | **Desktop (please complete the following information):**
35 | - OS: [e.g. Windows 10]
36 | - Version [e.g. 1909]
37 |
38 | **Additional context**
39 | Add any other context about the problem here.
40 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
17 |
18 | **Is your feature request related to a problem? Please describe.**
19 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
20 |
21 | **Describe the solution you'd like**
22 | A clear and concise description of what you want to happen.
23 |
24 | **Describe alternatives you've considered**
25 | A clear and concise description of any alternative solutions or features you've considered.
26 |
27 | **Additional context**
28 | Add any other context or screenshots about the feature request here.
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Ll]og/
33 | [Ll]ogs/
34 |
35 | # Visual Studio 2015/2017 cache/options directory
36 | .vs/
37 | # Uncomment if you have tasks that create the project's static files in wwwroot
38 | #wwwroot/
39 |
40 | # Visual Studio 2017 auto generated files
41 | Generated\ Files/
42 |
43 | # MSTest test Results
44 | [Tt]est[Rr]esult*/
45 | [Bb]uild[Ll]og.*
46 |
47 | # NUnit
48 | *.VisualState.xml
49 | TestResult.xml
50 | nunit-*.xml
51 |
52 | # Build Results of an ATL Project
53 | [Dd]ebugPS/
54 | [Rr]eleasePS/
55 | dlldata.c
56 |
57 | # Benchmark Results
58 | BenchmarkDotNet.Artifacts/
59 |
60 | # .NET Core
61 | project.lock.json
62 | project.fragment.lock.json
63 | artifacts/
64 |
65 | # ASP.NET Scaffolding
66 | ScaffoldingReadMe.txt
67 |
68 | # StyleCop
69 | StyleCopReport.xml
70 |
71 | # Files built by Visual Studio
72 | *_i.c
73 | *_p.c
74 | *_h.h
75 | *.ilk
76 | *.meta
77 | *.obj
78 | *.iobj
79 | *.pch
80 | *.pdb
81 | *.ipdb
82 | *.pgc
83 | *.pgd
84 | *.rsp
85 | *.sbr
86 | *.tlb
87 | *.tli
88 | *.tlh
89 | *.tmp
90 | *.tmp_proj
91 | *_wpftmp.csproj
92 | *.log
93 | *.vspscc
94 | *.vssscc
95 | .builds
96 | *.pidb
97 | *.svclog
98 | *.scc
99 |
100 | # Chutzpah Test files
101 | _Chutzpah*
102 |
103 | # Visual C++ cache files
104 | ipch/
105 | *.aps
106 | *.ncb
107 | *.opendb
108 | *.opensdf
109 | *.sdf
110 | *.cachefile
111 | *.VC.db
112 | *.VC.VC.opendb
113 |
114 | # Visual Studio profiler
115 | *.psess
116 | *.vsp
117 | *.vspx
118 | *.sap
119 |
120 | # Visual Studio Trace Files
121 | *.e2e
122 |
123 | # TFS 2012 Local Workspace
124 | $tf/
125 |
126 | # Guidance Automation Toolkit
127 | *.gpState
128 |
129 | # ReSharper is a .NET coding add-in
130 | _ReSharper*/
131 | *.[Rr]e[Ss]harper
132 | *.DotSettings.user
133 |
134 | # TeamCity is a build add-in
135 | _TeamCity*
136 |
137 | # DotCover is a Code Coverage Tool
138 | *.dotCover
139 |
140 | # AxoCover is a Code Coverage Tool
141 | .axoCover/*
142 | !.axoCover/settings.json
143 |
144 | # Coverlet is a free, cross platform Code Coverage Tool
145 | coverage*[.json, .xml, .info]
146 |
147 | # Visual Studio code coverage results
148 | *.coverage
149 | *.coveragexml
150 |
151 | # NCrunch
152 | _NCrunch_*
153 | .*crunch*.local.xml
154 | nCrunchTemp_*
155 |
156 | # MightyMoose
157 | *.mm.*
158 | AutoTest.Net/
159 |
160 | # Web workbench (sass)
161 | .sass-cache/
162 |
163 | # Installshield output folder
164 | [Ee]xpress/
165 |
166 | # DocProject is a documentation generator add-in
167 | DocProject/buildhelp/
168 | DocProject/Help/*.HxT
169 | DocProject/Help/*.HxC
170 | DocProject/Help/*.hhc
171 | DocProject/Help/*.hhk
172 | DocProject/Help/*.hhp
173 | DocProject/Help/Html2
174 | DocProject/Help/html
175 |
176 | # Click-Once directory
177 | publish/
178 |
179 | # Publish Web Output
180 | *.[Pp]ublish.xml
181 | *.azurePubxml
182 | # Note: Comment the next line if you want to checkin your web deploy settings,
183 | # but database connection strings (with potential passwords) will be unencrypted
184 | *.pubxml
185 | *.publishproj
186 |
187 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
188 | # checkin your Azure Web App publish settings, but sensitive information contained
189 | # in these scripts will be unencrypted
190 | PublishScripts/
191 |
192 | # NuGet Packages
193 | *.nupkg
194 | # NuGet Symbol Packages
195 | *.snupkg
196 | # The packages folder can be ignored because of Package Restore
197 | **/[Pp]ackages/*
198 | # except build/, which is used as an MSBuild target.
199 | !**/[Pp]ackages/build/
200 | # Uncomment if necessary however generally it will be regenerated when needed
201 | #!**/[Pp]ackages/repositories.config
202 | # NuGet v3's project.json files produces more ignorable files
203 | *.nuget.props
204 | *.nuget.targets
205 |
206 | # Microsoft Azure Build Output
207 | csx/
208 | *.build.csdef
209 |
210 | # Microsoft Azure Emulator
211 | ecf/
212 | rcf/
213 |
214 | # Windows Store app package directories and files
215 | AppPackages/
216 | BundleArtifacts/
217 | Package.StoreAssociation.xml
218 | _pkginfo.txt
219 | *.appx
220 | *.appxbundle
221 | *.appxupload
222 |
223 | # Visual Studio cache files
224 | # files ending in .cache can be ignored
225 | *.[Cc]ache
226 | # but keep track of directories ending in .cache
227 | !?*.[Cc]ache/
228 |
229 | # Others
230 | ClientBin/
231 | ~$*
232 | *~
233 | *.dbmdl
234 | *.dbproj.schemaview
235 | *.jfm
236 | *.pfx
237 | *.publishsettings
238 | orleans.codegen.cs
239 |
240 | # Including strong name files can present a security risk
241 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
242 | #*.snk
243 |
244 | # Since there are multiple workflows, uncomment next line to ignore bower_components
245 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
246 | #bower_components/
247 |
248 | # RIA/Silverlight projects
249 | Generated_Code/
250 |
251 | # Backup & report files from converting an old project file
252 | # to a newer Visual Studio version. Backup files are not needed,
253 | # because we have git ;-)
254 | _UpgradeReport_Files/
255 | Backup*/
256 | UpgradeLog*.XML
257 | UpgradeLog*.htm
258 | ServiceFabricBackup/
259 | *.rptproj.bak
260 |
261 | # SQL Server files
262 | *.mdf
263 | *.ldf
264 | *.ndf
265 |
266 | # Business Intelligence projects
267 | *.rdl.data
268 | *.bim.layout
269 | *.bim_*.settings
270 | *.rptproj.rsuser
271 | *- [Bb]ackup.rdl
272 | *- [Bb]ackup ([0-9]).rdl
273 | *- [Bb]ackup ([0-9][0-9]).rdl
274 |
275 | # Microsoft Fakes
276 | FakesAssemblies/
277 |
278 | # GhostDoc plugin setting file
279 | *.GhostDoc.xml
280 |
281 | # Node.js Tools for Visual Studio
282 | .ntvs_analysis.dat
283 | node_modules/
284 |
285 | # Visual Studio 6 build log
286 | *.plg
287 |
288 | # Visual Studio 6 workspace options file
289 | *.opt
290 |
291 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
292 | *.vbw
293 |
294 | # Visual Studio LightSwitch build output
295 | **/*.HTMLClient/GeneratedArtifacts
296 | **/*.DesktopClient/GeneratedArtifacts
297 | **/*.DesktopClient/ModelManifest.xml
298 | **/*.Server/GeneratedArtifacts
299 | **/*.Server/ModelManifest.xml
300 | _Pvt_Extensions
301 |
302 | # Paket dependency manager
303 | .paket/paket.exe
304 | paket-files/
305 |
306 | # FAKE - F# Make
307 | .fake/
308 |
309 | # CodeRush personal settings
310 | .cr/personal
311 |
312 | # Python Tools for Visual Studio (PTVS)
313 | __pycache__/
314 | *.pyc
315 |
316 | # Cake - Uncomment if you are using it
317 | # tools/**
318 | # !tools/packages.config
319 |
320 | # Tabs Studio
321 | *.tss
322 |
323 | # Telerik's JustMock configuration file
324 | *.jmconfig
325 |
326 | # BizTalk build output
327 | *.btp.cs
328 | *.btm.cs
329 | *.odx.cs
330 | *.xsd.cs
331 |
332 | # OpenCover UI analysis results
333 | OpenCover/
334 |
335 | # Azure Stream Analytics local run output
336 | ASALocalRun/
337 |
338 | # MSBuild Binary and Structured Log
339 | *.binlog
340 |
341 | # NVidia Nsight GPU debugger configuration file
342 | *.nvuser
343 |
344 | # MFractors (Xamarin productivity tool) working folder
345 | .mfractor/
346 |
347 | # Local History for Visual Studio
348 | .localhistory/
349 |
350 | # BeatPulse healthcheck temp database
351 | healthchecksdb
352 |
353 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
354 | MigrationBackup/
355 |
356 | # Ionide (cross platform F# VS Code tools) working folder
357 | .ionide/
358 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at chrisand1998@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | When contributing to this repository, please first discuss the change you wish to make via issue,
4 | email, or any other method with the owners of this repository before making a change.
5 |
6 | Please note we have a code of conduct, please follow it in all your interactions with the project.
7 |
8 | ## Pull Request Process
9 |
10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a
11 | build.
12 | 2. Update the README.md with details of changes to the interface, this includes new environment
13 | variables, exposed ports, useful file locations and container parameters.
14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this
15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
17 | do not have permission to do that, you may request the second reviewer to merge it for you.
18 |
19 | ## Code of Conduct
20 |
21 | ### Our Pledge
22 |
23 | In the interest of fostering an open and welcoming environment, we as
24 | contributors and maintainers pledge to making participation in our project and
25 | our community a harassment-free experience for everyone, regardless of age, body
26 | size, disability, ethnicity, gender identity and expression, level of experience,
27 | nationality, personal appearance, race, religion, or sexual identity and
28 | orientation.
29 |
30 | ### Our Standards
31 |
32 | Examples of behavior that contributes to creating a positive environment
33 | include:
34 |
35 | * Using welcoming and inclusive language
36 | * Being respectful of differing viewpoints and experiences
37 | * Gracefully accepting constructive criticism
38 | * Focusing on what is best for the community
39 | * Showing empathy towards other community members
40 |
41 | Examples of unacceptable behavior by participants include:
42 |
43 | * The use of sexualized language or imagery and unwelcome sexual attention or
44 | advances
45 | * Trolling, insulting/derogatory comments, and personal or political attacks
46 | * Public or private harassment
47 | * Publishing others' private information, such as a physical or electronic
48 | address, without explicit permission
49 | * Other conduct which could reasonably be considered inappropriate in a
50 | professional setting
51 |
52 | ### Our Responsibilities
53 |
54 | Project maintainers are responsible for clarifying the standards of acceptable
55 | behavior and are expected to take appropriate and fair corrective action in
56 | response to any instances of unacceptable behavior.
57 |
58 | Project maintainers have the right and responsibility to remove, edit, or
59 | reject comments, commits, code, wiki edits, issues, and other contributions
60 | that are not aligned to this Code of Conduct, or to ban temporarily or
61 | permanently any contributor for other behaviors that they deem inappropriate,
62 | threatening, offensive, or harmful.
63 |
64 | ### Scope
65 |
66 | This Code of Conduct applies both within project spaces and in public spaces
67 | when an individual is representing the project or its community. Examples of
68 | representing a project or community include using an official project e-mail
69 | address, posting via an official social media account, or acting as an appointed
70 | representative at an online or offline event. Representation of a project may be
71 | further defined and clarified by project maintainers.
72 |
73 | ### Enforcement
74 |
75 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
76 | reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
77 | complaints will be reviewed and investigated and will result in a response that
78 | is deemed necessary and appropriate to the circumstances. The project team is
79 | obligated to maintain confidentiality with regard to the reporter of an incident.
80 | Further details of specific enforcement policies may be posted separately.
81 |
82 | Project maintainers who do not follow or enforce the Code of Conduct in good
83 | faith may face temporary or permanent repercussions as determined by other
84 | members of the project's leadership.
85 |
86 | ### Attribution
87 |
88 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
89 | available at [http://contributor-covenant.org/version/1/4][version]
90 |
91 | [homepage]: http://contributor-covenant.org
92 | [version]: http://contributor-covenant.org/version/1/4/
93 |
--------------------------------------------------------------------------------
/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: ['https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BLHEGFMLP5MQN&source=url']
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Chris Andriessen
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # TaskbarX
3 |
4 |
5 | 
6 |
7 | TaskbarX gives you control over the position of your taskbar icons.
8 | TaskbarX 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.
9 | TaskbarX has been in development since 6 may 2018. Also known as FalconX and Falcon10.
10 |
11 |
12 | 
13 |
14 |
15 |
16 | ## Features
17 |
18 | - 42 different Animations including "none"
19 | - Great performance (Very optimized and lightweight looping)
20 | - Change animation speed
21 | - Change custom offset position based on center
22 | - Center between startbutton, search, taskview etc... and left tray icons, clock etc...
23 | - All taskbar settings supported
24 | - Vertical taskbar supported
25 | - Unlimited monitors supported
26 | - Change taskbar style to Transparent, Blur and Acrylic
27 | - Change taskbar color and transparency
28 | - Hide Start button and more...
29 | - Taskbar segments
30 | - Custom start button
31 |
32 |
33 |
34 |
35 |
36 |
37 | ## How to use TaskbarX with Windows 11?
38 |
39 | Do 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
40 |
41 | NOTE (for Windows 11 users):
42 | TaskbarX 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.
43 |
44 |
45 |
46 |
47 | ## Start icon file
48 |
49 |  
50 |
51 |
52 | Looking for a start icon file?
53 | **Start icon:** [start.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/start.ico)
54 | **Start dark icon:** [startdark.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startdark.ico)
55 | **Start light icon:** [startlight.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startlight.ico)
56 | **Start color icon:** [startcolor.ico](https://github.com/ChrisAnd1998/TaskbarX/releases/download/1.7.5.0/startcolor.ico)
57 |
58 |
59 |
60 |
61 | ## Commandline Arguments
62 |
63 | _**-stop** will stop TaskbarX, puts all icons back to the left and resets the taskbar style.
64 | **-tbs=1** will make the taskbar transparent. 2 blur, 3 acrylic, 4 transparent (with gradient), 5 opaque and 0 is disabled.
65 | **-ptbo=0** will set the offset of the primary taskbar based on the center.
66 | **-stbo=0** will set the offset of the secondary taskbar based on the center.
67 | **-cpo=1** will only center the primary taskbar. 0 is disabled.
68 | **-cso=1** will only center the secondary taskbar(s). 0 is disabled.
69 | **-as=backeaseout** will set the animation style to BackEaseOut. "none" is instant.
70 | **-asp=500** will set the speed of the animation.
71 | **-lr=400** will set the refresh rate of the looper/taskbar checker.
72 | **-cib=1** will set the primary taskbar position in between start, search etc.. and the tray.
73 | **-ftotc=1** will update any toolbar when a tray icon gets added or removed.
74 | **-sr=1920** will put the icons to the left when screen width becomes 1920px.
75 | **-sr2=1920** will put the icons to the left when screen width becomes 1920px.
76 | **-sr3=1920** will put the icons to the left when screen width becomes 1920px.
77 | **-cfsa=1** will pause TaskbarX if a fullscreen app is running.
78 | **-obas=backeaseout** will set the animation style to BackEaseOut when on battery mode.
79 | **-oblr=400** will set the refresh rate of the looper/taskbar checker when on battery mode.
80 | **-dct=1** will stop TaskbarX from centering the taskbar icons.
81 | **-hps=1** will hide the start button on the primary monitor.
82 | **-hss=1** will hide the start button on the secondary monitor.
83 | **-hpt=1** will hide the tray area on the primary monitor.
84 | **-hst=1** will hide the tray area on the secondary monitor.
85 | **-sti=1** will show a tray icon to quickly restart and stop TaskbarX.
86 | **-dtbsowm=1** will revert to the default taskbar on maximized window.
87 | **-tpop=100** will set the total opacity of the primary taskbar.
88 | **-tsop=100** will set the total opacity of the secondary taskbar.
89 | **-rzbt=1** will revert the taskbar back to the left when the icons start overlapping with the Tray area.
90 | **-tbr=5** will set the rounding of the taskbar.
91 | **-tbsg=1** will enable taskbar segments. 0 is disabled and 1 is enabled.
92 | **-color=0;0;0;1** will set the color of the taskbar when using taskbar styling. RGBA._
93 |
94 | > **Example:** _C:\Program Files (x86)\TaskbarX\TaskbarX.exe -tbs=1 -as=backeaseout_
95 |
96 |
97 |
98 |
99 |
100 | ## References
101 |
102 | - ModernWPF: https://github.com/Kinnara/ModernWpf
103 | - TaskScheduler: https://github.com/dahall/TaskScheduler
104 | - Emoji.Wpf: https://github.com/samhocevar/emoji.wpf
105 |
106 |
107 |
108 |
109 | ## Downloads
110 |
111 | - FREE | Portable .zip package : https://chrisandriessen.nl/taskbarx
112 | - FREE | Rainmeter Skin : https://chrisandriessen.nl/taskbarx
113 | - PAID | Windows Store : https://www.microsoft.com/store/productid/9PCMZ6BXK8GH
114 |
115 |
116 |
117 |
118 |
119 |
120 | ## Frequently Asked Questions
121 |
122 | **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.
123 |
124 |
125 |
126 | **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.
127 |
128 |
129 |
130 | **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.
131 |
132 |
133 |
134 | **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.
135 |
136 |
137 |
138 | **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
139 |
140 |
141 |
142 | **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
143 |
144 |
145 |
146 | **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
147 |
148 |
149 |
150 |
151 |
152 |
153 | ## Errors
154 |
155 | The Store version is not capable of uninstalling a taskschedule.
156 | If you get the error below then this explains how to fix it:
157 |
158 | In your startmenu search for "**Task Scheduler**".
159 | On the left menu click on "**Task Scheduler Library**". In the middle a list will appear.
160 | Right click on the "**TaskbarX**" or "**FalconX**" entry and click "**Delete**".
161 |
162 | 
163 |
164 | _You can also use `SCHTASKS /DELETE /TN "TaskbarX PCNAMEUSERNAME"` to remove the scheduled task from the command line._
165 |
166 |
167 |
168 |
169 | ## Tags
170 | center 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
171 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29503.13
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TaskbarX Configurator", "TaskbarX Configurator\TaskbarX Configurator.vbproj", "{EB569675-BF03-4E0B-B19B-3551013DB88D}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {EB569675-BF03-4E0B-B19B-3551013DB88D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {EB569675-BF03-4E0B-B19B-3551013DB88D}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {EB569675-BF03-4E0B-B19B-3551013DB88D}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {EB569675-BF03-4E0B-B19B-3551013DB88D}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {616A3F68-566E-4699-9DEE-1A35A4558E62}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Application.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Application.xaml.vb:
--------------------------------------------------------------------------------
1 | Class Application
2 |
3 | ' Application-level events, such as Startup, Exit, and DispatcherUnhandledException
4 | ' can be handled in this file.
5 |
6 | End Class
7 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Easings.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Public Delegate Function EasingDelegate(ByVal currentTime As Double, ByVal minValue As Double, ByVal maxValue As Double, ByVal duration As Double) As Double
4 |
5 | Public Class Easings
6 |
7 | 'All Animations are here some of them can be found here https://easings.net/en
8 | Public Shared Function Linear(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
9 | Return maxHeight * currentTime / duration + minHeight
10 | End Function
11 |
12 | Public Shared Function ExpoEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
13 | If currentTime <> duration Then
14 | Return maxHeight * (-Math.Pow(2.0, -10.0 * currentTime / duration) + 1.0) + minHeight
15 | End If
16 | Return minHeight + maxHeight
17 | End Function
18 |
19 | Public Shared Function ExpoEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
20 | If currentTime <> 0.0 Then
21 | Return maxHeight * Math.Pow(2.0, 10.0 * (currentTime / duration - 1.0)) + minHeight
22 | End If
23 | Return minHeight
24 | End Function
25 |
26 | Public Shared Function ExpoEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
27 | If currentTime = 0.0 Then
28 | Return minHeight
29 | End If
30 | If currentTime = duration Then
31 | Return minHeight + maxHeight
32 | End If
33 | Dim num As Double = currentTime / (duration / 2.0)
34 | currentTime = num
35 | If num < 1.0 Then
36 | Return maxHeight / 2.0 * Math.Pow(2.0, 10.0 * (currentTime - 1.0)) + minHeight
37 | End If
38 | Dim num2 As Double = maxHeight / 2.0
39 | Dim x As Double = 2.0
40 | Dim num3 As Double = -10.0
41 | Dim num4 As Double = currentTime - 1.0
42 | Return num2 * (-Math.Pow(x, num3 * num4) + 2.0) + minHeight
43 | End Function
44 |
45 | Public Shared Function ExpoEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
46 | If currentTime < duration / 2.0 Then
47 | Return Easings.ExpoEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
48 | End If
49 | Return Easings.ExpoEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
50 | End Function
51 |
52 | Public Shared Function CircEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
53 | Dim num As Double = 1.0
54 | Dim num2 As Double = currentTime / duration - 1.0
55 | currentTime = num2
56 | Return maxHeight * Math.Sqrt(num - num2 * currentTime) + minHeight
57 | End Function
58 |
59 | Public Shared Function CircEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
60 | Dim num As Double = 1.0
61 | Dim num2 As Double = currentTime / duration
62 | currentTime = num2
63 | Dim sqrt As Double = Math.Sqrt(num - num2 * currentTime)
64 | If Double.IsNaN(sqrt) Then
65 | sqrt = 0.0
66 | End If
67 | Return -maxHeight * (sqrt - 1.0) + minHeight
68 | End Function
69 |
70 | Public Shared Function CircEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
71 | Dim num As Double = currentTime / (duration / 2.0)
72 | currentTime = num
73 | If num < 1.0 Then
74 | Return -maxHeight / 2.0 * (Math.Sqrt(1.0 - currentTime * currentTime) - 1.0) + minHeight
75 | End If
76 | Dim num2 As Double = maxHeight / 2.0
77 | Dim num3 As Double = 1.0
78 | Dim num4 As Double = currentTime - 2.0
79 | currentTime = num4
80 | Return num2 * (Math.Sqrt(num3 - num4 * currentTime) + 1.0) + minHeight
81 | End Function
82 |
83 | Public Shared Function CircEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
84 | If currentTime < duration / 2.0 Then
85 | Return Easings.CircEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
86 | End If
87 | Return Easings.CircEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
88 | End Function
89 |
90 | Public Shared Function QuadEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
91 | Dim num As Double = -maxHeight
92 | Dim num2 As Double = currentTime / duration
93 | currentTime = num2
94 | Return num * num2 * (currentTime - 2.0) + minHeight
95 | End Function
96 |
97 | Public Shared Function QuadEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
98 | Dim num As Double = currentTime / duration
99 | currentTime = num
100 | Return maxHeight * num * currentTime + minHeight
101 | End Function
102 |
103 | Public Shared Function QuadEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
104 | Dim num As Double = currentTime / (duration / 2.0)
105 | currentTime = num
106 | If num < 1.0 Then
107 | Return maxHeight / 2.0 * currentTime * currentTime + minHeight
108 | End If
109 | Dim num2 As Double = -maxHeight / 2.0
110 | Dim num3 As Double = currentTime - 1.0
111 | currentTime = num3
112 | Return num2 * (num3 * (currentTime - 2.0) - 1.0) + minHeight
113 | End Function
114 |
115 | Public Shared Function QuadEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
116 | If currentTime < duration / 2.0 Then
117 | Return Easings.QuadEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
118 | End If
119 | Return Easings.QuadEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
120 | End Function
121 |
122 | Public Shared Function SineEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
123 | Return maxHeight * Math.Sin(currentTime / duration * 1.5707963267948966) + minHeight
124 | End Function
125 |
126 | Public Shared Function SineEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
127 | Return -maxHeight * Math.Cos(currentTime / duration * 1.5707963267948966) + maxHeight + minHeight
128 | End Function
129 |
130 | Public Shared Function SineEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
131 | Dim num As Double = currentTime / (duration / 2.0)
132 | currentTime = num
133 | If num < 1.0 Then
134 | Return maxHeight / 2.0 * Math.Sin(3.1415926535897931 * currentTime / 2.0) + minHeight
135 | End If
136 | Dim num2 As Double = -maxHeight / 2.0
137 | Dim num3 As Double = 3.1415926535897931
138 | Dim num4 As Double = currentTime - 1.0
139 | Return num2 * (Math.Cos(num3 * num4 / 2.0) - 2.0) + minHeight
140 | End Function
141 |
142 | Public Shared Function SineEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
143 | If currentTime < duration / 2.0 Then
144 | Return Easings.SineEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
145 | End If
146 | Return Easings.SineEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
147 | End Function
148 |
149 | Public Shared Function CubicEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
150 | Dim num As Double = currentTime / duration - 1.0
151 | currentTime = num
152 | Return maxHeight * (num * currentTime * currentTime + 1.0) + minHeight
153 | End Function
154 |
155 | Public Shared Function CubicEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
156 | Dim num As Double = currentTime / duration
157 | currentTime = num
158 | Return maxHeight * num * currentTime * currentTime + minHeight
159 | End Function
160 |
161 | Public Shared Function CubicEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
162 | Dim num As Double = currentTime / (duration / 2.0)
163 | currentTime = num
164 | If num < 1.0 Then
165 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime + minHeight
166 | End If
167 | Dim num2 As Double = maxHeight / 2.0
168 | Dim num3 As Double = currentTime - 2.0
169 | currentTime = num3
170 | Return num2 * (num3 * currentTime * currentTime + 2.0) + minHeight
171 | End Function
172 |
173 | Public Shared Function CubicEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
174 | If currentTime < duration / 2.0 Then
175 | Return Easings.CubicEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
176 | End If
177 | Return Easings.CubicEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
178 | End Function
179 |
180 | Public Shared Function QuartEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
181 | Dim num As Double = -maxHeight
182 | Dim num2 As Double = currentTime / duration - 1.0
183 | currentTime = num2
184 | Return num * (num2 * currentTime * currentTime * currentTime - 1.0) + minHeight
185 | End Function
186 |
187 | Public Shared Function QuartEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
188 | Dim num As Double = currentTime / duration
189 | currentTime = num
190 | Return maxHeight * num * currentTime * currentTime * currentTime + minHeight
191 | End Function
192 |
193 | Public Shared Function QuartEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
194 | Dim num As Double = currentTime / (duration / 2.0)
195 | currentTime = num
196 | If num < 1.0 Then
197 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime + minHeight
198 | End If
199 | Dim num2 As Double = -maxHeight / 2.0
200 | Dim num3 As Double = currentTime - 2.0
201 | currentTime = num3
202 | Return num2 * (num3 * currentTime * currentTime * currentTime - 2.0) + minHeight
203 | End Function
204 |
205 | Public Shared Function QuartEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
206 | If currentTime < duration / 2.0 Then
207 | Return Easings.QuartEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
208 | End If
209 | Return Easings.QuartEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
210 | End Function
211 |
212 | Public Shared Function QuintEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
213 | Dim num As Double = currentTime / duration - 1.0
214 | currentTime = num
215 | Return maxHeight * (num * currentTime * currentTime * currentTime * currentTime + 1.0) + minHeight
216 | End Function
217 |
218 | Public Shared Function QuintEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
219 | Dim num As Double = currentTime / duration
220 | currentTime = num
221 | Return maxHeight * num * currentTime * currentTime * currentTime * currentTime + minHeight
222 | End Function
223 |
224 | Public Shared Function QuintEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
225 | Dim num As Double = currentTime / (duration / 2.0)
226 | currentTime = num
227 | If num < 1.0 Then
228 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime * currentTime + minHeight
229 | End If
230 | Dim num2 As Double = maxHeight / 2.0
231 | Dim num3 As Double = currentTime - 2.0
232 | currentTime = num3
233 | Return num2 * (num3 * currentTime * currentTime * currentTime * currentTime + 2.0) + minHeight
234 | End Function
235 |
236 | Public Shared Function QuintEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
237 | If currentTime < duration / 2.0 Then
238 | Return Easings.QuintEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
239 | End If
240 | Return Easings.QuintEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
241 | End Function
242 |
243 | Public Shared Function ElasticEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
244 | Dim num As Double = currentTime / duration
245 | currentTime = num
246 | If num = 1.0 Then
247 | Return minHeight + maxHeight
248 | End If
249 | Dim p As Double = duration * 0.3
250 | Dim s As Double = p / 4.0
251 | Return maxHeight * Math.Pow(2.0, -10.0 * currentTime) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) + maxHeight + minHeight
252 | End Function
253 |
254 | Public Shared Function ElasticEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
255 | Dim num As Double = currentTime / duration
256 | currentTime = num
257 | If num = 1.0 Then
258 | Return minHeight + maxHeight
259 | End If
260 | Dim p As Double = duration * 0.3
261 | Dim s As Double = p / 4.0
262 | Dim x As Double = 2.0
263 | Dim num2 As Double = 10.0
264 | Dim num3 As Double = currentTime - 1.0
265 | currentTime = num3
266 | Return -(maxHeight * Math.Pow(x, num2 * num3) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight
267 | End Function
268 |
269 | Public Shared Function ElasticEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
270 | Dim num As Double = currentTime / (duration / 2.0)
271 | currentTime = num
272 | If num = 2.0 Then
273 | Return minHeight + maxHeight
274 | End If
275 | Dim p As Double = duration * 0.44999999999999996
276 | Dim s As Double = p / 4.0
277 | If currentTime < 1.0 Then
278 | Dim num2 As Double = -0.5
279 | Dim x As Double = 2.0
280 | Dim num3 As Double = 10.0
281 | Dim num4 As Double = currentTime - 1.0
282 | currentTime = num4
283 | Return num2 * (maxHeight * Math.Pow(x, num3 * num4) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight
284 | End If
285 | Dim x2 As Double = 2.0
286 | Dim num5 As Double = -10.0
287 | Dim num6 As Double = currentTime - 1.0
288 | currentTime = num6
289 | Return maxHeight * Math.Pow(x2, num5 * num6) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) * 0.5 + maxHeight + minHeight
290 | End Function
291 |
292 | Public Shared Function ElasticEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
293 | If currentTime < duration / 2.0 Then
294 | Return Easings.ElasticEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
295 | End If
296 | Return Easings.ElasticEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
297 | End Function
298 |
299 | Public Shared Function BounceEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
300 | Dim num As Double = currentTime / duration
301 | currentTime = num
302 | If num < 0.36363636363636365 Then
303 | Return maxHeight * (7.5625 * currentTime * currentTime) + minHeight
304 | End If
305 | If currentTime < 0.72727272727272729 Then
306 | Dim num2 As Double = 7.5625
307 | Dim num3 As Double = currentTime - 0.54545454545454541
308 | currentTime = num3
309 | Return maxHeight * (num2 * num3 * currentTime + 0.75) + minHeight
310 | End If
311 | If currentTime < 0.90909090909090906 Then
312 | Dim num4 As Double = 7.5625
313 | Dim num5 As Double = currentTime - 0.81818181818181823
314 | currentTime = num5
315 | Return maxHeight * (num4 * num5 * currentTime + 0.9375) + minHeight
316 | End If
317 | Dim num6 As Double = 7.5625
318 | Dim num7 As Double = currentTime - 0.95454545454545459
319 | currentTime = num7
320 | Return maxHeight * (num6 * num7 * currentTime + 0.984375) + minHeight
321 | End Function
322 |
323 | Public Shared Function BounceEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
324 | Return maxHeight - Easings.BounceEaseOut(duration - currentTime, 0.0, maxHeight, duration) + minHeight
325 | End Function
326 |
327 | Public Shared Function BounceEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
328 | If currentTime < duration / 2.0 Then
329 | Return Easings.BounceEaseIn(currentTime * 2.0, 0.0, maxHeight, duration) * 0.5 + minHeight
330 | End If
331 | Return Easings.BounceEaseOut(currentTime * 2.0 - duration, 0.0, maxHeight, duration) * 0.5 + maxHeight * 0.5 + minHeight
332 | End Function
333 |
334 | Public Shared Function BounceEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
335 | If currentTime < duration / 2.0 Then
336 | Return Easings.BounceEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
337 | End If
338 | Return Easings.BounceEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
339 | End Function
340 |
341 | Public Shared Function BackEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
342 | Dim num As Double = currentTime / duration - 1.0
343 | currentTime = num
344 | Return maxHeight * (num * currentTime * (2.70158 * currentTime + 1.70158) + 1.0) + minHeight
345 | End Function
346 |
347 | Public Shared Function BackEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
348 | Dim num As Double = currentTime / duration
349 | currentTime = num
350 | Return maxHeight * num * currentTime * (2.70158 * currentTime - 1.70158) + minHeight
351 | End Function
352 |
353 | Public Shared Function BackEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
354 | Dim s As Double = 1.70158
355 | Dim num As Double = currentTime / (duration / 2.0)
356 | currentTime = num
357 | If num < 1.0 Then
358 | Dim num2 As Double = maxHeight / 2.0
359 | Dim num3 As Double = currentTime * currentTime
360 | Dim num4 As Double = s * 1.525
361 | s = num4
362 | Return num2 * (num3 * ((num4 + 1.0) * currentTime - s)) + minHeight
363 | End If
364 | Dim num5 As Double = maxHeight / 2.0
365 | Dim num6 As Double = currentTime - 2.0
366 | currentTime = num6
367 | Dim num7 As Double = num6 * currentTime
368 | Dim num8 As Double = s * 1.525
369 | s = num8
370 | Return num5 * (num7 * ((num8 + 1.0) * currentTime + s) + 2.0) + minHeight
371 | End Function
372 |
373 | Public Shared Function BackEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
374 | If currentTime < duration / 2.0 Then
375 | Return Easings.BackEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
376 | End If
377 | Return Easings.BackEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
378 | End Function
379 |
380 | End Class
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 | Imports System.Globalization
5 | Imports System.Resources
6 | Imports System.Windows
7 |
8 | ' General Information about an assembly is controlled through the following
9 | ' set of attributes. Change these attribute values to modify the information
10 | ' associated with an assembly.
11 |
12 | ' Review the values of the assembly attributes
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 'In order to begin building localizable applications, set
23 | 'CultureYouAreCodingWith in your .vbproj file
24 | 'inside a . For example, if you are using US english
25 | 'in your source files, set the to "en-US". Then uncomment the
26 | 'NeutralResourceLanguage attribute below. Update the "en-US" in the line
27 | 'below to match the UICulture setting in the project file.
28 |
29 | '
30 |
31 |
32 | 'The ThemeInfo attribute describes where any theme specific and generic resource dictionaries can be found.
33 | '1st parameter: where theme specific resource dictionaries are located
34 | '(used if a resource is not found in the page,
35 | ' or application resource dictionaries)
36 |
37 | '2nd parameter: where the generic resource dictionary is located
38 | '(used if a resource is not found in the page,
39 | 'app, and any theme specific resource dictionaries)
40 |
41 |
42 |
43 |
44 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
45 |
46 |
47 | ' Version information for an assembly consists of the following four values:
48 | '
49 | ' Major Version
50 | ' Minor Version
51 | ' Build Number
52 | ' Revision
53 | '
54 | ' You can specify all the values or you can default the Build and Revision Numbers
55 | ' by using the '*' as shown below:
56 | '
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Public Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Public ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("TaskbarXConfiguratorWPF.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Public Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 |
63 | '''
64 | ''' Looks up a localized resource of type System.Drawing.Bitmap.
65 | '''
66 | Public ReadOnly Property grid() As System.Drawing.Bitmap
67 | Get
68 | Dim obj As Object = ResourceManager.GetObject("grid", resourceCulture)
69 | Return CType(obj,System.Drawing.Bitmap)
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\grid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 |
16 | _
19 | Partial Friend NotInheritable Class MySettings
20 | Inherits Global.System.Configuration.ApplicationSettingsBase
21 |
22 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
23 |
24 | #Region "My.Settings Auto-Save Functionality"
25 | #If _MyType = "WindowsForms" Then
26 | Private Shared addedHandler As Boolean
27 |
28 | Private Shared addedHandlerLockObject As New Object
29 |
30 | _
31 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
32 | If My.Application.SaveMySettingsOnExit Then
33 | My.Settings.Save()
34 | End If
35 | End Sub
36 | #End If
37 | #End Region
38 |
39 | Public Shared ReadOnly Property [Default]() As MySettings
40 | Get
41 |
42 | #If _MyType = "WindowsForms" Then
43 | If Not addedHandler Then
44 | SyncLock addedHandlerLockObject
45 | If Not addedHandler Then
46 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
47 | addedHandler = True
48 | End If
49 | End SyncLock
50 | End If
51 | #End If
52 | Return defaultInstance
53 | End Get
54 | End Property
55 | End Class
56 |
57 | Namespace My
58 |
59 | _
62 | Friend Module MySettingsProperty
63 |
64 | _
65 | Friend ReadOnly Property Settings() As Global.TaskbarXConfiguratorWPF.MySettings
66 | Get
67 | Return Global.TaskbarXConfiguratorWPF.MySettings.Default
68 | End Get
69 | End Property
70 | End Module
71 | End Namespace
72 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
59 |
60 |
61 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Resources/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX Configurator/TaskbarX Configurator/Resources/grid.png
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Resources/logo2020-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX Configurator/TaskbarX Configurator/Resources/logo2020-64.png
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/Resources/logo2020_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX Configurator/TaskbarX Configurator/Resources/logo2020_64.png
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/StoreLogo2-71.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX Configurator/TaskbarX Configurator/StoreLogo2-71.ico
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/TaskbarX Configurator.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/TaskbarX Configurator.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {EB569675-BF03-4E0B-B19B-3551013DB88D}
7 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}
8 | WinExe
9 | TaskbarXConfiguratorWPF
10 | TaskbarX Configurator
11 | v4.8
12 | Custom
13 | true
14 | true
15 |
16 |
17 |
18 | false
19 | D:\Visual Studio Projects\!TaskbarX\Publish\
20 | true
21 | Disk
22 | false
23 | Foreground
24 | 7
25 | Days
26 | false
27 | false
28 | true
29 | true
30 | 2
31 | 1.0.0.%2a
32 | false
33 | true
34 | true
35 |
36 |
37 | AnyCPU
38 | true
39 | full
40 | true
41 | true
42 | true
43 | bin\Debug\
44 | TaskbarX Configurator.xml
45 | 42314
46 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
47 | false
48 |
49 |
50 | AnyCPU
51 | pdbonly
52 | false
53 | false
54 | true
55 | false
56 | true
57 | ..\..\APPX\TaskbarX\Release\
58 | TaskbarX Configurator.xml
59 | 42314
60 | true
61 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
62 |
63 |
64 | On
65 |
66 |
67 | Binary
68 |
69 |
70 | On
71 |
72 |
73 | On
74 |
75 |
76 | StoreLogo2-71.ico
77 |
78 |
79 | My Project\app.manifest
80 |
81 |
82 | true
83 | true
84 | true
85 | bin\x64\Debug\
86 | TaskbarX Configurator.xml
87 | 42314
88 | full
89 | x64
90 | MinimumRecommendedRules.ruleset
91 | true
92 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
93 |
94 |
95 | true
96 | ..\..\APPX\TaskbarX64\Release\
97 | TaskbarX Configurator.xml
98 | true
99 | 42314
100 | pdbonly
101 | x64
102 | MinimumRecommendedRules.ruleset
103 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
104 | false
105 |
106 |
107 | true
108 | true
109 | true
110 | bin\x86\Debug\
111 | TaskbarX Configurator.xml
112 | 42314
113 | full
114 | x86
115 | MinimumRecommendedRules.ruleset
116 | true
117 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
118 |
119 |
120 | true
121 | ..\..\APPX\TaskbarX32\Release\
122 | TaskbarX Configurator.xml
123 | true
124 | 42314
125 | pdbonly
126 | x86
127 | MinimumRecommendedRules.ruleset
128 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
129 | true
130 |
131 |
132 | 264F8D322D8DA53FB5812F8E791F057AF6D206CC
133 |
134 |
135 | TaskbarX Configurator_TemporaryKey.pfx
136 |
137 |
138 | true
139 |
140 |
141 | false
142 |
143 |
144 |
145 | False
146 |
147 |
148 |
149 | False
150 |
151 |
152 | False
153 |
154 |
155 | False
156 |
157 |
158 |
159 | False
160 |
161 |
162 | False
163 |
164 |
165 | False
166 |
167 |
168 | False
169 |
170 |
171 | False
172 |
173 |
174 | 4.0
175 | False
176 |
177 |
178 | False
179 |
180 |
181 | False
182 |
183 |
184 | False
185 |
186 |
187 | False
188 |
189 |
190 |
191 |
192 | MSBuild:Compile
193 |
194 |
195 | MSBuild:Compile
196 | Designer
197 |
198 |
199 | Application.xaml
200 | Code
201 |
202 |
203 |
204 | MainWindow.xaml
205 | Code
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 | Code
230 |
231 |
232 | Microsoft.VisualBasic.WPF.MyExtension
233 | 1.0.0.0
234 |
235 |
236 | True
237 | True
238 | Resources.resx
239 |
240 |
241 | True
242 | Settings.settings
243 | True
244 |
245 |
246 | PublicVbMyResourcesResXFileCodeGenerator
247 | Resources.Designer.vb
248 | My.Resources
249 | Designer
250 |
251 |
252 |
253 | SettingsSingleFileGenerator
254 | Settings.Designer.vb
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 | 0.3.3
272 |
273 |
274 | 10.0.22621.2
275 |
276 |
277 | 0.9.6
278 |
279 |
280 | 4.7.0
281 |
282 |
283 | 2.10.1
284 |
285 |
286 |
287 |
288 | False
289 | Microsoft .NET Framework 4.7.2 %28x86 and x64%29
290 | true
291 |
292 |
293 | False
294 | .NET Framework 3.5 SP1
295 | false
296 |
297 |
298 |
299 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/TaskbarX Configurator.vbproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | D:\Visual Studio Projects\!TaskbarX\Publish\|publish\
5 |
6 |
7 |
8 |
9 |
10 | en-US
11 | false
12 |
13 |
14 | false
15 |
16 |
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX Configurator/TaskbarX Configurator/grid.png
--------------------------------------------------------------------------------
/TaskbarX Configurator/TaskbarX Configurator/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29503.13
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TaskbarX", "TaskbarX\TaskbarX.vbproj", "{280F29CB-27F8-41FA-8111-21E6916583FD}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {280F29CB-27F8-41FA-8111-21E6916583FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {280F29CB-27F8-41FA-8111-21E6916583FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {280F29CB-27F8-41FA-8111-21E6916583FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {280F29CB-27F8-41FA-8111-21E6916583FD}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {4A800EE9-8779-4772-A980-51ECC0F9AAB6}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.vb]
2 |
3 | # CA2101: Specify marshaling for P/Invoke string arguments
4 | dotnet_diagnostic.CA2101.severity = none
5 |
6 | # CA1401: P/Invokes should not be visible
7 | dotnet_diagnostic.CA1401.severity = none
8 |
9 | # BC42104: Variable is used before it has been assigned a value
10 | dotnet_diagnostic.BC42104.severity = none
11 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/Easings.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Public Delegate Function EasingDelegate(ByVal currentTime As Double, ByVal minValue As Double, ByVal maxValue As Double, ByVal duration As Double) As Double
4 |
5 | Public Class Easings
6 |
7 | Public Shared Function Linear(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
8 | Return maxHeight * currentTime / duration + minHeight
9 | End Function
10 |
11 | Public Shared Function ExpoEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
12 | If currentTime <> duration Then
13 | Return maxHeight * (-Math.Pow(2.0, -10.0 * currentTime / duration) + 1.0) + minHeight
14 | End If
15 | Return minHeight + maxHeight
16 | End Function
17 |
18 | Public Shared Function ExpoEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
19 | If currentTime <> 0.0 Then
20 | Return maxHeight * Math.Pow(2.0, 10.0 * (currentTime / duration - 1.0)) + minHeight
21 | End If
22 | Return minHeight
23 | End Function
24 |
25 | Public Shared Function ExpoEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
26 | If currentTime = 0.0 Then
27 | Return minHeight
28 | End If
29 | If currentTime = duration Then
30 | Return minHeight + maxHeight
31 | End If
32 | Dim num As Double = currentTime / (duration / 2.0)
33 | currentTime = num
34 | If num < 1.0 Then
35 | Return maxHeight / 2.0 * Math.Pow(2.0, 10.0 * (currentTime - 1.0)) + minHeight
36 | End If
37 | Dim num2 As Double = maxHeight / 2.0
38 | Dim x As Double = 2.0
39 | Dim num3 As Double = -10.0
40 | Dim num4 As Double = currentTime - 1.0
41 | Return num2 * (-Math.Pow(x, num3 * num4) + 2.0) + minHeight
42 | End Function
43 |
44 | Public Shared Function ExpoEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
45 | If currentTime < duration / 2.0 Then
46 | Return Easings.ExpoEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
47 | End If
48 | Return Easings.ExpoEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
49 | End Function
50 |
51 | Public Shared Function CircEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
52 | Dim num As Double = 1.0
53 | Dim num2 As Double = currentTime / duration - 1.0
54 | currentTime = num2
55 | Return maxHeight * Math.Sqrt(num - num2 * currentTime) + minHeight
56 | End Function
57 |
58 | Public Shared Function CircEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
59 | Dim num As Double = 1.0
60 | Dim num2 As Double = currentTime / duration
61 | currentTime = num2
62 | Dim sqrt As Double = Math.Sqrt(num - num2 * currentTime)
63 | If Double.IsNaN(sqrt) Then
64 | sqrt = 0.0
65 | End If
66 | Return -maxHeight * (sqrt - 1.0) + minHeight
67 | End Function
68 |
69 | Public Shared Function CircEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
70 | Dim num As Double = currentTime / (duration / 2.0)
71 | currentTime = num
72 | If num < 1.0 Then
73 | Return -maxHeight / 2.0 * (Math.Sqrt(1.0 - currentTime * currentTime) - 1.0) + minHeight
74 | End If
75 | Dim num2 As Double = maxHeight / 2.0
76 | Dim num3 As Double = 1.0
77 | Dim num4 As Double = currentTime - 2.0
78 | currentTime = num4
79 | Return num2 * (Math.Sqrt(num3 - num4 * currentTime) + 1.0) + minHeight
80 | End Function
81 |
82 | Public Shared Function CircEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
83 | If currentTime < duration / 2.0 Then
84 | Return Easings.CircEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
85 | End If
86 | Return Easings.CircEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
87 | End Function
88 |
89 | Public Shared Function QuadEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
90 | Dim num As Double = -maxHeight
91 | Dim num2 As Double = currentTime / duration
92 | currentTime = num2
93 | Return num * num2 * (currentTime - 2.0) + minHeight
94 | End Function
95 |
96 | Public Shared Function QuadEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
97 | Dim num As Double = currentTime / duration
98 | currentTime = num
99 | Return maxHeight * num * currentTime + minHeight
100 | End Function
101 |
102 | Public Shared Function QuadEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
103 | Dim num As Double = currentTime / (duration / 2.0)
104 | currentTime = num
105 | If num < 1.0 Then
106 | Return maxHeight / 2.0 * currentTime * currentTime + minHeight
107 | End If
108 | Dim num2 As Double = -maxHeight / 2.0
109 | Dim num3 As Double = currentTime - 1.0
110 | currentTime = num3
111 | Return num2 * (num3 * (currentTime - 2.0) - 1.0) + minHeight
112 | End Function
113 |
114 | Public Shared Function QuadEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
115 | If currentTime < duration / 2.0 Then
116 | Return Easings.QuadEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
117 | End If
118 | Return Easings.QuadEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
119 | End Function
120 |
121 | Public Shared Function SineEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
122 | Return maxHeight * Math.Sin(currentTime / duration * 1.5707963267948966) + minHeight
123 | End Function
124 |
125 | Public Shared Function SineEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
126 | Return -maxHeight * Math.Cos(currentTime / duration * 1.5707963267948966) + maxHeight + minHeight
127 | End Function
128 |
129 | Public Shared Function SineEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
130 | Dim num As Double = currentTime / (duration / 2.0)
131 | currentTime = num
132 | If num < 1.0 Then
133 | Return maxHeight / 2.0 * Math.Sin(3.1415926535897931 * currentTime / 2.0) + minHeight
134 | End If
135 | Dim num2 As Double = -maxHeight / 2.0
136 | Dim num3 As Double = 3.1415926535897931
137 | Dim num4 As Double = currentTime - 1.0
138 | Return num2 * (Math.Cos(num3 * num4 / 2.0) - 2.0) + minHeight
139 | End Function
140 |
141 | Public Shared Function SineEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
142 | If currentTime < duration / 2.0 Then
143 | Return Easings.SineEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
144 | End If
145 | Return Easings.SineEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
146 | End Function
147 |
148 | Public Shared Function CubicEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
149 | Dim num As Double = currentTime / duration - 1.0
150 | currentTime = num
151 | Return maxHeight * (num * currentTime * currentTime + 1.0) + minHeight
152 | End Function
153 |
154 | Public Shared Function CubicEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
155 | Dim num As Double = currentTime / duration
156 | currentTime = num
157 | Return maxHeight * num * currentTime * currentTime + minHeight
158 | End Function
159 |
160 | Public Shared Function CubicEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
161 | Dim num As Double = currentTime / (duration / 2.0)
162 | currentTime = num
163 | If num < 1.0 Then
164 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime + minHeight
165 | End If
166 | Dim num2 As Double = maxHeight / 2.0
167 | Dim num3 As Double = currentTime - 2.0
168 | currentTime = num3
169 | Return num2 * (num3 * currentTime * currentTime + 2.0) + minHeight
170 | End Function
171 |
172 | Public Shared Function CubicEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
173 | If currentTime < duration / 2.0 Then
174 | Return Easings.CubicEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
175 | End If
176 | Return Easings.CubicEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
177 | End Function
178 |
179 | Public Shared Function QuartEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
180 | Dim num As Double = -maxHeight
181 | Dim num2 As Double = currentTime / duration - 1.0
182 | currentTime = num2
183 | Return num * (num2 * currentTime * currentTime * currentTime - 1.0) + minHeight
184 | End Function
185 |
186 | Public Shared Function QuartEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
187 | Dim num As Double = currentTime / duration
188 | currentTime = num
189 | Return maxHeight * num * currentTime * currentTime * currentTime + minHeight
190 | End Function
191 |
192 | Public Shared Function QuartEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
193 | Dim num As Double = currentTime / (duration / 2.0)
194 | currentTime = num
195 | If num < 1.0 Then
196 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime + minHeight
197 | End If
198 | Dim num2 As Double = -maxHeight / 2.0
199 | Dim num3 As Double = currentTime - 2.0
200 | currentTime = num3
201 | Return num2 * (num3 * currentTime * currentTime * currentTime - 2.0) + minHeight
202 | End Function
203 |
204 | Public Shared Function QuartEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
205 | If currentTime < duration / 2.0 Then
206 | Return Easings.QuartEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
207 | End If
208 | Return Easings.QuartEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
209 | End Function
210 |
211 | Public Shared Function QuintEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
212 | Dim num As Double = currentTime / duration - 1.0
213 | currentTime = num
214 | Return maxHeight * (num * currentTime * currentTime * currentTime * currentTime + 1.0) + minHeight
215 | End Function
216 |
217 | Public Shared Function QuintEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
218 | Dim num As Double = currentTime / duration
219 | currentTime = num
220 | Return maxHeight * num * currentTime * currentTime * currentTime * currentTime + minHeight
221 | End Function
222 |
223 | Public Shared Function QuintEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
224 | Dim num As Double = currentTime / (duration / 2.0)
225 | currentTime = num
226 | If num < 1.0 Then
227 | Return maxHeight / 2.0 * currentTime * currentTime * currentTime * currentTime * currentTime + minHeight
228 | End If
229 | Dim num2 As Double = maxHeight / 2.0
230 | Dim num3 As Double = currentTime - 2.0
231 | currentTime = num3
232 | Return num2 * (num3 * currentTime * currentTime * currentTime * currentTime + 2.0) + minHeight
233 | End Function
234 |
235 | Public Shared Function QuintEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
236 | If currentTime < duration / 2.0 Then
237 | Return Easings.QuintEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
238 | End If
239 | Return Easings.QuintEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
240 | End Function
241 |
242 | Public Shared Function ElasticEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
243 | Dim num As Double = currentTime / duration
244 | currentTime = num
245 | If num = 1.0 Then
246 | Return minHeight + maxHeight
247 | End If
248 | Dim p As Double = duration * 0.3
249 | Dim s As Double = p / 4.0
250 | Return maxHeight * Math.Pow(2.0, -10.0 * currentTime) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) + maxHeight + minHeight
251 | End Function
252 |
253 | Public Shared Function ElasticEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
254 | Dim num As Double = currentTime / duration
255 | currentTime = num
256 | If num = 1.0 Then
257 | Return minHeight + maxHeight
258 | End If
259 | Dim p As Double = duration * 0.3
260 | Dim s As Double = p / 4.0
261 | Dim x As Double = 2.0
262 | Dim num2 As Double = 10.0
263 | Dim num3 As Double = currentTime - 1.0
264 | currentTime = num3
265 | Return -(maxHeight * Math.Pow(x, num2 * num3) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight
266 | End Function
267 |
268 | Public Shared Function ElasticEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
269 | Dim num As Double = currentTime / (duration / 2.0)
270 | currentTime = num
271 | If num = 2.0 Then
272 | Return minHeight + maxHeight
273 | End If
274 | Dim p As Double = duration * 0.44999999999999996
275 | Dim s As Double = p / 4.0
276 | If currentTime < 1.0 Then
277 | Dim num2 As Double = -0.5
278 | Dim x As Double = 2.0
279 | Dim num3 As Double = 10.0
280 | Dim num4 As Double = currentTime - 1.0
281 | currentTime = num4
282 | Return num2 * (maxHeight * Math.Pow(x, num3 * num4) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p)) + minHeight
283 | End If
284 | Dim x2 As Double = 2.0
285 | Dim num5 As Double = -10.0
286 | Dim num6 As Double = currentTime - 1.0
287 | currentTime = num6
288 | Return maxHeight * Math.Pow(x2, num5 * num6) * Math.Sin((currentTime * duration - s) * 6.2831853071795862 / p) * 0.5 + maxHeight + minHeight
289 | End Function
290 |
291 | Public Shared Function ElasticEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
292 | If currentTime < duration / 2.0 Then
293 | Return Easings.ElasticEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
294 | End If
295 | Return Easings.ElasticEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
296 | End Function
297 |
298 | Public Shared Function BounceEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
299 | Dim num As Double = currentTime / duration
300 | currentTime = num
301 | If num < 0.36363636363636365 Then
302 | Return maxHeight * (7.5625 * currentTime * currentTime) + minHeight
303 | End If
304 | If currentTime < 0.72727272727272729 Then
305 | Dim num2 As Double = 7.5625
306 | Dim num3 As Double = currentTime - 0.54545454545454541
307 | currentTime = num3
308 | Return maxHeight * (num2 * num3 * currentTime + 0.75) + minHeight
309 | End If
310 | If currentTime < 0.90909090909090906 Then
311 | Dim num4 As Double = 7.5625
312 | Dim num5 As Double = currentTime - 0.81818181818181823
313 | currentTime = num5
314 | Return maxHeight * (num4 * num5 * currentTime + 0.9375) + minHeight
315 | End If
316 | Dim num6 As Double = 7.5625
317 | Dim num7 As Double = currentTime - 0.95454545454545459
318 | currentTime = num7
319 | Return maxHeight * (num6 * num7 * currentTime + 0.984375) + minHeight
320 | End Function
321 |
322 | Public Shared Function BounceEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
323 | Return maxHeight - Easings.BounceEaseOut(duration - currentTime, 0.0, maxHeight, duration) + minHeight
324 | End Function
325 |
326 | Public Shared Function BounceEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
327 | If currentTime < duration / 2.0 Then
328 | Return Easings.BounceEaseIn(currentTime * 2.0, 0.0, maxHeight, duration) * 0.5 + minHeight
329 | End If
330 | Return Easings.BounceEaseOut(currentTime * 2.0 - duration, 0.0, maxHeight, duration) * 0.5 + maxHeight * 0.5 + minHeight
331 | End Function
332 |
333 | Public Shared Function BounceEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
334 | If currentTime < duration / 2.0 Then
335 | Return Easings.BounceEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
336 | End If
337 | Return Easings.BounceEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
338 | End Function
339 |
340 | Public Shared Function BackEaseOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
341 | Dim num As Double = currentTime / duration - 1.0
342 | currentTime = num
343 | Return maxHeight * (num * currentTime * (2.70158 * currentTime + 1.70158) + 1.0) + minHeight
344 | End Function
345 |
346 | Public Shared Function BackEaseIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
347 | Dim num As Double = currentTime / duration
348 | currentTime = num
349 | Return maxHeight * num * currentTime * (2.70158 * currentTime - 1.70158) + minHeight
350 |
351 | End Function
352 |
353 | Public Shared Function BackEaseInOut(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
354 | Dim s As Double = 1.70158
355 | Dim num As Double = currentTime / (duration / 2.0)
356 | currentTime = num
357 | If num < 1.0 Then
358 | Dim num2 As Double = maxHeight / 2.0
359 | Dim num3 As Double = currentTime * currentTime
360 | Dim num4 As Double = s * 1.525
361 | s = num4
362 | Return num2 * (num3 * ((num4 + 1.0) * currentTime - s)) + minHeight
363 | End If
364 | Dim num5 As Double = maxHeight / 2.0
365 | Dim num6 As Double = currentTime - 2.0
366 | currentTime = num6
367 | Dim num7 As Double = num6 * currentTime
368 | Dim num8 As Double = s * 1.525
369 | s = num8
370 | Return num5 * (num7 * ((num8 + 1.0) * currentTime + s) + 2.0) + minHeight
371 | End Function
372 |
373 | Public Shared Function BackEaseOutIn(currentTime As Double, minHeight As Double, maxHeight As Double, duration As Double) As Double
374 | If currentTime < duration / 2.0 Then
375 | Return Easings.BackEaseOut(currentTime * 2.0, minHeight, maxHeight / 2.0, duration)
376 | End If
377 | Return Easings.BackEaseIn(currentTime * 2.0 - duration, minHeight + maxHeight / 2.0, maxHeight / 2.0, duration)
378 | End Function
379 |
380 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/MSAA.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Imports System.Runtime.InteropServices
4 | Imports System.Text
5 | Imports Accessibility
6 |
7 | Public Class MSAA
8 |
9 |
10 | Public Shared Function WindowFromAccessibleObject(ByVal pacc As IAccessible, ByRef phwnd As IntPtr) As UInteger
11 |
12 | End Function
13 |
14 |
15 | 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
16 |
17 | End Function
18 |
19 | Private Declare Function AccessibleObjectFromWindow Lib "oleacc" (ByVal Hwnd As Int32, ByVal dwId As Int32, ByRef riid As Guid, ByRef ppvObject As Object) As Int32
20 |
21 |
22 | Public Shared Function GetStateText(ByVal dwStateBit As UInteger, ByVal lpszStateBit As StringBuilder, ByVal cchStateBitMax As UInteger) As UInteger
23 | End Function
24 |
25 | Public Shared guidAccessible As New Guid("{618736E0-3C3D-11CF-810C-00AA00389B71}")
26 |
27 | Public Shared Function GetAccessibleChildren(ByVal objAccessible As IAccessible) As IAccessible()
28 | Dim childCount As Integer
29 | Try
30 | childCount = objAccessible.accChildCount
31 | Catch ex As Exception
32 | childCount = 0
33 | End Try
34 |
35 | Dim accObjects = New IAccessible((childCount) - 1) {}
36 | Dim count As Integer = 0
37 |
38 | ''Console.WriteLine(count)
39 |
40 | If (childCount <> 0) Then
41 |
42 | AccessibleChildren(objAccessible, 0, childCount, accObjects, count)
43 | End If
44 |
45 | Return accObjects
46 | End Function
47 |
48 | Public Shared Function GetAccessibleObjectFromHandle(ByVal hwnd As IntPtr) As IAccessible
49 | Dim accObject As Object = New Object
50 | Dim objAccessible As IAccessible = Nothing
51 | If (hwnd <> CType(0, IntPtr)) Then
52 | AccessibleObjectFromWindow(CInt(CType(hwnd, IntPtr)), 0, guidAccessible, accObject)
53 | objAccessible = CType(accObject, IAccessible)
54 | End If
55 |
56 | Return objAccessible
57 | End Function
58 |
59 | Public Shared Function GetStateTextFunc(ByVal stateID As UInteger) As String
60 | Dim maxLength As UInteger = 1024
61 | Dim focusableStateText = New StringBuilder(CInt(maxLength))
62 | Dim sizeableStateText = New StringBuilder(CInt(maxLength))
63 | Dim moveableStateText = New StringBuilder(CInt(maxLength))
64 | Dim invisibleStateText = New StringBuilder(CInt(maxLength))
65 | Dim pressedStateText = New StringBuilder(CInt(maxLength))
66 | Dim hasPopupStateText = New StringBuilder(CInt(maxLength))
67 |
68 | If stateID = (MSAAStateConstants.STATE_SYSTEM_INVISIBLE Or MSAAStateConstants.STATE_SYSTEM_FOCUSABLE Or MSAAStateConstants.STATE_SYSTEM_HASPOPUP) Then
69 | GetStateText(MSAAStateConstants.STATE_SYSTEM_INVISIBLE, invisibleStateText, maxLength)
70 | GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)
71 | GetStateText(MSAAStateConstants.STATE_SYSTEM_HASPOPUP, hasPopupStateText, maxLength)
72 |
73 | Return invisibleStateText.ToString & "," & focusableStateText.ToString & "," & hasPopupStateText.ToString
74 | End If
75 |
76 | If stateID = (MSAAStateConstants.STATE_SYSTEM_PRESSED Or MSAAStateConstants.STATE_SYSTEM_INVISIBLE Or MSAAStateConstants.STATE_SYSTEM_FOCUSABLE) Then
77 | GetStateText(MSAAStateConstants.STATE_SYSTEM_PRESSED, pressedStateText, maxLength)
78 | GetStateText(MSAAStateConstants.STATE_SYSTEM_INVISIBLE, invisibleStateText, maxLength)
79 | GetStateText(MSAAStateConstants.STATE_SYSTEM_PRESSED, focusableStateText, maxLength)
80 |
81 | Return pressedStateText.ToString & "," & focusableStateText.ToString & "," & focusableStateText.ToString
82 | End If
83 |
84 | If stateID = (MSAAStateConstants.STATE_SYSTEM_FOCUSABLE Or MSAAStateConstants.STATE_SYSTEM_HASPOPUP) Then
85 | GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)
86 | GetStateText(MSAAStateConstants.STATE_SYSTEM_HASPOPUP, hasPopupStateText, maxLength)
87 |
88 | Return focusableStateText.ToString & "," & hasPopupStateText.ToString
89 | End If
90 |
91 | If stateID = (MSAAStateConstants.STATE_SYSTEM_FOCUSABLE) Then
92 | GetStateText(MSAAStateConstants.STATE_SYSTEM_FOCUSABLE, focusableStateText, maxLength)
93 | Return focusableStateText.ToString
94 | End If
95 |
96 | Dim stateText = New StringBuilder(CInt(maxLength))
97 | GetStateText(stateID, stateText, maxLength)
98 | Return stateText.ToString()
99 | End Function
100 |
101 | End Class
102 |
103 | Class MSAAStateConstants
104 |
105 | Public Shared STATE_SYSTEM_ALERT_HIGH As UInteger = 268435456
106 |
107 | Public Shared STATE_SYSTEM_ALERT_LOW As UInteger = 67108864
108 |
109 | Public Shared STATE_SYSTEM_ALERT_MEDIUM As UInteger = 134217728
110 |
111 | Public Shared STATE_SYSTEM_ANIMATED As UInteger = 16384
112 |
113 | Public Shared STATE_SYSTEM_BUSY As UInteger = 2048
114 |
115 | Public Shared STATE_SYSTEM_CHECKED As UInteger = 16
116 |
117 | Public Shared STATE_SYSTEM_COLLAPSED As UInteger = 1024
118 |
119 | Public Shared STATE_SYSTEM_DEFAULT As UInteger = 256
120 |
121 | Public Shared STATE_SYSTEM_EXPANDED As UInteger = 512
122 |
123 | Public Shared STATE_SYSTEM_EXTSELECTABLE As UInteger = 33554432
124 |
125 | Public Shared STATE_SYSTEM_FLOATING As UInteger = 4096
126 |
127 | Public Shared STATE_SYSTEM_FOCUSABLE As UInteger = 1048576
128 |
129 | Public Shared STATE_SYSTEM_FOCUSED As UInteger = 4
130 |
131 | Public Shared STATE_SYSTEM_HASPOPUP As UInteger = 1073741824
132 |
133 | Public Shared STATE_SYSTEM_HOTTRACKED As UInteger = 128
134 |
135 | Public Shared STATE_SYSTEM_INVISIBLE As UInteger = 32768
136 |
137 | Public Shared STATE_SYSTEM_LINKED As UInteger = 4194304
138 |
139 | Public Shared STATE_SYSTEM_MARQUEED As UInteger = 8192
140 |
141 | Public Shared STATE_SYSTEM_MIXED As UInteger = 32
142 |
143 | Public Shared STATE_SYSTEM_MOVEABLE As UInteger = 262144
144 |
145 | Public Shared STATE_SYSTEM_MULTISELECTABLE As UInteger = 16777216
146 |
147 | Public Shared STATE_SYSTEM_NORMAL As UInteger = 0
148 |
149 | Public Shared STATE_SYSTEM_OFFSCREEN As UInteger = 65536
150 |
151 | Public Shared STATE_SYSTEM_PRESSED As UInteger = 8
152 |
153 | Public Shared STATE_SYSTEM_READONLY As UInteger = 64
154 |
155 | Public Shared STATE_SYSTEM_SELECTABLE As UInteger = 2097152
156 |
157 | Public Shared STATE_SYSTEM_SELECTED As UInteger = 2
158 |
159 | Public Shared STATE_SYSTEM_SELFVOICING As UInteger = 524288
160 |
161 | Public Shared STATE_SYSTEM_SIZEABLE As UInteger = 131072
162 |
163 | Public Shared STATE_SYSTEM_TRAVERSED As UInteger = 8388608
164 |
165 | Public Shared STATE_SYSTEM_UNAVAILABLE As UInteger = 1
166 |
167 | Public Shared STATE_SYSTEM_VALID As UInteger = 536870911
168 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/Main.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 |
4 | Imports System.Text
5 | Imports System.Threading
6 |
7 |
8 | Public Class Main
9 |
10 | Public Shared noty As New NotifyIcon
11 |
12 | Public Shared Sub Main()
13 | Try
14 |
15 |
16 | 'Set default settings
17 | Settings.TaskbarStyle = 0
18 | Settings.PrimaryTaskbarOffset = 0
19 | Settings.SecondaryTaskbarOffset = 0
20 | Settings.CenterPrimaryOnly = 0
21 | Settings.CenterSecondaryOnly = 0
22 | Settings.AnimationStyle = "cubiceaseinout"
23 | Settings.AnimationSpeed = 300
24 | Settings.LoopRefreshRate = 400
25 | Settings.CenterInBetween = 0
26 | Settings.DontCenterTaskbar = 0
27 | Settings.FixToolbarsOnTrayChange = 1
28 | Settings.OnBatteryAnimationStyle = "cubiceaseinout"
29 | Settings.OnBatteryLoopRefreshRate = 400
30 | Settings.RevertZeroBeyondTray = 1
31 | Settings.TaskbarRounding = 0
32 | Settings.TaskbarSegments = 0
33 |
34 | Dim stopgiven As Boolean = False
35 |
36 | 'Read the arguments for the settings
37 | Dim arguments() As String = Environment.GetCommandLineArgs
38 | For Each argument In arguments
39 | Dim val() As String = Split(argument, "=")
40 | If argument.Contains("-stop") Then
41 | stopgiven = True
42 | End If
43 | If argument.Contains("-showstartmenu") Then
44 | Win32.ShowStartMenu()
45 | End
46 | End If
47 | If argument.Contains("-console=") Then
48 | Win32.AllocConsole()
49 | Settings.ConsoleEnabled = 1
50 | End If
51 | If argument.Contains("-tbs=") Then
52 | Settings.TaskbarStyle = CInt(val(1))
53 | End If
54 |
55 | If argument.Contains("-color=") Then
56 | Dim colorval As String = val(1)
57 | Dim colorsep = colorval.Split(CType(";", Char()))
58 |
59 | Settings.TaskbarStyleRed = CInt(colorsep(0))
60 | Settings.TaskbarStyleGreen = CInt(colorsep(1))
61 | Settings.TaskbarStyleBlue = CInt(colorsep(2))
62 | Settings.TaskbarStyleAlpha = CInt(colorsep(3))
63 | End If
64 |
65 | If argument.Contains("-ptbo=") Then
66 | Settings.PrimaryTaskbarOffset = CInt(val(1))
67 | End If
68 | If argument.Contains("-stbo=") Then
69 | Settings.SecondaryTaskbarOffset = CInt(val(1))
70 | End If
71 | If argument.Contains("-cpo=") Then
72 | Settings.CenterPrimaryOnly = CInt(val(1))
73 | End If
74 | If argument.Contains("-cso=") Then
75 | Settings.CenterSecondaryOnly = CInt(val(1))
76 | End If
77 | If argument.Contains("-as=") Then
78 | Settings.AnimationStyle = CType(val(1), String)
79 | End If
80 | If argument.Contains("-asp=") Then
81 | Settings.AnimationSpeed = CInt(val(1))
82 | End If
83 | If argument.Contains("-lr=") Then
84 | Settings.LoopRefreshRate = CInt(val(1))
85 | End If
86 | If argument.Contains("-cib=") Then
87 | Settings.CenterInBetween = CInt(val(1))
88 | End If
89 | If argument.Contains("-obas=") Then
90 | Settings.OnBatteryAnimationStyle = CType(val(1), String)
91 | End If
92 | If argument.Contains("-oblr=") Then
93 | Settings.OnBatteryLoopRefreshRate = CInt(val(1))
94 | End If
95 | If argument.Contains("-ftotc=") Then
96 | Settings.FixToolbarsOnTrayChange = CInt(val(1))
97 | End If
98 | If argument.Contains("-rzbt=") Then
99 | Settings.RevertZeroBeyondTray = CInt(val(1))
100 | End If
101 | If argument.Contains("-sr=") Then
102 | Settings.SkipResolution = CInt(val(1))
103 | End If
104 | If argument.Contains("-sr2=") Then
105 | Settings.SkipResolution2 = CInt(val(1))
106 | End If
107 | If argument.Contains("-sr3=") Then
108 | Settings.SkipResolution3 = CInt(val(1))
109 | End If
110 | If argument.Contains("-dtbsowm=") Then
111 | Settings.DefaultTaskbarStyleOnWinMax = CInt(val(1))
112 | End If
113 | If argument.Contains("-cfsa=") Then
114 | Settings.CheckFullscreenApp = CInt(val(1))
115 | End If
116 | If argument.Contains("-dct=") Then
117 | Settings.DontCenterTaskbar = CInt(val(1))
118 | End If
119 | If argument.Contains("-hps=") Then
120 | Settings.HidePrimaryStartButton = CInt(val(1))
121 | End If
122 | If argument.Contains("-hss=") Then
123 | Settings.HideSecondaryStartButton = CInt(val(1))
124 | End If
125 | If argument.Contains("-hpt=") Then
126 | Settings.HidePrimaryNotifyWnd = CInt(val(1))
127 | End If
128 | If argument.Contains("-hst=") Then
129 | Settings.HideSecondaryNotifyWnd = CInt(val(1))
130 | End If
131 | If argument.Contains("-sti=") Then
132 | ''Settings.ShowTrayIcon = CInt(val(1))
133 | Settings.ShowTrayIcon = CInt(0)
134 | End If
135 | If argument.Contains("-tbsom=") Then
136 | Settings.TaskbarStyleOnMax = CInt(val(1))
137 | End If
138 | If argument.Contains("-stsb=") Then
139 | Settings.StickyStartButton = CInt(val(1))
140 | End If
141 | If argument.Contains("-tpop=") Then
142 | Settings.TotalPrimaryOpacity = CInt(val(1))
143 | End If
144 | If argument.Contains("-tsop=") Then
145 | Settings.TotalSecondaryOpacity = CInt(val(1))
146 | End If
147 | If argument.Contains("-tbr=") Then
148 | Settings.TaskbarRounding = CInt(val(1))
149 | End If
150 | If argument.Contains("-tbsg=") Then
151 | Settings.TaskbarSegments = CInt(val(1))
152 | End If
153 | Next
154 |
155 | 'Kill every other running instance of TaskbarX
156 | Try
157 | For Each prog As Process In Process.GetProcessesByName("TaskbarX")
158 | If Not prog.Id = Process.GetCurrentProcess.Id Then
159 | prog.Kill()
160 | End If
161 | Next
162 | Catch
163 | End Try
164 |
165 | 'If animation speed is lower than 1 then make it 1. Otherwise it will give an error.
166 | If Settings.AnimationSpeed <= 1 Then
167 | Settings.AnimationSpeed = 1
168 | End If
169 |
170 | 'Makes the animations run smoother
171 | Dim currentProcess As Process = Process.GetCurrentProcess
172 | currentProcess.PriorityClass = ProcessPriorityClass.Idle
173 |
174 | 'Prevent wrong position calculations
175 | Win32.SetProcessDpiAwareness(Win32.PROCESS_DPI_AWARENESS.Process_Per_Monitor_DPI_Aware)
176 |
177 | 'Wait for Shell_TrayWnd
178 | Dim Handle As IntPtr
179 | Do
180 | Console.WriteLine("Waiting for Shell_TrayWnd")
181 | Handle = Nothing
182 | Thread.Sleep(250)
183 | Dim Shell_TrayWnd = Win32.FindWindowByClass("Shell_TrayWnd", CType(0, IntPtr))
184 | Dim TrayNotifyWnd = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), "TrayNotifyWnd", Nothing)
185 | Dim ReBarWindow32 = Win32.FindWindowEx(Shell_TrayWnd, CType(0, IntPtr), "ReBarWindow32", Nothing)
186 | Dim MSTaskSwWClass = Win32.FindWindowEx(ReBarWindow32, CType(0, IntPtr), "MSTaskSwWClass", Nothing)
187 | Dim MSTaskListWClass = Win32.FindWindowEx(MSTaskSwWClass, CType(0, IntPtr), "MSTaskListWClass", Nothing)
188 | Handle = MSTaskListWClass
189 | 'Lock the Taskbar
190 | ' Win32.PostMessage(Shell_TrayWnd, CUInt(&H111), CType(424, IntPtr), CType(vbNullString, IntPtr))
191 | Loop Until Not Handle = Nothing
192 |
193 |
194 | Dim Win11Taskbar = Win32.FindWindowEx(Win32.FindWindowByClass("Shell_TrayWnd", CType(0, IntPtr)), CType(0, IntPtr), "Windows.UI.Composition.DesktopWindowContentBridge", Nothing)
195 | If Not Win11Taskbar = CType(0, IntPtr) Then
196 | 'Windows 11 Taskbar present
197 | Settings.DontCenterTaskbar = CInt(Val(1))
198 | End If
199 |
200 |
201 | If stopgiven = True Then
202 | noty.Visible = False
203 | TaskbarCenter.RevertToZero()
204 | ResetTaskbarStyle()
205 | End
206 | End If
207 |
208 |
209 |
210 | If Settings.ShowTrayIcon = 1 Then
211 | TrayIconBuster.TrayIconBuster.RemovePhantomIcons()
212 | End If
213 |
214 | 'Just empty startup memory before starting
215 | ClearMemory()
216 |
217 | 'Reset the taskbar style...
218 | ResetTaskbarStyle()
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 | If Settings.ShowTrayIcon = 1 Then
228 |
229 |
230 | noty.Text = "TaskbarX (L = Restart) (M = Config) (R = Stop)"
231 | noty.Icon = My.Resources.icon
232 | noty.Visible = True
233 |
234 |
235 | End If
236 |
237 | AddHandler noty.MouseClick, AddressOf MnuRef_Click
238 |
239 |
240 |
241 | 'Start the TaskbarCenterer
242 | If Not Settings.DontCenterTaskbar = 1 Then
243 | Dim t1 As Thread = New Thread(AddressOf TaskbarCenter.TaskbarCenterer)
244 | t1.Start()
245 | End If
246 |
247 | 'Start the TaskbarStyler if enabled
248 | If Settings.TaskbarStyle = 1 Or Settings.TaskbarStyle = 2 Or Settings.TaskbarStyle = 3 Or Settings.TaskbarStyle = 4 Or Settings.TaskbarStyle = 5 Then
249 | Dim t2 As Thread = New Thread(AddressOf TaskbarStyle.TaskbarStyler)
250 | t2.Start()
251 | End If
252 | Catch ex As Exception
253 | Console.WriteLine(ex.Message)
254 | End Try
255 | End Sub
256 |
257 |
258 |
259 |
260 | Public Shared Sub Toaster(ByVal message As String)
261 | noty.BalloonTipTitle = "TaskbarX"
262 | noty.BalloonTipText = message
263 | noty.Visible = True
264 | noty.ShowBalloonTip(3000)
265 | End Sub
266 |
267 | Public Shared Sub MnuRef_Click(sender As Object, e As MouseEventArgs)
268 |
269 | If (e.Button = MouseButtons.Left) Then
270 | noty.Visible = False
271 | Application.Restart()
272 | ElseIf (e.Button = MouseButtons.Right) Then
273 | noty.Visible = False
274 | TaskbarCenter.RevertToZero()
275 | ResetTaskbarStyle()
276 | End
277 | ElseIf (e.Button = MouseButtons.Middle) Then
278 | If System.AppDomain.CurrentDomain.BaseDirectory.Contains("40210ChrisAndriessen") Then
279 | Try
280 | Dim processInfo As ProcessStartInfo = New ProcessStartInfo With {
281 | .WindowStyle = ProcessWindowStyle.Hidden,
282 | .FileName = "cmd.exe",
283 | .Arguments = " /c start shell:AppsFolder\40210ChrisAndriessen.FalconX_y1dazs5f5wq00!TaskbarXGUI"
284 | }
285 | Process.Start(processInfo)
286 | Catch
287 | End Try
288 | Else
289 | Try
290 | System.Diagnostics.Process.Start("TaskbarX Configurator.exe")
291 | Catch
292 | End Try
293 | End If
294 | End If
295 |
296 | End Sub
297 |
298 | #Region "Commands"
299 |
300 | Public Declare Function EnumWindows Lib "user32" (ByVal Adress As CallBack, ByVal y As Integer) As Integer
301 |
302 | Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
303 |
304 | Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)
305 |
306 | Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)
307 | windowHandles.Clear()
308 | EnumWindows(AddressOf Enumerator, 0)
309 |
310 | Dim maintaskbarfound As Boolean = False
311 | Dim sectaskbarfound As Boolean = False
312 |
313 | For Each Taskbar In windowHandles
314 | Dim sClassName As New StringBuilder("", 256)
315 | Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)
316 | If sClassName.ToString = "Shell_TrayWnd" Then
317 | maintaskbarfound = True
318 | End If
319 | If sClassName.ToString = "Shell_SecondaryTrayWnd" Then
320 | sectaskbarfound = True
321 | End If
322 | Console.WriteLine("=" & maintaskbarfound)
323 | Next
324 |
325 | If maintaskbarfound = False Then
326 | Try
327 | windowHandles.Add(Win32.FindWindow("Shell_TrayWnd", Nothing))
328 | Catch
329 | End Try
330 | End If
331 |
332 | If sectaskbarfound = False Then
333 | If Screen.AllScreens.Count >= 2 Then
334 | ''MsgBox(Screen.AllScreens.Count)
335 | Try
336 | windowHandles.Add(Win32.FindWindow("Shell_SecondaryTrayWnd", Nothing))
337 | Catch
338 | End Try
339 | End If
340 | End If
341 |
342 |
343 | Return ActiveWindows
344 | End Function
345 |
346 | Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
347 | Dim sClassName As New StringBuilder("", 256)
348 | Call Win32.GetClassName(hwnd, sClassName, 256)
349 | If sClassName.ToString = "Shell_TrayWnd" Or sClassName.ToString = "Shell_SecondaryTrayWnd" Then
350 | windowHandles.Add(hwnd)
351 | End If
352 | Return True
353 | End Function
354 |
355 | Public Shared windowHandles As ArrayList = New ArrayList()
356 |
357 | Public Shared Sub ResetTaskbarStyle()
358 |
359 |
360 |
361 | GetActiveWindows()
362 |
363 |
364 |
365 | Dim trays As New ArrayList
366 | For Each trayWnd As IntPtr In windowHandles
367 | ''Console.WriteLine(trayWnd)
368 | trays.Add(trayWnd)
369 | Next
370 |
371 | For Each tray As IntPtr In trays
372 | Dim trayptr As IntPtr = tray
373 |
374 |
375 | Win32.SendMessage(trayptr, Win32.WM_THEMECHANGED, True, 0)
376 | Win32.SendMessage(trayptr, Win32.WM_DWMCOLORIZATIONCOLORCHANGED, True, 0)
377 | Win32.SendMessage(trayptr, Win32.WM_DWMCOMPOSITIONCHANGED, True, 0)
378 |
379 |
380 |
381 | Dim tt As New Win32.RECT
382 | Win32.GetClientRect(trayptr, tt)
383 |
384 |
385 |
386 | ''Win32.SetWindowRgn(CType(trayptr, IntPtr), Win32.CreateRoundRectRgn(-1, -1, tt.Right + 1, tt.Bottom - tt.Top + 1, -1, -1), True)
387 | Win32.SetWindowRgn(CType(trayptr, IntPtr), Win32.CreateRectRgn(tt.Left, tt.Top, tt.Right, tt.Bottom), True)
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 | Next
396 |
397 |
398 | End Sub
399 |
400 | Public Shared Sub RestartExplorer()
401 | For Each MyProcess In Process.GetProcessesByName("explorer")
402 | MyProcess.Kill()
403 | Next
404 | End Sub
405 |
406 | Public Shared Function ClearMemory() As Int32
407 | GC.Collect()
408 | GC.WaitForPendingFinalizers()
409 | GC.Collect()
410 | Return Win32.SetProcessWorkingSetSize(Diagnostics.Process.GetCurrentProcess.Handle, -1, -1)
411 | End Function
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 | #End Region
421 |
422 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | false
5 | 0
6 | true
7 | 0
8 | true
9 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System.Reflection
2 | Imports System.Runtime.InteropServices
3 |
4 | ' General Information about an assembly is controlled through the following
5 | ' set of attributes. Change these attribute values to modify the information
6 | ' associated with an assembly.
7 |
8 | ' Review the values of the assembly attributes
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | 'The following GUID is for the ID of the typelib if this project is exposed to COM
20 |
21 |
22 | ' Version information for an assembly consists of the following four values:
23 | '
24 | ' Major Version
25 | ' Minor Version
26 | ' Build Number
27 | ' Revision
28 | '
29 | ' You can specify all the values or you can default the Build and Revision Numbers
30 | ' by using the '*' as shown below:
31 | '
32 |
33 |
34 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'This class was auto-generated by the StronglyTypedResourceBuilder
19 | 'class via a tool like ResGen or Visual Studio.
20 | 'To add or remove a member, edit your .ResX file then rerun ResGen
21 | 'with the /str option, or rebuild your VS project.
22 | '''
23 | ''' A strongly-typed resource class, for looking up localized strings, etc.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Returns the cached ResourceManager instance used by this class.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("TaskbarX.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Overrides the current thread's CurrentUICulture property for all
51 | ''' resource lookups using this strongly typed resource class.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 |
63 | '''
64 | ''' Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
65 | '''
66 | Friend ReadOnly Property icon() As System.Drawing.Icon
67 | Get
68 | Dim obj As Object = ResourceManager.GetObject("icon", resourceCulture)
69 | Return CType(obj,System.Drawing.Icon)
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.TaskbarX.My.MySettings
68 | Get
69 | Return Global.TaskbarX.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/My Project/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
59 |
60 |
61 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/Resources/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX/TaskbarX/Resources/icon.ico
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/Settings.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Public Class Settings
4 | Public Shared Pause As Boolean
5 |
6 | Public Shared TaskbarStyle As Integer
7 | Public Shared SecondaryTaskbarStyle As Integer
8 | Public Shared PrimaryTaskbarOffset As Integer
9 | Public Shared SecondaryTaskbarOffset As Integer
10 | Public Shared CenterPrimaryOnly As Integer
11 | Public Shared CenterSecondaryOnly As Integer
12 | Public Shared AnimationStyle As String
13 | Public Shared AnimationSpeed As Integer
14 | Public Shared LoopRefreshRate As Integer
15 | Public Shared CenterInBetween As Integer
16 | Public Shared FixToolbarsOnTrayChange As Integer
17 | Public Shared SkipResolution As Integer
18 | Public Shared SkipResolution2 As Integer
19 | Public Shared SkipResolution3 As Integer
20 | Public Shared CheckFullscreenApp As Integer
21 | Public Shared DefaultTaskbarStyleOnWinMax As Integer
22 | Public Shared DontCenterTaskbar As Integer
23 | Public Shared HidePrimaryStartButton As Integer
24 | Public Shared HideSecondaryStartButton As Integer
25 | Public Shared HidePrimaryNotifyWnd As Integer
26 | Public Shared HideSecondaryNotifyWnd As Integer
27 | Public Shared ShowTrayIcon As Integer
28 | Public Shared TaskbarStyleOnMax As Integer
29 | Public Shared TaskbarStyleRed As Integer
30 | Public Shared TaskbarStyleGreen As Integer
31 | Public Shared TaskbarStyleBlue As Integer
32 | Public Shared TaskbarStyleAlpha As Integer
33 | Public Shared ConsoleEnabled As Integer
34 | Public Shared StickyStartButton As Integer
35 | Public Shared TotalPrimaryOpacity As Integer
36 | Public Shared TotalSecondaryOpacity As Integer
37 | Public Shared RevertZeroBeyondTray As Integer
38 | Public Shared TaskbarRounding As Integer
39 | Public Shared TaskbarSegments As Integer
40 |
41 | Public Shared UseUIA As Integer
42 |
43 | 'If on battery TaskbarX will override with these
44 | Public Shared OnBatteryAnimationStyle As String
45 |
46 | Public Shared OnBatteryLoopRefreshRate As Integer
47 |
48 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/StoreLogo-71.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX/TaskbarX/StoreLogo-71.ico
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TaskbarAnimate.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Public Class TaskbarAnimate
4 |
5 | Public Shared current As New ArrayList
6 |
7 | 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)
8 |
9 |
10 | Try
11 |
12 | If Math.Abs(CInt((valueToReach - oldpos))) = 0 Then
13 | 'The difference is 0 so there is no need to trigger the animator.
14 | Exit Sub
15 | End If
16 |
17 |
18 |
19 | If Settings.RevertZeroBeyondTray = 1 Then
20 | 'Prevent moving beyond Tray area.
21 | Dim TrayPos2 As Win32.RECT
22 | Win32.GetWindowRect(Win32.GetParent(hwnd), TrayPos2)
23 | Dim rightposition = valueToReach + width
24 |
25 | If orient = "H" Then
26 | If rightposition >= TrayPos2.Right - TrayPos2.Left Then
27 | 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)
28 | Exit Sub
29 | End If
30 | Else
31 | If rightposition >= TrayPos2.Bottom - TrayPos2.Top Then
32 | 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)
33 | Exit Sub
34 | End If
35 | End If
36 | End If
37 |
38 |
39 | If valueToReach = oldpos Or Math.Abs(CInt((valueToReach - oldpos))) <= 10 Then
40 | 'Prevent Wiggling (if the new position has a difference of 10 or lower then there is no reason to move)
41 | Exit Sub
42 | End If
43 |
44 | For Each tt In current
45 | If CType(tt, IntPtr) = hwnd Then
46 | 'If hwnd is already getting animated then hwnd is in this arraylist and exit the animator because it's uneeded.
47 | Exit Sub
48 | End If
49 | Next
50 |
51 | ' Console.WriteLine(CInt((valueToReach - oldpos).ToString.Replace("-", "")))
52 |
53 | current.Add(hwnd)
54 |
55 | Dim sw As New Stopwatch
56 | Dim originalValue As Integer = oldpos
57 | Dim elapsed As New Integer
58 | Dim minValue As Integer
59 |
60 | If originalValue <= valueToReach Then
61 | minValue = originalValue
62 | Else
63 | minValue = valueToReach
64 | End If
65 |
66 | Dim maxValue As Integer = Math.Abs(CInt((valueToReach - originalValue)))
67 | Dim increasing As Boolean = originalValue < valueToReach
68 |
69 | elapsed = 0
70 | sw.Start()
71 |
72 | If isPrimary = True Then
73 | TaskbarCenter.isanimating = True
74 | End If
75 |
76 | While Not elapsed >= duration
77 |
78 | elapsed = CInt(sw.ElapsedMilliseconds)
79 |
80 | Dim newValue As Integer = CInt((easing(elapsed, minValue, maxValue, duration)))
81 |
82 | If Not increasing Then
83 | newValue = (originalValue + valueToReach) - newValue
84 | End If
85 |
86 | If orient = "H" Then
87 | 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)
88 | Else
89 | 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)
90 | End If
91 | End While
92 |
93 | If isPrimary = True Then
94 | TaskbarCenter.isanimating = False
95 | End If
96 |
97 | sw.Stop()
98 | current.Remove(hwnd)
99 |
100 | Main.ClearMemory()
101 | Catch ex As Exception
102 | Console.WriteLine(ex.Message)
103 | End Try
104 |
105 | End Sub
106 |
107 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TaskbarStyle.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Imports System.Drawing
4 | Imports System.Runtime.InteropServices
5 | Imports System.Text
6 | Imports System.Threading
7 |
8 | Public Class TaskbarStyle
9 |
10 | Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
11 |
12 | Public Declare Function EnumWindows Lib "user32" (ByVal Adress As CallBack, ByVal y As Integer) As Integer
13 | Public Shared ActiveWindows As New System.Collections.ObjectModel.Collection(Of IntPtr)
14 |
15 | Public Shared Function GetActiveWindows() As ObjectModel.Collection(Of IntPtr)
16 | windowHandles.Clear()
17 | EnumWindows(AddressOf Enumerator, 0)
18 |
19 |
20 | Dim maintaskbarfound As Boolean = False
21 | Dim sectaskbarfound As Boolean = False
22 |
23 | For Each Taskbar In windowHandles
24 | Dim sClassName As New StringBuilder("", 256)
25 | Call Win32.GetClassName(CType(Taskbar, IntPtr), sClassName, 256)
26 | If sClassName.ToString = "Shell_TrayWnd" Then
27 | maintaskbarfound = True
28 | End If
29 | If sClassName.ToString = "Shell_SecondaryTrayWnd" Then
30 | sectaskbarfound = True
31 | End If
32 | Console.WriteLine("=" & maintaskbarfound)
33 | Next
34 |
35 | If maintaskbarfound = False Then
36 | Try
37 | windowHandles.Add(Win32.FindWindow("Shell_TrayWnd", Nothing))
38 | Catch
39 | End Try
40 | End If
41 |
42 | If sectaskbarfound = False Then
43 | If Screen.AllScreens.Count >= 2 Then
44 | ''MsgBox(Screen.AllScreens.Count)
45 | Try
46 | windowHandles.Add(Win32.FindWindow("Shell_SecondaryTrayWnd", Nothing))
47 | Catch
48 | End Try
49 | End If
50 | End If
51 |
52 |
53 |
54 | Return ActiveWindows
55 | End Function
56 |
57 | Public Shared windowHandles As ArrayList = New ArrayList()
58 | Public Shared maximizedwindows As ArrayList = New ArrayList()
59 | Public Shared trays As ArrayList = New ArrayList()
60 | Public Shared traysbackup As ArrayList = New ArrayList()
61 | Public Shared normalwindows As ArrayList = New ArrayList()
62 | Public Shared resetted As ArrayList = New ArrayList()
63 |
64 | Public Shared Function Enumerator(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
65 | Dim sClassName As New StringBuilder("", 256)
66 | Call Win32.GetClassName(hwnd, sClassName, 256)
67 | If sClassName.ToString = "Shell_TrayWnd" Or sClassName.ToString = "Shell_SecondaryTrayWnd" Then
68 | windowHandles.Add(hwnd)
69 | End If
70 | Return True
71 | End Function
72 |
73 | Shared Function IsPhanthom(ByVal hWnd As IntPtr) As Boolean
74 | Dim CloakedVal As Integer
75 | Dim hRes As Integer = Win32.DwmGetWindowAttribute(hWnd, Win32.DWMWINDOWATTRIBUTE.Cloaked, CloakedVal, Len(CloakedVal))
76 | If hRes = Not 0 Then
77 | CloakedVal = 0
78 | End If
79 | Return If(CBool(CloakedVal), True, False)
80 | End Function
81 |
82 | Public Shared Function Enumerator2(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
83 | Try
84 | Dim intRet As Integer
85 | Dim wpTemp As New Win32.WINDOWPLACEMENT
86 | wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)
87 | intRet = CInt(Win32.GetWindowPlacement(hwnd, wpTemp))
88 | Dim style As Integer = Win32.GetWindowLong(hwnd, Win32.GWL_STYLE)
89 |
90 | If IsPhanthom(hwnd) = False Then 'Fix phanthom windows
91 | If (style And Win32.WS_VISIBLE) = Win32.WS_VISIBLE Then
92 | If wpTemp.showCmd = 3 Then
93 | maximizedwindows.Remove(hwnd)
94 | maximizedwindows.Add(hwnd)
95 | Else
96 | normalwindows.Remove(hwnd)
97 | normalwindows.Add(hwnd)
98 | End If
99 | End If
100 | End If
101 | Catch ex As Exception
102 | End Try
103 | Return True
104 | End Function
105 |
106 | Public Shared Sub Tbsm()
107 | Do
108 |
109 | Dim windowsold As Integer
110 | Dim windowsnew As Integer
111 | windowsold = maximizedwindows.Count
112 |
113 | maximizedwindows.Clear()
114 | System.Threading.Thread.Sleep(250)
115 | EnumWindows(AddressOf Enumerator2, 0)
116 |
117 | windowsnew = maximizedwindows.Count
118 |
119 | If Not windowsnew = windowsold Then
120 | For Each tray As IntPtr In traysbackup
121 | For Each normalwindow As IntPtr In normalwindows
122 | Dim curmonx As Screen = Screen.FromHandle(normalwindow)
123 | Dim curmontbx As Screen = Screen.FromHandle(tray)
124 | If curmonx.DeviceName = curmontbx.DeviceName Then
125 | trays.Remove(tray)
126 | trays.Add(tray)
127 |
128 | ''If Not Settings.TaskbarRounding = 0 Then
129 | ''Dim tt As New Win32.RECT
130 | ''Win32.GetClientRect(tray, tt)
131 | ''Win32.SetWindowRgn(CType(tray, IntPtr), Win32.CreateRoundRectRgn(0, 0, tt.Right, tt.Bottom - tt.Top, Settings.TaskbarRounding, Settings.TaskbarRounding), True)
132 | ''End If
133 | End If
134 | Next
135 | Next
136 |
137 | For Each tray As IntPtr In traysbackup
138 | For Each maxedwindow As IntPtr In maximizedwindows
139 | Dim curmonx As Screen = Screen.FromHandle(maxedwindow)
140 | Dim curmontbx As Screen = Screen.FromHandle(tray)
141 | If curmonx.DeviceName = curmontbx.DeviceName Then
142 | trays.Remove(tray)
143 | Win32.PostMessage(tray, &H31E, CType(&H1, IntPtr), CType(&H0, IntPtr))
144 | '' If Not Settings.TaskbarRounding = 0 Then
145 | '' Dim tt As New Win32.RECT
146 | '' Win32.GetClientRect(tray, tt)
147 | '' Win32.SetWindowRgn(CType(tray, IntPtr), Win32.CreateRoundRectRgn(0, 0, tt.Right, tt.Bottom - tt.Top, 0, 0), True)
148 | ''End If
149 | End If
150 | Next
151 | Next
152 | End If
153 |
154 | Loop
155 | End Sub
156 |
157 | Public Shared Sub TaskbarStyler()
158 | Try
159 |
160 | GetActiveWindows()
161 |
162 |
163 | Dim accent = New Win32.AccentPolicy()
164 | Dim accentStructSize = Marshal.SizeOf(accent)
165 |
166 | 'Select accent based on settings
167 | If Settings.TaskbarStyle = 1 Then
168 | accent.AccentState = Win32.AccentState.ACCENT_ENABLE_TRANSPARANT
169 | End If
170 |
171 | If Settings.TaskbarStyle = 2 Then
172 | accent.AccentState = Win32.AccentState.ACCENT_ENABLE_BLURBEHIND
173 | End If
174 |
175 | If Settings.TaskbarStyle = 3 Then
176 | accent.AccentState = Win32.AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND
177 | End If
178 |
179 | If Settings.TaskbarStyle = 4 Then
180 | accent.AccentState = Win32.AccentState.ACCENT_ENABLE_TRANSPARENTGRADIENT
181 | End If
182 |
183 | If Settings.TaskbarStyle = 5 Then
184 | accent.AccentState = Win32.AccentState.ACCENT_ENABLE_GRADIENT
185 | End If
186 |
187 | accent.AccentFlags = 2 'enable colorize
188 | accent.GradientColor = BitConverter.ToInt32(New Byte() {CByte(Settings.TaskbarStyleRed), CByte(Settings.TaskbarStyleGreen), CByte(Settings.TaskbarStyleBlue), CByte(Settings.TaskbarStyleAlpha * 2.55)}, 0)
189 |
190 | 'Save accent data
191 | Dim accentPtr = Marshal.AllocHGlobal(accentStructSize)
192 | Marshal.StructureToPtr(accent, accentPtr, False)
193 |
194 | Dim data = New Win32.WindowCompositionAttributeData
195 | data.Attribute = Win32.WindowCompositionAttribute.WCA_ACCENT_POLICY
196 | data.SizeOfData = accentStructSize
197 | data.Data = accentPtr
198 |
199 | 'Put all TrayWnds into an ArrayList
200 | For Each trayWnd As IntPtr In windowHandles
201 | trays.Add(trayWnd)
202 | traysbackup.Add(trayWnd)
203 | Next
204 |
205 | If Settings.DefaultTaskbarStyleOnWinMax = 1 Then
206 | Dim t2 As Thread = New Thread(AddressOf Tbsm)
207 | t2.Start()
208 | End If
209 |
210 | 'Set taskbar style for all TrayWnds each 14 millisecond
211 | For Each tray As IntPtr In trays
212 | Dim trayptr As IntPtr = CType(tray.ToString, IntPtr)
213 | Win32.SetWindowCompositionAttribute(CType(trayptr, IntPtr), data)
214 |
215 |
216 |
217 |
218 | '' Dim tt As New ListBox
219 | '' Dim TrayPos2 As Win32.RECT
220 | '' Win32.GetWindowRect(tray, TrayPos2)
221 | '' tt.Top = 0
222 | '' tt.Left = 0
223 | '' tt.Height = 2000
224 | '' tt.Width = 2000
225 | '' tt.BackColor = Color.Red
226 |
227 | '' tt.FormBorderStyle = FormBorderStyle.None
228 | '' Win32.SetWindowLong(tt.Handle, CType(Win32.GWL_STYLE, Win32.WindowStyles), &H80000000L)
229 | '' tt.Show()
230 | '' Dim myProg As New Process
231 | '' With myProg.StartInfo
232 | '' .FileName = "D:\Visual Studio Projects\!TaskbarX\APPX\TaskbarX\Release\TaskbarX Configurator.exe"
233 | '' .Arguments = ""
234 | '' End With
235 | '' myProg.Start()
236 |
237 | '' Thread.Sleep(5000)
238 |
239 |
240 | ''Win32.SetParent(myProg.MainWindowHandle, tray)
241 |
242 | Next
243 |
244 | Do
245 | Try
246 |
247 | For Each tray As IntPtr In trays
248 | Win32.SetWindowCompositionAttribute(tray, data)
249 | Next
250 | System.Threading.Thread.Sleep(10)
251 | Catch
252 | End Try
253 | Loop
254 | Catch ex As Exception
255 | Console.WriteLine(ex.Message)
256 | End Try
257 | End Sub
258 |
259 | Public Shared childLeft As Integer
260 | Public Shared childTop As Integer
261 | Public Shared childWidth As Integer
262 | Public Shared childHeight As Integer
263 |
264 | Public Shared Function GetLocation(ByVal acc As Accessibility.IAccessible, ByVal idChild As Integer) As Integer
265 | acc.accLocation(childLeft, childTop, childWidth, childHeight, idChild)
266 | Return Nothing
267 | End Function
268 |
269 | End Class
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TaskbarX.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {280F29CB-27F8-41FA-8111-21E6916583FD}
8 | WinExe
9 | Sub Main
10 | TaskbarX
11 | TaskbarX
12 | 512
13 | WindowsFormsWithCustomSubMain
14 | v4.8
15 | true
16 | true
17 | false
18 |
19 |
20 | publish\
21 | true
22 | Disk
23 | false
24 | Foreground
25 | 7
26 | Days
27 | false
28 | false
29 | true
30 | 1
31 | 1.0.0.%2a
32 | false
33 | true
34 | true
35 |
36 |
37 | AnyCPU
38 | true
39 | full
40 | true
41 | true
42 | bin\Debug\
43 | TaskbarX.xml
44 |
45 |
46 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
47 | true
48 |
49 |
50 | AnyCPU
51 | pdbonly
52 | false
53 | true
54 | true
55 | ..\..\APPX\TaskbarX\Release\
56 | TaskbarX.xml
57 |
58 |
59 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
60 | true
61 | false
62 |
63 |
64 | On
65 |
66 |
67 | Binary
68 |
69 |
70 | On
71 |
72 |
73 | On
74 |
75 |
76 | StoreLogo-71.ico
77 |
78 |
79 | My Project\app.manifest
80 |
81 |
82 | true
83 | true
84 | true
85 | bin\x64\Debug\
86 | TaskbarX.xml
87 | full
88 | x64
89 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
90 | MinimumRecommendedRules.ruleset
91 | true
92 |
93 |
94 | true
95 | ..\..\APPX\TaskbarX64\Release\
96 | TaskbarX.xml
97 | true
98 | pdbonly
99 | x64
100 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
101 | MinimumRecommendedRules.ruleset
102 | false
103 |
104 |
105 | true
106 | true
107 | true
108 | bin\x86\Debug\
109 | TaskbarX.xml
110 | full
111 | x86
112 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
113 | MinimumRecommendedRules.ruleset
114 | true
115 |
116 |
117 | true
118 | ..\..\APPX\TaskbarX32\Release\
119 | TaskbarX.xml
120 | true
121 | pdbonly
122 | x86
123 | 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036
124 | MinimumRecommendedRules.ruleset
125 | false
126 |
127 |
128 | A30E266A1B577C5BECBC296B8B085D7B41991D7B
129 |
130 |
131 | TaskbarX_TemporaryKey.pfx
132 |
133 |
134 | true
135 |
136 |
137 | false
138 |
139 |
140 |
141 | False
142 | True
143 |
144 |
145 |
146 |
147 | True
148 | False
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 | True
170 | Application.myapp
171 | True
172 |
173 |
174 | True
175 | True
176 | Resources.resx
177 |
178 |
179 | True
180 | Settings.settings
181 | True
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 | VbMyResourcesResXFileCodeGenerator
191 | Resources.Designer.vb
192 | My.Resources
193 | Designer
194 |
195 |
196 |
197 |
198 |
199 |
200 | MyApplicationCodeGenerator
201 | Application.Designer.vb
202 |
203 |
204 | SettingsSingleFileGenerator
205 | My
206 | Settings.Designer.vb
207 |
208 |
209 |
210 |
211 |
212 | False
213 | Microsoft .NET Framework 4.8 %28x86 and x64%29
214 | true
215 |
216 |
217 | False
218 | .NET Framework 3.5 SP1
219 | false
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 | {1EA4DBF0-3C3B-11CF-810C-00AA00389B71}
229 | 1
230 | 1
231 | 0
232 | tlbimp
233 | False
234 | True
235 |
236 |
237 |
238 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TaskbarX.vbproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -skipresolution=1920 -taskbarstyle=1
5 | Project
6 |
7 |
8 | publish\
9 |
10 |
11 |
12 |
13 |
14 | en-US
15 | false
16 |
17 |
18 |
19 |
20 | Project
21 | false
22 |
23 |
24 | -skipresolution=1920 -taskbarstyle=1
25 |
26 |
27 | -tbs=1
28 |
29 |
30 | -skipresolution=1920 -taskbarstyle=1
31 |
32 |
33 | -dtbsowm=1 -as=linear -asp=200 -hpt=0 -tbs=1 -sti=1 -as=expoeaseout -stsb=1 -tbs=1
34 |
35 |
36 | false
37 |
38 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TaskbarX_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChrisAnd1998/TaskbarX/4bc446c147c116c140689ca3de84a336bb29d338/TaskbarX/TaskbarX/TaskbarX_TemporaryKey.pfx
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/TrayIconBuster.vb:
--------------------------------------------------------------------------------
1 |
2 | Imports System.Runtime.InteropServices
3 | Imports System.Text
4 |
5 |
6 | Namespace TrayIconBuster
7 | Friend Class TrayIconBuster
8 | Private Const TB_BUTTONCOUNT As UInteger = &H418
9 | Private Const TB_GETBUTTON As UInteger = &H417
10 | Private Const TB_DELETEBUTTON As UInteger = &H416
11 |
12 | Private Shared key As New Object()
13 |
14 | Public Shared is64bit As Boolean
15 |
16 |
17 |
18 |
19 | Public Structure SYSTEM_INFO
20 | Public processorArchitecture As UShort
21 | Private reserved As UShort
22 | Public pageSize As UInteger
23 | Public minimumApplicationAddress As IntPtr
24 | Public maximumApplicationAddress As IntPtr
25 | Public activeProcessorMask As UIntPtr
26 | Public numberOfProcessors As UInteger
27 | Public processorType As UInteger
28 | Public allocationGranularity As UInteger
29 | Public processorLevel As UShort
30 | Public processorRevision As UShort
31 | End Structure
32 |
33 |
34 | Private Shared Sub GetSystemInfo(ByRef lpSystemInfo As SYSTEM_INFO)
35 | End Sub
36 |
37 | Public Shared Function RemovePhantomIcons() As UInteger
38 | Dim is64bitWin As Boolean = Environment.Is64BitOperatingSystem
39 | Dim tbb64 As New ToolBarButton64()
40 | Dim tbb32 As New ToolBarButton32()
41 | Dim td As New TrayData()
42 | Dim foundSomeExe As Boolean = False
43 | Dim totalRemovedCount As Integer = 0
44 | Dim totalItemCount As Integer = 0
45 |
46 | SyncLock key
47 | For pass As Integer = 1 To 2
48 | For kind As Integer = 0 To 1
49 | Dim hWnd As IntPtr = IntPtr.Zero
50 | If kind = 0 Then
51 | FindNestedWindow(hWnd, "Shell_TrayWnd")
52 | FindNestedWindow(hWnd, "TrayNotifyWnd")
53 | FindNestedWindow(hWnd, "SysPager")
54 | FindNestedWindow(hWnd, "ToolbarWindow32")
55 | Else
56 | ' get the hidden icon collection that exists since Windows 7
57 | Try
58 | FindNestedWindow(hWnd, "NotifyIconOverflowWindow")
59 | FindNestedWindow(hWnd, "ToolbarWindow32")
60 | Catch
61 | ' fail silently, as NotifyIconOverflowWindow did not exist prior to Win7
62 | Exit For
63 | End Try
64 | End If
65 | ' create an object so we can exchange data with other process
66 | Using process As New LP_Process(hWnd)
67 | Dim remoteButtonPtr As IntPtr
68 | If is64bitWin Then
69 | remoteButtonPtr = process.Allocate(tbb64)
70 | Else
71 | remoteButtonPtr = process.Allocate(tbb32)
72 | End If
73 | process.Allocate(td)
74 | Dim itemCount As UInteger = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_BUTTONCOUNT, IntPtr.Zero, IntPtr.Zero))))
75 | 'log("There are "+itemCount+" tray icons (some of them hidden)");
76 | Dim removedCount As Integer = 0
77 | For item As UInteger = 0 To CUInt(itemCount - 1)
78 |
79 | totalItemCount += 1
80 | ' index changes when previous items got removed !
81 | Dim item2 As UInteger = CUInt(item - removedCount)
82 | Dim SOK As UInteger = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_GETBUTTON, New IntPtr(item2), remoteButtonPtr))))
83 | If SOK <> 1 Then
84 | Throw New ApplicationException("TB_GETBUTTON failed")
85 | End If
86 | If is64bitWin Then
87 | process.Read(tbb64, remoteButtonPtr)
88 | process.Read(td, tbb64.dwData)
89 | Else
90 | process.Read(tbb32, remoteButtonPtr)
91 | process.Read(td, tbb32.dwData)
92 | End If
93 | Dim hWnd2 As IntPtr = td.hWnd
94 |
95 | Using proc As New LP_Process(hWnd2)
96 | Dim filename As String = proc.GetImageFileName()
97 |
98 | ' a phantom icon has no imagefilename
99 | If filename Is Nothing Then
100 | SOK = CUInt(Math.Truncate(CDec(SendMessage(hWnd, TB_DELETEBUTTON, New IntPtr(item2), IntPtr.Zero))))
101 |
102 | removedCount += 1
103 | totalRemovedCount += 1
104 | End If
105 | End Using
106 | Next item
107 | End Using
108 | Next kind ' next kind
109 |
110 |
111 | Next pass
112 | End SyncLock ' release lock
113 |
114 | Return CUInt(totalRemovedCount)
115 | End Function
116 |
117 | ' Find a topmost or nested window with specified name
118 | Private Shared Sub FindNestedWindow(ByRef hWnd As IntPtr, ByVal name As String)
119 | If hWnd = IntPtr.Zero Then
120 | hWnd = FindWindow(name, Nothing)
121 | Else
122 | hWnd = FindWindowEx(hWnd, IntPtr.Zero, name, Nothing)
123 | End If
124 | End Sub
125 |
126 |
127 | Public Shared Function SendMessage(ByVal Hdc As IntPtr, ByVal Msg_Const As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
128 | End Function
129 |
130 |
131 | Public Shared Function FindWindow(ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr
132 | End Function
133 |
134 |
135 | Public Shared Function FindWindowEx(ByVal hwndParent As IntPtr, ByVal hwndChildAfter As IntPtr, ByVal lpszClass As String, ByVal lpszWindow As String) As IntPtr
136 | End Function
137 |
138 |
139 |
140 | Public Class ToolBarButton32
141 | Public iBitmap As UInteger
142 | Public idCommand As UInteger
143 | Public fsState As Byte
144 | Public fsStyle As Byte
145 | Private bReserved0 As Byte
146 | Private bReserved1 As Byte
147 | Public dwData As IntPtr
148 | Public iString As UInteger
149 | End Class
150 |
151 | Public Class ToolBarButton64
152 | Public iBitmap As UInteger
153 | Public idCommand As UInteger
154 | Public fsState As Byte
155 | Public fsStyle As Byte
156 | Private bReserved0 As Byte
157 | Private bReserved1 As Byte
158 | Private bReserved2 As Byte
159 | Private bReserved3 As Byte
160 | Private bReserved4 As Byte
161 | Private bReserved5 As Byte
162 | Public dwData As IntPtr
163 | Public iString As UInteger
164 | End Class
165 |
166 |
167 |
168 | Public Class TrayData
169 | Public hWnd As IntPtr
170 | Public uID As UInteger
171 | Public uCallbackMessage As UInteger
172 | Private reserved0 As UInteger
173 | Private reserved1 As UInteger
174 | Public hIcon As IntPtr
175 | End Class
176 | End Class
177 |
178 |
179 | Public Class LP_Process
180 | Implements IDisposable
181 |
182 |
183 | Private Const PROCESS_VM_OPERATION As UInteger = &H8
184 | Private Const PROCESS_VM_READ As UInteger = &H10
185 | Private Const PROCESS_VM_WRITE As UInteger = &H20
186 | Private Const PROCESS_QUERY_INFORMATION As UInteger = &H400
187 |
188 | Private Const MEM_COMMIT As UInteger = &H1000
189 | Private Const MEM_RELEASE As UInteger = &H8000
190 | Private Const PAGE_READWRITE As UInteger = &H4
191 |
192 |
193 | Private hProcess As IntPtr
194 |
195 |
196 | Private ownerProcessID As UInteger
197 |
198 |
199 | Private allocations As New ArrayList()
200 |
201 | Public Sub New(ByVal hWnd As IntPtr)
202 | GetWindowThreadProcessId(hWnd, ownerProcessID)
203 |
204 | hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE Or PROCESS_QUERY_INFORMATION, False, ownerProcessID)
205 |
206 | End Sub
207 |
208 |
209 | Public Sub Dispose() Implements IDisposable.Dispose
210 | If hProcess <> IntPtr.Zero Then
211 | For Each ptr As IntPtr In allocations
212 | VirtualFreeEx(hProcess, ptr, 0, MEM_RELEASE)
213 | Next ptr
214 | CloseHandle(hProcess)
215 | End If
216 | End Sub
217 |
218 |
219 | Public Function GetImageFileName() As String
220 | Dim sb As New StringBuilder(1024)
221 | Dim OK As Boolean = GetProcessImageFileName(hProcess, sb, sb.Capacity - 1)
222 | If Not OK Then
223 | Return Nothing
224 | End If
225 | Return sb.ToString()
226 | End Function
227 |
228 |
229 | Public Function Allocate(ByVal managedObject As Object) As IntPtr
230 | Dim size As Integer = Marshal.SizeOf(managedObject)
231 | Dim ptr As IntPtr = VirtualAllocEx(hProcess, 0, size, MEM_COMMIT, PAGE_READWRITE)
232 |
233 | If ptr <> IntPtr.Zero Then
234 | allocations.Add(ptr)
235 | End If
236 | Return ptr
237 | End Function
238 |
239 |
240 | Public Sub Read(ByVal obj As Object, ByVal ptr As IntPtr)
241 | Using pin As New LP_Pinner(obj)
242 | Dim bytesRead As UInteger = 0
243 | Dim size As Integer = Marshal.SizeOf(obj)
244 | If Not ReadProcessMemory(hProcess, ptr, pin.Ptr, size, bytesRead) Then
245 | Dim err As Integer = GetLastError()
246 | Dim s As String = "Read failed; err=" & err & "; bytesRead=" & bytesRead
247 | Throw New ApplicationException(s)
248 | End If
249 | End Using
250 | End Sub
251 |
252 |
253 | Public Function ReadString(ByVal size As Integer, ByVal ptr As IntPtr) As String
254 | Dim sb As New StringBuilder(size)
255 | Dim bytesRead As UInteger = 0
256 | If Not ReadProcessMemory(hProcess, ptr, sb, size, bytesRead) Then
257 | Dim err As Integer = GetLastError()
258 | Dim s As String = "Read failed; err=" & err & "; bytesRead=" & bytesRead
259 | Throw New ApplicationException(s)
260 | End If
261 | Return sb.ToString()
262 | End Function
263 |
264 |
265 | Public Sub Write(ByVal obj As Object, ByVal size As Integer, ByVal ptr As IntPtr)
266 | Using pin As New LP_Pinner(obj)
267 | Dim bytesWritten As UInteger = 0
268 | If Not WriteProcessMemory(hProcess, ptr, pin.Ptr, size, bytesWritten) Then
269 | Dim err As Integer = GetLastError()
270 | Dim s As String = "Write failed; err=" & err & "; bytesWritten=" & bytesWritten
271 | Throw New ApplicationException(s)
272 | End If
273 | End Using
274 | End Sub
275 |
276 |
277 |
278 | Private Shared Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByRef procId As UInteger) As UInteger
279 | End Function
280 |
281 |
282 | Private Shared Function OpenProcess(ByVal access As UInteger, ByVal inheritHandle As Boolean, ByVal procID As UInteger) As IntPtr
283 | End Function
284 |
285 |
286 | Private Shared Function CloseHandle(ByVal handle As IntPtr) As Boolean
287 | End Function
288 |
289 |
290 | Private 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
291 | End Function
292 |
293 |
294 | Private Shared Function VirtualFreeEx(ByVal hProcess As IntPtr, ByVal address As IntPtr, ByVal size As Integer, ByVal freeType As UInteger) As Boolean
295 | End Function
296 |
297 |
298 | Private 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
299 | End Function
300 |
301 |
302 | Private 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
303 | End Function
304 |
305 |
306 | Private 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
307 | End Function
308 |
309 |
310 | Private Shared Function GetProcessImageFileName(ByVal hProcess As IntPtr, ByVal fileName As StringBuilder, ByVal fileNameSize As Integer) As Boolean
311 | End Function
312 |
313 |
314 | Public Shared Function GetLastError() As Integer
315 | End Function
316 | End Class
317 |
318 | Public Class LP_Pinner
319 | Implements IDisposable
320 |
321 | Private handle As GCHandle
322 | Private disposed As Boolean
323 |
324 | Private ptr_Conflict As IntPtr
325 |
326 |
327 | Public Sub New(ByVal obj As Object)
328 |
329 | handle = GCHandle.Alloc(obj, GCHandleType.Pinned)
330 | ptr_Conflict = handle.AddrOfPinnedObject()
331 | End Sub
332 |
333 |
334 | Protected Overrides Sub Finalize()
335 | Dispose()
336 | End Sub
337 |
338 |
339 | Public Sub Dispose() Implements IDisposable.Dispose
340 | If Not disposed Then
341 |
342 | disposed = True
343 | handle.Free()
344 | ptr_Conflict = IntPtr.Zero
345 | End If
346 | End Sub
347 |
348 |
349 | Public ReadOnly Property Ptr() As IntPtr
350 | Get
351 | Return ptr_Conflict
352 | End Get
353 | End Property
354 | End Class
355 | End Namespace
356 |
--------------------------------------------------------------------------------
/TaskbarX/TaskbarX/Win32.vb:
--------------------------------------------------------------------------------
1 | Option Strict On
2 |
3 | Imports System.Runtime.InteropServices
4 | Imports System.Text
5 |
6 | Public Class Win32
7 |
8 |
9 | Public Shared Function ShowWindow(hWnd As IntPtr, nCmdShow As ShowWindowCommands) As Boolean
10 | End Function
11 |
12 |
13 | 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
14 | End Function
15 |
16 |
17 | Public Shared Function GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
18 | End Function
19 |
20 |
21 | Public Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean
22 | End Function
23 |
24 |
25 | Public Shared Function EnumChildWindows(ByVal WindowHandle As IntPtr, ByVal Callback As EnumWindowProcess, ByVal lParam As IntPtr) As Boolean
26 | End Function
27 |
28 |
29 | Public Shared Function SetWindowCompositionAttribute(ByVal hwnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer
30 | End Function
31 |
32 |
33 | Public Shared Function FindWindowEx(ByVal parentHandle As IntPtr, ByVal childAfter As IntPtr, ByVal lclassName As String, ByVal windowTitle As String) As IntPtr
34 | End Function
35 |
36 |
37 | Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
38 | End Function
39 |
40 |
41 | Public Shared Function GetParent(ByVal hWnd As IntPtr) As IntPtr
42 | End Function
43 |
44 |
45 | Public Shared Function GetClientRect(ByVal hWnd As System.IntPtr, ByRef lpRECT As RECT) As Integer
46 | End Function
47 |
48 |
49 | Shared Function SetWindowRgn(ByVal hWnd As IntPtr, ByVal hRgn As IntPtr, ByVal bRedraw As Boolean) As Integer
50 | End Function
51 |
52 |
53 | Shared Function GetWindowRgn(ByVal hWnd As IntPtr, ByVal hRgn As IntPtr) As Integer
54 | End Function
55 |
56 |
57 | 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
58 | End Function
59 |
60 |
61 | Public Shared Function CreateRectRgn(ByVal nLeftRect As Integer, ByVal nTopRect As Integer, ByVal nRightRect As Integer, ByVal nBottomRect As Integer) As IntPtr
62 | End Function
63 |
64 |
65 |
66 | Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
67 | End Function
68 |
69 |
70 | Public Shared Function MonitorFromWindow(ByVal hwnd As IntPtr, ByVal dwFlags As UInteger) As IntPtr
71 | End Function
72 |
73 |
74 | Public Shared Function GetMonitorInfo(ByVal hMonitor As IntPtr, ByRef lpmi As MONITORINFO) As Boolean
75 | End Function
76 |
77 |
78 | Public Shared Function GetForegroundWindow() As IntPtr
79 | End Function
80 |
81 |
82 | Public Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
83 | End Function
84 |
85 |
86 | Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
87 | End Function
88 |
89 |
90 | Public Shared Function SetProcessDpiAwareness(ByVal awareness As PROCESS_DPI_AWARENESS) As Boolean
91 | End Function
92 |
93 |
94 | Public Shared Function FindWindowByClass(ByVal lpClassName As String, ByVal zero As IntPtr) As IntPtr
95 | End Function
96 |
97 |
98 | Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Boolean, ByVal lParam As Int32) As Integer
99 | End Function
100 |
101 |
102 | Public Shared Function SetProcessWorkingSetSize(ByVal hProcess As IntPtr, ByVal dwMinimumWorkingSetSize As Int32, ByVal dwMaximumWorkingSetSize As Int32) As Int32
103 | End Function
104 |
105 |
106 | Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, nIndex As WindowStyles, ByVal dwNewLong As Integer) As Integer
107 | End Function
108 |
109 |
110 | Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
111 | End Function
112 |
113 |
114 | Public Shared Function AllocConsole() As Boolean
115 | End Function
116 |
117 |
118 | Public Shared Function GetDesktopWindow() As IntPtr
119 | End Function
120 |
121 |
122 | Public Shared Function DwmGetWindowAttribute(ByVal hwnd As IntPtr, ByVal dwAttribute As DWMWINDOWATTRIBUTE, ByRef pvAttribute As Integer, ByVal cbAttribute As Integer) As Integer
123 | End Function
124 |
125 |
126 | Public Shared Function DwmSetWindowAttribute(ByVal hwnd As IntPtr, ByVal dwAttribute As DWMWINDOWATTRIBUTE, ByRef pvAttribute As RECT, ByVal cbAttribute As Integer) As Integer
127 | End Function
128 |
129 |
130 | Public Shared Function SendNotifyMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As String) As Boolean
131 | End Function
132 |
133 |
134 |
135 | Public Shared Function SetLayeredWindowAttributes(ByVal hwnd As IntPtr, ByVal crKey As UInteger, ByVal bAlpha As Byte, ByVal dwFlags As UInteger) As Boolean
136 | End Function
137 |
138 |
139 |
140 | Public Shared Function RedrawWindow(hWnd As IntPtr, lprcUpdate As IntPtr, hrgnUpdate As IntPtr, flags As RedrawWindowFlags) As Boolean
141 | End Function
142 |
143 |
144 | Public Shared Function CombineRgn(ByVal hrgnDest As IntPtr,
145 | ByVal hrgnSrc1 As IntPtr, ByVal hrgnSrc2 As IntPtr,
146 | ByVal fnCombineMode As Integer) As Integer
147 | End Function
148 |
149 |
150 | Enum DWMWINDOWATTRIBUTE As UInteger
151 | NCRenderingEnabled = 1
152 | NCRenderingPolicy
153 | TransitionsForceDisabled
154 | AllowNCPaint
155 | CaptionButtonBounds
156 | NonClientRtlLayout
157 | ForceIconicRepresentation
158 | Flip3DPolicy
159 | ExtendedFrameBounds
160 | HasIconicBitmap
161 | DisallowPeek
162 | ExcludedFromPeek
163 | Cloak
164 | Cloaked
165 | FreezeRepresentation
166 | End Enum
167 |
168 |
169 | Enum RedrawWindowFlags As UInteger
170 | Invalidate = &H1
171 | InternalPaint = &H2
172 | [Erase] = &H4
173 | Validate = &H8
174 | NoInternalPaint = &H10
175 | NoErase = &H20
176 | NoChildren = &H40
177 | AllChildren = &H80
178 | UpdateNow = &H100
179 | EraseNow = &H200
180 | Frame = &H400
181 | NoFrame = &H800
182 | End Enum
183 |
184 | Public Structure POINTAPI
185 | Public x As Integer
186 | Public y As Integer
187 | End Structure
188 |
189 | Public Shared WS_BORDER As Integer = 8388608
190 | Public Shared WS_DLGFRAME As Integer = 4194304
191 | Public Shared WS_CAPTION As Integer = WS_BORDER Or WS_DLGFRAME
192 | Public Shared WS_VISIBLE As Integer = 268435456
193 |
194 | Public Structure WINDOWPLACEMENT
195 | Public Length As Integer
196 | Public flags As Integer
197 | Public showCmd As Integer
198 | Public ptMinPosition As POINTAPI
199 | Public ptMaxPosition As POINTAPI
200 | Public rcNormalPosition As RECT
201 | End Structure
202 |
203 | Public Enum PROCESS_DPI_AWARENESS
204 | Process_DPI_Unaware = 0
205 | Process_System_DPI_Aware = 1
206 | Process_Per_Monitor_DPI_Aware = 2
207 | End Enum
208 |
209 | Public Shared WM_DWMCOLORIZATIONCOLORCHANGED As Integer = &H320
210 | Public Shared WM_DWMCOMPOSITIONCHANGED As Integer = &H31E
211 | Public Shared WM_THEMECHANGED As Integer = &H31A
212 |
213 | Public Const WM_SETREDRAW As Integer = 11
214 |
215 | Public Structure WindowCompositionAttributeData
216 | Public Attribute As WindowCompositionAttribute
217 | Public Data As IntPtr
218 | Public SizeOfData As Integer
219 | End Structure
220 |
221 | Public Enum WindowCompositionAttribute
222 | WCA_ACCENT_POLICY = 19
223 | End Enum
224 |
225 | Public Structure RECT
226 | Public Left As Integer
227 | Public Top As Integer
228 | Public Right As Integer
229 | Public Bottom As Integer
230 | End Structure
231 |
232 | Public Structure MONITORINFO
233 | Public cbSize As Long
234 | Public rcMonitor As RECT
235 | Public rcWork As RECT
236 | Public dwFlags As Long
237 | End Structure
238 |
239 | Friend Enum AccentState
240 | ACCENT_DISABLED = 0
241 | ACCENT_ENABLE_GRADIENT = 1
242 | ACCENT_ENABLE_TRANSPARENTGRADIENT = 2
243 | ACCENT_ENABLE_BLURBEHIND = 3
244 | ACCENT_ENABLE_TRANSPARANT = 6
245 | ACCENT_ENABLE_ACRYLICBLURBEHIND = 4
246 | ACCENT_NORMAL = 150
247 | End Enum
248 |
249 |
250 | Friend Structure AccentPolicy
251 | Public AccentState As AccentState
252 | Public AccentFlags As Integer
253 | Public GradientColor As Integer
254 | Public AnimationId As Integer
255 | End Structure
256 |
257 | Public Const GWL_STYLE = -16
258 | Public Const GWL_EXSTYLE = -20
259 | Public Const WS_MAXIMIZE = 16777216
260 | Public Const WS_POPUP = 2147483648
261 | Public Const WS_EX_LAYERED As Integer = 524288
262 |
263 | Public Enum WindowStyles
264 | WS_BORDER = &H800000
265 | WS_CAPTION = &HC00000
266 | WS_CHILD = &H40000000
267 | WS_CLIPCHILDREN = &H2000000
268 | WS_CLIPSIBLINGS = &H4000000
269 | WS_DISABLED = &H8000000
270 | WS_DLGFRAME = &H400000
271 | WS_GROUP = &H20000
272 | WS_HSCROLL = &H100000
273 | WS_MAXIMIZE = &H1000000
274 | WS_MAXIMIZEBOX = &H10000
275 | WS_MINIMIZE = &H20000000
276 | WS_MINIMIZEBOX = &H20000
277 | WS_OVERLAPPED = &H0
278 | WS_OVERLAPPEDWINDOW = WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_SIZEFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
279 | WS_SIZEFRAME = &H40000
280 | WS_SYSMENU = &H80000
281 | WS_TABSTOP = &H10000
282 | WS_VISIBLE = &H10000000
283 | WS_VSCROLL = &H200000
284 | End Enum
285 |
286 | Enum ShowWindowCommands As Integer
287 | Hide = 0
288 | Normal = 1
289 | ShowMinimized = 2
290 | Maximize = 3
291 | ShowMaximized = 3
292 | ShowNoActivate = 4
293 | Show = 5
294 | Minimize = 6
295 | ShowMinNoActive = 7
296 | ShowNA = 8
297 | Restore = 9
298 | ShowDefault = 10
299 | ForceMinimize = 11
300 | End Enum
301 |
302 | Public Delegate Function EnumWindowProcess(ByVal Handle As IntPtr, ByVal Parameter As IntPtr) As Boolean
303 |
304 | Public Shared SWP_NOSIZE As UInt32 = 1
305 | Public Shared SWP_ASYNCWINDOWPOS As UInt32 = 16384
306 | Public Shared SWP_NOACTIVATE As UInt32 = 16
307 | Public Shared SWP_NOSENDCHANGING As UInt32 = 1024
308 | Public Shared SWP_NOZORDER As UInt32 = 4
309 | Public Shared WM_COMMAND As Long = &H111
310 | Public Shared HWND_BROADCAST As IntPtr = New IntPtr(65535)
311 | Public Shared WM_SETTINGCHANGE As UInteger = 26
312 | Public Shared SMTO_ABORTIFHUNG As Integer = 2
313 |
314 |
315 |
316 | Public Shared TOPMOST_FLAGS As UInt32 = &H2 Or &H1
317 | Public Shared ReadOnly HWND_TOPMOST As IntPtr = New IntPtr(-1)
318 |
319 |
320 |
321 | Public Shared Sub ShowStartMenu()
322 | Dim shell = FindWindow("Shell_TrayWnd", Nothing)
323 |
324 |
325 | '' Const keyControl As Byte = &H11
326 | '' Const keyEscape As Byte = &H1B
327 | '' keybd_event(keyControl, 0, 0, UIntPtr.Zero)
328 | '' keybd_event(keyEscape, 0, 0, UIntPtr.Zero)
329 | '' Const KEYEVENTF_KEYUP As UInteger = &H2
330 | '' keybd_event(keyControl, 0, KEYEVENTF_KEYUP, UIntPtr.Zero)
331 | ''keybd_event(keyEscape, 0, KEYEVENTF_KEYUP, UIntPtr.Zero)
332 |
333 | '' keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key
334 | ''keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key
335 |
336 | '' Dim tt As New RECT
337 | '' GetWindowRect(shell, tt)
338 |
339 | '' MsgBox(tt.Top)
340 |
341 | ''SHOWS DESKTOP
342 | ''SendMessage(shell, &H400 + 377, CBool(CType(&H1, IntPtr)), CInt(CType(0, IntPtr)))
343 |
344 |
345 |
346 | '' Dim sClassName As New StringBuilder("", 256)
347 | '' GetClassName(GetActiveWindow(), sClassName, 256)
348 |
349 | '' PostMessage(shell, &H400 + 465, CType(&H1, IntPtr), CType(&H10001, IntPtr))
350 | '' PostMessage(shell, &H127, CType(&H30001, IntPtr), CType(0, IntPtr))
351 | ''SendMessage(shell, &H400 + 377, CBool(CType(&H100, IntPtr)), CInt(CType(1, IntPtr)))
352 |
353 | ''PostMessage(shell, &H400 + 243, CType(shell, IntPtr), CType(0, IntPtr))
354 | ''SetFocus(shell)
355 | keybd_event(CByte(Keys.LWin), 0, &H0, CType(0, UIntPtr)) 'Press the Left Win key
356 |
357 |
358 | keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) 'Press the Left Win key
359 | '' SetFocus(shell)
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 | '' End If
368 |
369 | '' SetFocus(shell)
370 |
371 |
372 | '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key
373 | '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) : Application.DoEvents() 'Press the Left Win key
374 |
375 | '' PostMessage(shell, &H112, CType(&HF131, IntPtr), CType(&H1, IntPtr))
376 |
377 | ''PostMessage(shell, wm_s, CType(&H1, IntPtr), CType(&H10001, IntPtr))
378 |
379 | '' PostMessage(shell, &H400 + 465, CType(&H1, IntPtr), CType(&H10001, IntPtr))
380 | '' PostMessage(shell, &H400 + 443, CType(&H1, IntPtr), CType(0, IntPtr))
381 | '' PostMessage(shell, &H400 + 377, CType(&H0, IntPtr), CType(0, IntPtr))
382 |
383 |
384 |
385 | '' keybd_event(CByte(Keys.LWin), 0, &H2, CType(0, UIntPtr)) 'Press the Left Win key
386 |
387 | End Sub
388 |
389 |
390 | Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As UIntPtr)
391 |
392 | End Sub
393 |
394 | Private Declare Function SetFocus Lib "user32.dll" (ByVal hwnd As IntPtr) As IntPtr
395 |
396 |
397 | Public Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As IntPtr
398 | End Function
399 |
400 |
401 | Private Shared Function GetActiveWindow() As IntPtr
402 | End Function
403 |
404 |
405 | Private Shared Function GetWindowLongPtr(ByVal hWnd As HandleRef, nIndex As WindowLongFlags) As IntPtr
406 | End Function
407 |
408 |
409 | Public Enum WindowLongFlags As Integer
410 | GWL_EXSTYLE = -20
411 | GWLP_HINSTANCE = -6
412 | GWLP_HWNDPARENT = -8
413 | GWL_ID = -12
414 | GWL_STYLE = -16
415 | GWL_USERDATA = -21
416 | GWL_WNDPROC = -4
417 | DWLP_USER = &H8
418 | DWLP_MSGRESULT = &H0
419 | DWLP_DLGPROC = &H4
420 | End Enum
421 |
422 | End Class
--------------------------------------------------------------------------------
/VERSION:
--------------------------------------------------------------------------------
1 | 1.7.8.0
2 |
--------------------------------------------------------------------------------