Como evitar que o teclado na tela se concentre na última janela minimize por ele

1

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?

    
por Another Dimension 21.12.2016 / 22:11

2 respostas

0

Estava procurando a mesma coisa, tropeçou nisso.

link

Aparentemente, o bug é conhecido pelo menos desde 2013. Eu não acho que haja uma correção pronta.

    
por 29.03.2017 / 10:36
0

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.

    
por 22.07.2018 / 06:39