Prześledziłem ten niezwykle irytujący błąd aż do systemu Windows XP, więc w rzeczywistości jest to 17-letni błąd, który wciąż nie został naprawiony (!).
Ten błąd jest również omawiany tutaj, ale wątek jest zamknięty i nie można dalej omawiać tego problemu:
https://answers.microsoft.com/en-us/windows/forum/windows8_1-desktop/how-to-prevent-on-screen-keyboard-from-focus-on/2e6c7d6b-f59e-4b95-b37e-487ff33dbda3
Udało mi się stworzyć prostą poprawkę, ładując osk.exedo x64dbg, analizując problem, a następnie łatając kod za pomocą debugera (instrukcje poniżej).
To, co się dzieje, osk.exepolega na ciągłym zapisywaniu ostatniego aktywnego okna w celu zogniskowania tego okna, gdy mysz przesuwa się nad OSK lub użytkownik aktywuje OSK. Dzięki temu skupia się na ostatnim aktywnym oknie przez cały czas, co zapewnia, że podczas pisania za pomocą OSK dane wejściowe idą tam, gdzie powinny.
Problemem jest osk.exezatrzymanie zapisywania aktywnego okna, gdy OSK jest zminimalizowane.
To jest błąd.
Teraz, kiedy przywracasz zminimalizowany OSK, ma amnezję i pamięta tylko ostatnie aktywne okno sprzed minimalizacji. Teraz skupi się na tym starym oknie, zamiast na poprzednim prawdziwym aktywnym oknie.
„Poprawka”, której użyłem, polegała po prostu na tym, aby OSK nie zmuszał żadnego okna do skupienia się. Musisz załatać tylko jeden bajt osk.exedla tej poprawki i dlatego ją wybrałem. Każda inna łata byłaby w przeciwnym razie niezwykle skomplikowana.
W x64dbg po prostu wyszukujesz wszystkie odniesienia do SetForegroundWindow. Istnieją tylko dwa wywołania tej metody Win32. Pierwszy odnośnik to ten, który należy załatać. push eaxTuż przed wezwaniem jest instrukcja SetForegroundWindow. Wystarczy wymienić push eaxz ret, zapisz się osk.exei zastąpić oryginalny osk.exez tego poprawionych wersji.

Problem rozwiązany.
To nie jest rozwiązanie w 100%, ponieważ utracono wygodę automatycznej aktywacji OSK, ale nadal jest to lepsze bez pierwotnej irytacji. Zamiast tego można przywrócić automatyczną aktywację za pomocą AutoHotKey.
Zostaw wiadomość tutaj, a ja opublikuję skrypt, jeśli ktoś będzie go potrzebować. Dzięki poprawce + skryptowi AHK masz w pełni działający OSK bez irytującego oryginalnego błędu.