|
Postada em 06/07/2007 16:53 hs
Olá. Tenho reparado que, em alguns projects criados, ao testar o executável, a tecla NumLock desliga sozinha, impedindo a digitação de números pelo teclado da direita. Não sei porque a tecla desativa... Em algumas inputbox que requerem a entrada de números, o usuário digita, p.ex., 56 no teclado numérico e confirma com <Enter>. Todavia, estando desativado esse controle, se o usuário não perceber, obterá uma resposta não esperada do programa... Tem como ativar esse controle? Como fazer? (já tentei diversas opções que encontrei por aí, com códigos extensos em módulos e chamadas por funções, sem resultado concreto...). Haverá algum jeito deixar essa tecla ativada, quando for carregado um form de entrada de dados? Ou, talvez, reformulando a pergunta, como impedir a desativação dessa tecla no carregamento do form? Agradeço se algum "Expert" puder ajudar. Chico.
|
|
|
|
SergioC
|
ORLÂNDIA SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 06/07/2007 18:07 hs
Foi relatado na Web que o SendKeys pode apresentar algumas incompatibilidades com o teclado no Windows 2000. Alguns relatos contam que o teclado chega a travar diversas vezes durante o dia, obrigando o usuário a desconectar e reconectar o teclado.
Para resolver o problema podemos substituir a instrução sendkeys pela API PostMessage. Esta API pode substituir o SendKeys, gerando uma mensagem do Windows para nosso form como se uma determinada tecla houvesse sido pressionada.
Veja a declaração desta API :
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd as long, byval wMsg as Long, byval wParam as Long, Iparam as Any) as Long
Precisaremos também de constantes contendo o código de algumas teclas. Vamos fazer o clássico exemplo de troca de ENTER por TAB :
Public Const WM_KEYDOWN = &H100 Public Const VK_TAB=&h9
E nos eventos de tratamento de tecla :
if keyascii=13 then retval=postmessage(me.hwnd,WM_KEYDOWN,VK_TAB,0) keyascii=0 end if
Tive alguns problemas com o SendKey que foram resolvidos qdo.troquei pelas instruções acima. Boa Sorte
Abraços, Sérgio Coelho
|
TÓPICO EDITADO
|
|
|
|
Deivinho
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 18/02/2008 08:22 hs
Oi, so teim Uma maneira de resolver seu Problema. abri o regedit siga os seguintes passos. HKEY_USERS/DEFAULT/CONTROL PANEL/KEYBOARD Na janela do lado altere o seguinte Valor "InitialKeyboardIndicators" de "0" para "2". Bom espero Ter te Ajudado.....!
|
|
|
|
Postada em 29/10/2023 11:47 hs
Vlw Deivinho, 2023 seu metodo funcionando
|
|
|
|