The Windows 10 Start menu has a delay when closing if one is injecting
it without injecting `explorer.exe` as well. The reason for this is
that animations are fixed, which in turn fixes this delay, using code
run when ExplorerPatcher is injected in `explorer.exe`. It cannot be
patched from the Start menu's host process itself
(`StartMenuExperienceHost.exe`) because that doesn't load
`twinui.pchsell.dll` where the actual patching happens. This commit
works around this shortcoming by employing the old fix for this delay:
hiding the Start menu when animations haven't been fixed (so when
`explorer.exe` is not injected by ExplorerPatcher).
We needed to detect when animations were successfully patched from
`explorer.exe` in order to disable this workaround, thus this commit
offers an example on how to create a kernel object, in this case a
mutex, that can be 'seen' by a process running inside an app container,
as is the case for Start menu's host process
(`StartMenuExperienceHost.exe`).
- .prev files should now only exist when the file to overwrite is in use, no longer all the time.
- During uninstallation, ep_setup now tries to delete `C:\Program Files\ExplorerPatcher` by moving the stored ep_setup.exe into %TEMP% for later deletion after Explorer starts again.
- When the uninstall confirmation dialog is open, subsequent `ep_setup.exe /uninstall` invocations should focus the existing dialog instead of making a new one.
- Reorganized the functions for a cleaner look and easier maintenance.
- Removed the files related to the original method for fixing the jump list menus in the Windows 10 start menu on Windows 11.
- Prepared the spots for the alternate taskbar implementation.