Clipper On Line • Ver Tópico - Como pressionar SOMENTE a tecla ALT

Como pressionar SOMENTE a tecla ALT

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

Moderador: Moderadores

 

Como pressionar SOMENTE a tecla ALT

Mensagempor clodoaldomonteiro » 05 Mar 2019 18:05

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.

/////////////////////////////////////////////////////////////////
//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 de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Como pressionar SOMENTE a tecla ALT (RESOLVIDO)

Mensagempor clodoaldomonteiro » 05 Mar 2019 18:16

Consegui,
/////////////////////////////////////////////////////////////////
//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 de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor fladimir » 05 Mar 2019 21:30

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Como pressionar SOMENTE a tecla ALT (Atualizado)

Mensagempor clodoaldomonteiro » 06 Mar 2019 04:58

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.

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 de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor fladimir » 06 Mar 2019 08:06

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor asimoes » 06 Mar 2019 09:03

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor clodoaldomonteiro » 06 Mar 2019 11:08

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
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor microvolution » 06 Mar 2019 11:12

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!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor clodoaldomonteiro » 06 Mar 2019 14:43

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
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor microvolution » 07 Mar 2019 13:11

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!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor syslink » 11 Mar 2019 15:11

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.
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 132
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Como pressionar SOMENTE a tecla ALT

Mensagempor clodoaldomonteiro » 11 Mar 2019 18:34

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.
_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
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro