Quero usar a AutoHotkey para rolar um documento horizontalmente no Adobe Reader X. Enviar mensagens de roda (0x20e) não funciona, nem enviar mensagens de rolagem (0x114). O único método que pude encontrar é enviar cliques para as setas da barra de rolagem, mas isso torna a rolagem horizontalmente muito lenta, além de atrasar muito a rolagem vertical simultânea. Além disso, notei que o driver do mouse (UltraNav) pode rolar sob uma caixa de diálogo aparentemente modal no Adobe Reader X, como a caixa de diálogo Abrir arquivo, enquanto nenhum dos três métodos acima pode. Alguém sabe o que o driver do mouse pode estar fazendo ou tem outra maneira?
Acabei de encontrar um quarto método que funciona muito bem para a maioria dos aplicativos para os quais os dois primeiros falham, que é enviar teclas de seta para a barra de rolagem. Quando responde adequadamente, também responde a {PgUp} e {PgDn} que rola por página. No entanto, ele ainda não funciona sob uma caixa de diálogo modal, portanto, o que o driver do mouse faz permanece um mistério para mim, embora pareça rolar nas mesmas quantidades. Além disso, esse método não funciona no Windows Explorer (como esperado); as teclas enviadas para as barras de rolagem também são enviadas para a área principal. Por exemplo controlsend,%scrollbarname%,{Down},ahk_id %window%
, rolará com sucesso a barra de rolagem, mas também fará com que a posição de seleção atual se mova para baixo, se possível. Não consigo encontrar outra maneira de controlar a barra de rolagem horizontal no Windows Explorer sem enviar cliques do mouse.
Editar
Consulte Rolagem do AutoHotkey, clique do meio e aceleração do mouse, que era meu objetivo original, o Adobe Reader sendo apenas um dos muitos aplicativos que não entendem as mensagens usuais da roda.
fonte
@<username>
em qualquer lugar do seu comentário.Você pode clicar (basta pressionar o botão esquerdo do mouse, ainda não o relia) no início da barra de rolagem, no local em que o ponto vermelho está na imagem abaixo. Depois de mover o mouse o mais para baixo possível, no local em que o ponto verde está na imagem abaixo. Agora solte o botão esquerdo do mouse. A velocidade de rolagem deve ser boa o suficiente.
Aqui está o código de script completo do AutoHotkey:
As variáveis InitX e InitY devem conter pontos iniciais das coordenadas (x e y, respectivamente). Coordenadas do ponto vermelho que estão na imagem acima.
As variáveis DestX e DestY devem conter coordenadas (x e y, respectivamente) para os pontos de destino. Coordenadas do ponto verde que está na imagem acima.
EDITADO :
Que isso possa ajudá-lo: http://ahkscript.org/boards/viewtopic.php?f=5&t=4028
Faça o download da nova versão do AutoHotkey em http://ahkscript.org/ (versão atual). AutoHotkey de autohotkey.com está desatualizado!
fonte
0
. Pode subir para100
(mais valor, menos velocidade). E sim, a velocidade de rolagem varia com a largura do documento. Código atualizado.Resposta curta
Para rolagem horizontal no Adobe Reader X, envie mensagens de rolagem para o pai da barra de rolagem, como no
sendscrolltoscrollbarparent
código. Muitas outras maneiras não funcionariam corretamente. De alguma forma, esse método fornece rolagem muito rápida, ainda melhor do que o driver do mouse original.Resposta longa
Eu tinha encontrado minhas próprias respostas, mas havia esquecido essa pergunta. Basicamente, usei um método idiossincrático para cada aplicação maluca. Como existem muitas, criei uma pergunta e uma resposta separadas para todo o lote ( rolagem AutoHotkey e clique do meio e aceleração do mouse ) e forneço apenas as partes relevantes para o Adobe Reader aqui.
O processo deve ser assim. Primeiro você chama
gettarget
, que assume que a posição do mouse está armazenadamx,my
e encontra o destino correto para os eventos de rolagem com base no que está atualmente sob o mouse. Em seguida, você liga várias vezesscroll
após adicionar o valor para o qual deseja rolarsx,sy
.Para o Adobe Reader, até a rolagem vertical depende do envio de mensagens de roda para o lugar certo, o que não é consistente e, portanto, acabei codificando para os dois casos principais, que rolam na área de exibição do documento e na área de marcadores. Para descobrir qual é o caso, verifico se o pai do controle sob o mouse tem um descendente chamado
AVL_AVView4
ou não. Se isso acontecer, é a pessoa certa para a qual enviar as mensagens de roda vertical executadas porsendwheel
. Mas para rolagem horizontal, verifica-se que o envio de mensagens de rolagem para o controle pai da barra de rolagem correta funciona nos dois locais, executados porsendscrolltoscrollbarparent
. A barra de rolagem correta é aquela chamadascrollbar1
descendente do pai do controle sob o mouse.Código
fonte
Minha solução:
Você pode aumentar o número 20 para rolar mais devagar
fonte