Estava procurando a mesma coisa, tropeçou nisso.
Aparentemente, o bug é conhecido pelo menos desde 2013. Eu não acho que haja uma correção pronta.
Eu gosto muito de usar o teclado na tela, mas há um problema irritante.
Se eu usar o Google Chrome (por exemplo) e minimizá-lo usando o teclado na tela, minimize o teclado na tela e abra outro programa como o bloco de notas (o teclado na tela deve permanecer focado no bloco de notas) maximiza o Google Chrome então eu tenho que clicar no bloco de notas novamente.
Parece que o teclado na tela controla a ordem das janelas abertas, e o foco do teclado na tela fica na última janela, minimizando com isso em vez de focar na última janela quando clico nele para maximizar.
Como resolvo isso?
Estava procurando a mesma coisa, tropeçou nisso.
Aparentemente, o bug é conhecido pelo menos desde 2013. Eu não acho que haja uma correção pronta.
Eu rastreei este bug extremamente irritante todo o caminho de volta para o Windows XP, então este é na verdade agora um bug de 17 anos que ainda não foi corrigido (!).
Este bug também é discutido aqui, mas o tópico está bloqueado e você não pode mais discutir este problema:
link
Consegui criar uma correção simples carregando osk.exe
em x64dbg, analisando qual era o problema e, em seguida, aplicando o código usando o depurador (veja abaixo as instruções).
O que está acontecendo é que osk.exe
está armazenando continuamente a última janela ativa para focalizar essa janela quando o mouse passa sobre o OSK ou quando o usuário ativa o OSK. Isso mantém o foco na última janela ativa em todos os momentos, o que garante que quando você digita com o OSK, a entrada vai para onde deveria.
O problema é que osk.exe
pára de armazenar a janela ativa quando o OSK é minimizado.
Este é o bug.
Agora, quando você restaura um OSK minimizado, ele tem amnésia e apenas lembra a última janela ativa antes de ser minimizada. Então agora ele irá focar esta janela antiga, ao invés da janela ativa real anterior.
A "correção" que usei foi simplesmente impedir a OSK de forçar qualquer janela a ficar focada. Você só precisa corrigir um byte em osk.exe
para essa correção e é por isso que o escolhi. Qualquer outro patch teria sido extremamente complicado, de outra forma.
No x64dbg você simplesmente procura por todas as referências a SetForegroundWindow
. Existem apenas duas chamadas para este método Win32. A primeira referência é aquela para corrigir. Há uma instrução push eax
antes da chamada para SetForegroundWindow
. Basta substituir push eax
por ret
, salvar em osk.exe
e substituir o original osk.exe
por essa versão corrigida.
Problema resolvido.
Não é uma solução 100%, porque a conveniência de ativação automática do OSK é perdida, mas ainda assim é melhor sem o aborrecimento original. A ativação automática pode ser restaurada com o AutoHotKey.
Deixe uma mensagem aqui e postarei o script se alguém precisar dele. Com o script patch + AHK, você tem um OSK totalmente funcional sem o bug original chato.
Tags windows windows-8 windows-8.1