No Windows 10, por que o teclado interno não aparece para um Visual Basic InputBox?

0

Eu instalei um aplicativo de desktop de 32 bits no Windows 10 Pro x64 pela primeira vez. Anteriormente, ele foi usado com sucesso no Windows 7.

É um PC com um monitor touchscreen externo usado em um modo de quiosque para que a única coisa disponível para o usuário seja o próprio programa. Sem um teclado físico ou fechando o programa, eles não podem ver a barra de tarefas ou a bandeja do sistema.

Em Configurações / Dispositivos / Digitação, selecionei "Mostrar o teclado de toque ou o painel de texto manuscrito quando não estiver no modo tablet e não houver nenhum teclado conectado."

O aplicativo tem apenas alguns lugares que permitem ao usuário digitar. O teclado aparece bem no login do Windows e nas telas que usam um TextBox. Mas há alguns lugares que usam uma caixa de diálogo InputBox genérica e o teclado não aparece.

Eu testei o "Adicionar o layout de teclado padrão como uma opção de teclado de toque", o que não parece ter efeito.

Configurar o OSK para iniciar automaticamente, que é o que eu costumava fazer no Windows 7, é na melhor das hipóteses esquisito porque você não pode minimizá-lo sem perdê-lo na bandeja do sistema oculta e é superdimensionado comparado ao outro teclado.

Há outra configuração que preciso examinar para que funcione?

Atualização: A razão pela qual o TextBox abre o teclado é que ele recebe um caractere de senha. Um TextBox normal também não traz o teclado para a frente.

    
por Rich Shealer 27.08.2016 / 20:02

1 resposta

1

Trabalhando com o programa e fazendo mais pesquisas, posso resumir onde o teclado aparece automaticamente com um programa do WinForm.

  • TextBox com o conjunto de propriedades PasswordChar .
  • A ComboBox com a propriedade DropSownStyle definida como DropDown .

Descobri que não havia como usar o InputBox para usar o toque. Acabei fazendo um formulário personalizado com um TextBox e anexei algumas rotinas personalizadas aos eventos Enter e Leave do TextBox .

Como este não é o site de programação, vou resumi-lo.

Eu usei o TabletDeviceCollection para ver se o computador tinha um TabletDevice com Type de TabletDeviceType.Touch .

Se eu, então, lancei o teclado assim:

Process.Start("C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe")

Em seguida, para fechá-lo, chamei o Win32 function FindWindow("IPTIP_Main_Window", "") não gerenciado para obter um identificador e, em seguida, chamei outro WIn32 para enviar uma mensagem. SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0)

Para mais informações, pesquise essas frases.

    
por 29.08.2016 / 15:15