* Added support for hooking functions using the Microsoft Detours
library; this, in theory, means that the application can now at
least compile just fine on ARM64; although that is the case, it
currently does not support dynamically patching CTray::Init as I
have yet to come up with assembly to do that. Also, it is
uterly untested on ARM64 as I do not have a machine to test on.
* Removed x86 support, compilation targets are now only amd64 and
ARM64
* Instead of the overthinked and overcomplicated way the Win+X
key combination was handled before, it now just sends a
WM_CONTEXTMENU message to the Start button and Explorer takes
care of the rest (I still haven't managed to figure out why the
COM interface call did not work though)
* Added more info to IImmersiveMonitorService
* The popup menu for "Safe to Remove Hardware" is now skinned in the
same style as the Win+X menu and the taskbar context menus, in
order to improve UI consistency.
* Library downloads and parses symbols in order to determine
function hooking offsets at runtime and saves the data in a
"settings.ini" file located in the application folder for future
use; the file is invalidated when a new OS build is detected
* The main executable attempts to determine the location where a
jump has to be patched out so that Explorer remains on the 'show
old taskbar' code path; it will systematically patch each jz/jnz
instruction and will check whether Explorer still runs fine, and,
if it does so and does not crash, whether the old taskbar got
actually shown; once the offset is determined, it is saved in the
"settings.ini" file for future use
* Please have an unmetered active working Internet connection when
running for the first time
* Messages from the patcher (i.e. install/uninstall successful
message, symbol downloading message) will now display in a toast
(Windows 10 notification) if possible; when Explorer is not
running, it falls back to using standard MessageBox'es
* Disabled the pre/post build command that restarted sihost.exe in
Debug builds
In order to ease off building and testing the application, when using
Visual Studio, the solution now automatically kills Explorer before
building (so that the library can replace the old version which
presumably was in use) and starts it back when the build completes.