|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
eudiclei Aprendiz
Registrado: Quarta-Feira, 23 de Março de 2005 Mensagens: 178
|
Enviada: Seg Mar 19, 2018 11:11 am Assunto: Tab no OnShow (keybd_event), e tab+ctrl ??? [Resolvido] |
|
|
Olá amigos,
Para dá um tab ao mostra a janela é colocado no onshow:
keybd_event (VK_Tab, 0,0,0);
e como faço para ser tab + ctrl?
Podem me ajudar?
Editado pela última vez por eudiclei em Ter Mar 20, 2018 12:44 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Mar 19, 2018 12:01 pm Assunto: |
|
|
Se quiser manter pressionado as teclas Tab + Ctrl:
Código: | keybd_event(VK_TAB, 0, KEYEVENTF_EXTENDEDKEY or 0, 0); { Mantém pressionada TAB }
keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0); { Mantém pressionada CTRL } |
Não se esquecendo de liberar as teclas depois:
Código: | keybd_event(VK_TAB, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); { Libera (solta) TAB }
keybd_event(VK_CONTROL, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); { Libera (solta) CTRL } |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
|
eudiclei Aprendiz
Registrado: Quarta-Feira, 23 de Março de 2005 Mensagens: 178
|
Enviada: Seg Mar 19, 2018 11:11 pm Assunto: |
|
|
Deu certo, apesar de demorar pra descobrir que deveria usa o Shift e não o Ctrl.
Aí deu tudo certo. Obrigado! |
|
Voltar ao Topo |
|
|
ronaldgraff Novato
Registrado: Quinta-Feira, 23 de Fevereiro de 2012 Mensagens: 29
|
Enviada: Qua Dez 04, 2019 11:25 am Assunto: |
|
|
natanbh1 escreveu: | Se quiser manter pressionado as teclas Tab + Ctrl:
Código: | keybd_event(VK_TAB, 0, KEYEVENTF_EXTENDEDKEY or 0, 0); { Mantém pressionada TAB }
keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0); { Mantém pressionada CTRL } |
Não se esquecendo de liberar as teclas depois:
Código: | keybd_event(VK_TAB, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); { Libera (solta) TAB }
keybd_event(VK_CONTROL, $45, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); { Libera (solta) CTRL } |
|
Talvez você possa me ajudar.
Eu estou com um problema pra utilizar dois atalhos, CTRL + F3 e somente F3
Quando pressiono Ctrl+F3 ele tbm executa o F3, tentei ignorar o F3 quando o control estiver pressionado, o que funciona, só que depois de pressionar CTRL ele fica "pressionado" e preciso apertar a tecla novamente pra liberar o evento da memoria.
Tentei usar o keybd_event sugerido acima, mas não funcionou.
Alguma informação que possa me ajudar que eu desconheça?? |
|
Voltar ao Topo |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Dez 04, 2019 2:46 pm Assunto: |
|
|
Teste essa abordagem, criando atalhos para F3 e CTRL+F3:
Na seção private declare esta procedure:
Código: | private
{ Private declarations }
procedure WMHotkey(var Msg: TWMHotkey); message WM_HOTKEY; |
Abaixo na seção Implementation coloque a procedure:
Código: | procedure TForm1.WMHotkey(var Msg: TWMHotkey);
begin
case Msg.HotKey of
1:
ShowMessage('Pressionadas as teclas CTRL+F3');
2:
ShowMessage('Pressionada a tecla F3');
end;
end; |
No evento OnCreate, registre os atalhos:
Código: | procedure TForm1.FormCreate(Sender: TObject);
begin
if not RegisterHotkey(Handle, 1, MOD_CONTROL, VK_F3) then
ShowMessage('Erro ao programar Ctrl+F3');
if not RegisterHotkey(Handle, 2, MOD_NOREPEAT, VK_F3) then
ShowMessage('Erro ao programar F3');
end; |
No evento OnDestroy, remova o registro dos atalhos:
Código: | procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotkey(Handle, 1);
UnRegisterHotkey(Handle, 2);
end; |
Fonte: http://www.tecnobyte.com.br/1238112/Delphi-Teclado-e-Mouse _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|