* 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