Browse Source

Taskbar10: Fix new IME context menu on 22H2

pull/2097/head
Amrsatrio 2 years ago
parent
commit
82556f08e6
  1. 5
      ExplorerPatcher/dllmain.c
  2. 14
      ExplorerPatcher/utility.h

5
ExplorerPatcher/dllmain.c

@ -11115,7 +11115,10 @@ DWORD Inject(BOOL bIsExplorer) @@ -11115,7 +11115,10 @@ DWORD Inject(BOOL bIsExplorer)
if (IsWindows11())
{
HANDLE hInputSwitch = LoadLibraryW(L"InputSwitch.dll");
printf("[IME] Context menu patch status: %d\n", PatchContextMenuOfNewMicrosoftIME(NULL));
if (bOldTaskbar)
{
printf("[IME] Context menu patch status: %d\n", PatchContextMenuOfNewMicrosoftIME(NULL));
}
if (hInputSwitch)
{
VnPatchIAT(hInputSwitch, "user32.dll", "TrackPopupMenuEx", inputswitch_TrackPopupMenuExHook);

14
ExplorerPatcher/utility.h

@ -536,7 +536,19 @@ inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound) @@ -536,7 +536,19 @@ inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
{
// huge thanks to @Simplestas: https://github.com/valinet/ExplorerPatcher/issues/598
if (bFound) *bFound = FALSE;
const DWORD patch_from = 0x50653844, patch_to = 0x54653844; // cmp byte ptr [rbp+50h], r12b
DWORD patch_from, patch_to;
if (IsWindows11Version22H2OrHigher())
{
// cmp byte ptr [rbp+40h+arg_0], r13b
patch_from = 0x506D3844;
patch_to = 0x546D3844;
}
else
{
// cmp byte ptr [rbp+50h], r12b
patch_from = 0x50653844;
patch_to = 0x54653844;
}
HMODULE hInputSwitch = NULL;
if (!GetModuleHandleExW(0, L"InputSwitch.dll", &hInputSwitch))
{

Loading…
Cancel
Save