Como pressionar SOMENTE a tecla ALT

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por clodoaldomonteiro »

Olá amigos,

Uso o xHarbour 1.00 com GTWVW.

Tenho aqui uma questão interessante, que é, ao sair dos CRUDs, voltar o FOCO para o exato lugar onde estava no MENU Windows.
Como o ATL não pode ser acionado com o KEYBOARD, pois não tem código CHR Tabela ASCII, a única opção seria uma função em C.
Até consegui, mas ou fica pressionado, ou pressiona e solta logo que nem dá para perceber, mas não sei nada de "C".

Desde já agradeço a atenção.

PS. Cuidado, seu teclado pode ficar travado, pelo menos a tecla ALT.

Código: Selecionar todos

/////////////////////////////////////////////////////////////////
//Pressionar a tecla alt
#pragma BEGINDUMP
#include <windows.h>
HB_FUNC( _VK )
   {
   keybd_event (VK_MENU, 0x12, KEYEVENTF_EXTENDEDKEY | 0, 0 );
   keybd_event (VK_MENU, 0x12, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
   }
#pragma ENDDUMP
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT (RESOLVIDO)

Mensagem por clodoaldomonteiro »

Consegui,

Código: Selecionar todos

/////////////////////////////////////////////////////////////////
//Pressionar a tecla alt
#pragma BEGINDUMP
#include 
HB_FUNC( _VK )
   {
   keybd_event (VK_MENU, 0, 0, 0 );
   keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
   }
#pragma ENDDUMP
Só falta passar mais parâmetros para serem executados, para que o MENU navegue automaticamente.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Como pressionar SOMENTE a tecla ALT

Mensagem por fladimir »

Não entendi a aplicabilidade do código.
Poderia explicar com mais detalhes ou exemplos?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT (Atualizado)

Mensagem por clodoaldomonteiro »

Bom,
A intenção é quando o usuário fechar a janela aberta no MENU Windows, o sistema volte no MENU para exatamente onde ele estava, executando pra o usuários as teclas de acesso ao MENU até chegar na opção esperada e com isso, seu MENU Win vai ficar igual aos menus clipper.

Código: Selecionar todos

Function MAIN()
   .................................
   //na função MenuAction
   //Chamar as funções abaixo no final de cada Procedure de Tela de edução
   Cadastro()
   _VKALT()             //Pressiona o ALT
   _VKLETRA(0x54)  //Pressiona a tecla T
   _VKSETABAI(1)    //Pressiona seta pra baixo uma vez
   ..................................   

   Return .t.

#pragma BEGINDUMP
#include <windows.h>

   /////////////////////////////////////////////////////////////////
   //Pressionar a tecla alt
HB_FUNC( _VKALT )
   {
   keybd_event (VK_MENU, 0, 0, 0 );
   keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
   }

   /////////////////////////////////////////////////////////////////
   //Pressionar qualquer tecla
HB_FUNC( _VKLETRA )
   {
   keybd_event (hb_parnl(1), 0, 0, 0 );
   keybd_event (hb_parnl(1), 0, KEYEVENTF_KEYUP, 0);
   }

   /////////////////////////////////////////////////////////////////
   //Pressionar seta direita
HB_FUNC( _VKSETADIR )
   {
   keybd_event (VK_RIGHT, 0, 0, 0 );
   keybd_event (VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
   }

   /////////////////////////////////////////////////////////////////
   //Pressionar seta baixo
HB_FUNC( _VKSETABAI )
   {
   int n = 1;
   for(n = 1; n <= hb_parni(1); n++) {
      keybd_event (VK_DOWN, 0, 0, 0 );
      keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
      }
   }
#pragma ENDDUMP
Tá meio tosco mas tá funcionando.

Links:
https://docs.microsoft.com/en-us/window ... eybd_event
https://docs.microsoft.com/pt-br/window ... -key-codes
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Como pressionar SOMENTE a tecla ALT

Mensagem por fladimir »

Entendi.

Obrigado por compartilhar e parabéns.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como pressionar SOMENTE a tecla ALT

Mensagem por asimoes »

Isso é pra que lib hmg, hmge ou hwgui?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por clodoaldomonteiro »

Como disse acima, estou usando o xHarbour 1.00 + GTWVW, para usar CONSOLE com MENU Win, e como a implementação é numa área BEGINDUMP, que vai criar uma função em C, e acho que pode ser usado em qualquer versão (x)Harbour.

O Quintas já usava algo assim para criar funções para o CTRL+C e CTRL+V e me deu uma ajuda.

Divirtam-se amigos.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por microvolution »

olá bom dia!
isto se aplica também no MENUBAR da GTWVG?
outra coisa:
eu já havia desabilitado o indesejável ALT+C no meu menu clipper (console), mas, ao usar o MENUBAR da GTWVG ele voltou sem pedir licença. Sr. autor do tópico ou demais, tem alguma ideia de como barrar novamente o ALT+C?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por clodoaldomonteiro »

Olá Microvolution
microvolution escreveu:olá bom dia!
isto se aplica também no MENUBAR da GTWVG?
outra coisa:
eu já havia desabilitado o indesejável ALT+C no meu menu clipper (console), mas, ao usar o MENUBAR da GTWVG ele voltou sem pedir licença. Sr. autor do tópico ou demais, tem alguma ideia de como barrar novamente o ALT+C?
Cada LIB gráfica tem suas particularidades.
Para desativa o ALT+C ainda estou usando o SetCancel(.f.) e assim, se o usuário fechar a tela principal no [X]Vermelho (canto superior direito), executa um ESC que posso desviar para uma Precedure que executo as rotinas de BKP e LOGS.

Uma dica, é procurar nos fontes da sua LIB algo relacionado com sua dúvida, ou pergunte para o José Quintas aqui do grupo, pois ele é Dr. em GTWVG.

Forte abraço.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por microvolution »

sim já uso o setcancel(.f.)
alguma coisa na criação do menubar wvg é que fez isso sumir. investiguei o que alterei no código e percebi que a retirada do inkey(0) (não necessário no menubar wvg) fez com que o pressionamento do ALT+C encerrasse o sistema. Então voltei com o inkey pro lugar (afinal não atrapalha em nada) e o ALT+C parou de incomodar.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
syslink
Usuário Nível 3
Usuário Nível 3
Mensagens: 132
Registrado em: 20 Fev 2018 13:13
Localização: joinvile/sc

Como pressionar SOMENTE a tecla ALT

Mensagem por syslink »

andei estudano seu codigo mas vi q ele faz apenas e precionar a tecla alt depois seta pra direita e depois a letra t. no meu caso como tem uma opcao de meni q tem acionamento pela letra t o seu codigo so abre ele em qq jeito q mexer pensei q ele abria a ultima opcao anterior antes do clique do mouse talvez num futuro se conciga um codigo mais eficas valeu pela intecao.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Como pressionar SOMENTE a tecla ALT

Mensagem por clodoaldomonteiro »

syslink escreveu:andei estudano seu codigo mas vi q ele faz apenas e precionar a tecla alt depois seta pra direita e depois a letra t. no meu caso como tem uma opcao de meni q tem acionamento pela letra t o seu codigo so abre ele em qq jeito q mexer pensei q ele abria a ultima opcao anterior antes do clique do mouse talvez num futuro se conciga um codigo mais eficas valeu pela intecao.
Para descer no MENU até a posição que vc quiser, basta colocar a função a seguir com o numero de vezes que a seta pra baixo de ser pressionada.

Código: Selecionar todos

_VKSETABAI(numeroVezes)    //Pressiona seta pra baixo uma vez
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder