Como desactivar alternar para NUM/CAPS/SCROLL LOCK com chave de trap

Traduções de Artigos Traduções de Artigos
Artigo: 59132 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Configurando chaves traps para a tecla NUM LOCK, CAPS LOCK e SCROLL LOCK chaves, pode impedir um programa Basic alternar de cada um destes estados de chave. Isto é muito útil para outras chaves do véu porque o programa pode limitar o número de chaves para ser definido. O primeiro exemplo abaixo demonstra este tipo de funcionalidade.

Outro exemplo abaixo demonstra como programaticamente (sem premir a tecla) força o estado de CAPS LOCK para ON ou OFF. Neste exemplo mesmo pode ser utilizado para as chaves NUM LOCK e SCROLL LOCK.

Mais Informação

A sintaxe da instrução de chave (em que n = 15 e 25 podem ser definidos pelo utilizador chaves) é o seguinte:
   KEY n, CHR$(keyboardflag) + CHR$(scancode)
				
o seguem são os códigos de pesquisa para as teclas CAPS LOCK, NUM LOCK e SCROLL LOCK:
   Key           Scan Code
   ---           ---------
   CAPS LOCK     &H3A
   NUM LOCK      &H45
   SCROLL LOCK   &H46
				
por definir véus de NUM LOCK e CAPS LOCK, o programa pode efectivamente reduzir (por um factor de quatro) o número de chaves necessárias para ser definido. Por exemplo, para aplicar véus de CTRL-ALT -DEL e combinações de teclas CTRL+BREAK, 16 chaves tem ser criadas para processar todas as combinações de teclas diferente. Esta é a mais do que o número máximo de chaves definido pelo utilizador (11). Definindo CAPS e aplica um véu a tecla NUM LOCK, tem de ser definidas apenas 4 chaves adicionais.

Exemplo de código

Desactiva o seguinte exemplo de código activa para as teclas CAPS LOCK, NUM LOCK e SCROLL LOCK:
' NOTE: This program assumes NUM LOCK and CAPS LOCK are off at the
'       beginning. See the article referenced above for how to set
'       the NUM and CAPS LOCK off.
KEY 15, CHR$(&H0) + CHR$(&H3A)       ' CAPS LOCK
ON KEY(15) GOSUB caps
KEY(15) ON

KEY 16, CHR$(&H0) + CHR$(&H45)       ' NUM LOCK
ON KEY(16) GOSUB num
KEY(16) ON

KEY 17, CHR$(&H0) + CHR$(&H46)       ' SCROLL LOCK
ON KEY(17) GOSUB scroll
KEY(17) ON

WHILE INKEY$ <> CHR$(27): WEND
END

caps: PRINT "NO CAPS LOCK TOGGLE!"
RETURN

num:  PRINT "NO NUM LOCK TOGGLE!"
RETURN

scroll:  PRINT "NO SCROLL LOCK TOGGLE!"
RETURN
				
o exemplo de código abaixo permite-lhe determinar o estado da tecla CAPS LOCK com o seguinte comando OBSERVAÇÃO:
   DEF SEG = 0
   X = PEEK(1047) AND 64
				
se CAPS LOCK está desactivado, o valor de "X" será "0". Se CAPS LOCK está activada, o valor será 64.

Para forçar as teclas CAPS LOCK desactivado, utilize o seguinte comando:
   DEF SEG = 0
   POKE 1047, PEEK(1047) AND 191
				
para forçar as teclas CAPS LOCK no, utilize o seguinte:
   DEF SEG = 0
   POKE 1047, PEEK(1047) OR 64
				
cada bit de localização 1047 reflecte o estado de um sinalizador de teclado. Isto inclui NUM LOCK, SCROLL LOCK, CAPS LOCK, modo de inserção e quer ou não as teclas SHIFT esquerda e direita, a tecla ALT ou CTRL (controlo) tecla é premida actualmente ou não. Consulte a tabela seguinte para obter mais informações:
   Bit No.         Decimal Value           Keyboard Flag
   ---------------------------------
   0               1                       RIGHT SHIFT
   1               2                       LEFT SHIFT
   2               4                       CTRL (Control)
   3               8                       ALT
   4               16                      SCROLL LOCK
   5               32                      NUM LOCK
   6               64                      CAPS LOCK
   7               128                     INS (Insert mode)
				
Apesar da tecla INS estiver incluída na tabela acima, não é possível efectuar utilizar do mesmo. No Visual Basic for MS-DOS, pode utilizar o POKE ou a interrupção CALL para definir o modo de inserção quando estiver no modo de formulários. É a única forma de definir o modo de inserção premindo a tecla INS. Isto ocorre por predefinição no Visual Basic for MS-DOS.

Para determinar o estado de qualquer sinalizador, a seguinte instrução irá devolver "0" Se o sinalizador está desmarcado (desligado ou não premido) e irá devolver <bval> Se o sinalizador está definido (activado ou premido):
   PEEK(1047) AND <bval>
   (where <bval> is the decimal value of the bit that represents
   the flag you want)
				
para forçar o sinalizador de sessão (Isto só se aplica as chaves LOCK--não a tecla INS), terá de definir o bit adequado. Pode fazê-lo com a seguinte instrução POKE:
   POKE 1047, PEEK(1047) OR <bval>
   (where <bval> is the decimal value of the flag you want to set)
				
para forçar o sinalizador terminar, pode utilizar a seguinte instrução semelhante:
   POKE 1047, PEEK(1047) AND (255 - <bval>)
				
definir o sinalizador de nota que poking simplesmente o valor de bit num 1047 seria eficazmente, mas também desmarque todos os outros sinalizadores. Assim, deve reter os valores anteriores dos outros sinalizadores utilizando as estratégias acima.

Note que, em vez de utilizar, OBSERVAR, também pode obter o estado dos sinalizadores de teclado com IBM ROM BIOS interrupção 16 h, utilizando função número 2. Esta interrupção devolve o byte de sinalizadores de ROM BIOS que descreve o estado das seguintes activa/desactiva o teclado e teclas SHIFT: direita ou esquerda tecla SHIFT premida, tecla CTRL premida tecla ALT premida, SCROLL LOCK activada, NUM LOCK activada, CAPS LOCK, inserir no.

Propriedades

Artigo: 59132 - Última revisão: 16 de agosto de 2005 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic for MS-DOS
  • Microsoft QuickBasic 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBasic 4.5 para MS-DOS
  • Microsoft BASIC Compiler 6.0
  • Microsoft BASIC Compiler 6.0b
  • Microsoft BASIC Professional Development System 7.0
Palavras-chave: 
kbmt KB59132 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 59132
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com