Como posso fazer com que uma tecla de atalho seja específica para um aplicativo, mas condicionada a algum fator para que, se a condição não for verdadeira, a tecla de atalho seja tratada pelo manipulador nativo/padrão?
Criei uma tecla de atalho que quero que funcione no MS Access quando estiver no modo de design de consulta. Estou detectando esse modo usando a pesquisa de imagens FindText . Se o modo for detectado, quero que meu script de autohotkey seja executado e não retorne o pressionamento de tecla para o Windows ou o Access. Se o modo não for detectado, quero que o Windows/Access seja capaz de lidar com o pressionamento de tecla.
Não sei como fazer o script ignorar essa tecla de atalho se a condição não for detectada. Eu tenho um script assim:
#IfWinActive ahk_class OMain ; Access
^R:: ; CTRL+R
; Use FindText to see if a certain image is on screen
If FindText()...
{
; do my automation of Access
}
else
{
; I'm not in the design mode. Let the CTRL+R key be handled by Access or Windows.
}
return
#IfWinActive
Tentei prefixar a tecla de atalho com o til, mas isso permitiria que o Access fizesse algo que não quero que aconteça no modo de design.
Quais são algumas maneiras de lidar com isso?
Para os curiosos, criei uma macro AutoHotkey para Access que expandirá todas as larguras das colunas na visualização Design da consulta. Isso salva minha sanidade ao tentar revisar fórmulas longas.
Para isso:
Você pode apenas usar SendInput para fazer o que quiser aqui.
Muitas das minhas próprias chaves são configuradas dessa maneira. Capture algumas teclas, verifique uma condição e trate-a ou deixe as teclas "passarem" usando SendInput
Por exemplo F11 no navegador: se o título for tal e tal, eu faço certas coisas como preencher um formulário, mas caso contrário, eu uso SendInput {F11} para "passar" para o navegador fazer seu normal coisa de triagem completa.