quarta-feira, 23 de maio de 2007

Letras maiúsculas, por favor !

Eu nunca precisei ter que ligar a tecla CAPSLOCK em meus programas. Mas já vi muita gente perguntando se isso seria possível. Pesquisando pelo site da Microfocus, achei um exemplo bem fácil de como ativá-la. A rotina provavelmente deva funcionar tanto em modo gráfico como em modo caracter:

program-id. set-caps-on.
environment division.
configuration section.
special-names.
....call-convention 74 is winapi.
data division.
working-storage section
.
78 VK-CAPITAL value 20.
01 KeyState pic x(256) value spaces.
procedure division.
000-begin.
....call "cob32api"

....call WINAPI "GetKeyboardState" using by reference KeyState
....if KeyState(VK-CAPITAL + 1:1) not = x"01"
.......call WINAPI "keybd_event" using by value VK-CAPITAL
.......................................by value x"45"
.......................................by value 1
.......................................by value 0
.......end-call
.......call WINAPI "keybd_event" using by value VK-CAPITAL
.......................................by value x"45"
.......................................by value 3
.......................................by value 0
.......end-call
....end-if
....goback.


Eu ainda estou "apanhando" aqui no blog pra conseguir criar uma "identação" convincente nos exemplos de rotinas que de vez em quando publico por aqui. Enquanto não consigo me entender com o editor do blogger, vou "mascarando" alguns caracteres ao lado esquerdo das linhas. Portanto, se você for fazer um "copiar e colar" da rotina acima, desconsidere os caracteres que vai encontrar ao lado esquerdo de cada uma das linhas, ok ?

A rotina original pode ser encontrada no site da
Microfocus
.

Nenhum comentário: