Página 1 de 1
Como pressionar SOMENTE a tecla ALT
Enviado: 05 Mar 2019 18:05
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
Como pressionar SOMENTE a tecla ALT (RESOLVIDO)
Enviado: 05 Mar 2019 18:16
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.
Como pressionar SOMENTE a tecla ALT
Enviado: 05 Mar 2019 21:30
por fladimir
Não entendi a aplicabilidade do código.
Poderia explicar com mais detalhes ou exemplos?
Como pressionar SOMENTE a tecla ALT (Atualizado)
Enviado: 06 Mar 2019 04:58
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
Como pressionar SOMENTE a tecla ALT
Enviado: 06 Mar 2019 08:06
por fladimir
Entendi.
Obrigado por compartilhar e parabéns.
Como pressionar SOMENTE a tecla ALT
Enviado: 06 Mar 2019 09:03
por asimoes
Isso é pra que lib hmg, hmge ou hwgui?
Como pressionar SOMENTE a tecla ALT
Enviado: 06 Mar 2019 11:08
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.
Como pressionar SOMENTE a tecla ALT
Enviado: 06 Mar 2019 11:12
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?
Como pressionar SOMENTE a tecla ALT
Enviado: 06 Mar 2019 14:43
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.
Como pressionar SOMENTE a tecla ALT
Enviado: 07 Mar 2019 13:11
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.
Como pressionar SOMENTE a tecla ALT
Enviado: 11 Mar 2019 15:11
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.
Como pressionar SOMENTE a tecla ALT
Enviado: 11 Mar 2019 18:34
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