Não é muito irritante como, pelo menos no Windows, qualquer janela pode aparecer em qualquer lugar da tela? Essa aleatoriedade diária lhe dá nos nervos e você prefere ter mais controle sobre o posicionamento de suas janelas na tela? Bem, agora você pode, graças ao AutoHotKey.

Neste tutorial, veremos como você pode resolver esse problema com um script AutoHotKey. Vamos construí-lo para que ele se mova algum janela para o centro da tela com um pressionamento de tecla. Parece doce? Vamos ver como é feito!

Como configurar uma tecla de atalho de centralização de janela com AutoHotKey

Metade da batalha ao criar um script é descobrir como ele funcionará antes mesmo de digitar um único caractere. Então, vamos fazer um plano de ação em inglês simples que vamos "mutar" em um script.

O "problema" que o Windows tem

Windows (como em "as coisas retangulares em nossas telas", não o sistema operacional) tendem a aparecer em qualquer lugar da tela. É uma distração e também pode ser irritante quando acontece repetidamente. Especialmente ao lidar com vários solicitantes aparecendo em pontos diferentes, esperando a entrada do usuário.

A Solução para o Problema

Além de enviar pressionamentos de tecla e cliques do mouse para qualquer janela, o AutoHotKey também pode manipulá-los. Vimos no passado como você pode use AutoHotKey para fixar janelas "sempre no topo" usando um atalho de teclado. Desta vez, porém, aproveitaremos as habilidades de manipulação de janela do AutoHotKey para:

  1. "Ler" o ID da janela ativa.
  2. Também "ler" suas dimensões (largura e altura).
  3. "Leia" as dimensões do monitor.
  4. Combine as dimensões do monitor e da janela para calcular as coordenadas ideais para apresentar a referida janela no centro da tela.
  5. Mova a janela para essas coordenadas.

Por fim, mapeamos o acima para um atalho. Dessa forma, você pode chamá-lo de "sob demanda" em vez de aplicá-lo em tudo windows - o que pode interferir com aplicativos e jogos em tela cheia.

Observe que neste tutorial, vamos mergulhar direto no AutoHotKey. Se você não estiver familiarizado com ele e quiser saber mais antes, confira nosso guia rápido do AutoHotKey para iniciantes.

Primeiro, Configurando a HotKey

Mencionamos como mapeamos a função que criaremos para um atalho. No entanto, provavelmente é melhor se começarmos com essa parte para tirá-la do caminho.

Comece baixando o instalador de Site oficial do AutoHotKey. Vá para a versão "atual" em vez da versão beta v2 ou da versão 1.0 obsoleta. Em seguida, instale-o no seu PC.

Inicie o Explorador de Arquivos (a maneira mais rápida é com a combinação de teclas Windows + E) e vá para o caminho em que deseja criar seu script. Com o AutoHotKey instalado, algumas novas opções aparecerão no menu do botão direito. Então, clique com o botão direito do mouse no espaço vazio da janela do File Explorer e escolha Novo > Script AutoHotKey.

Dê um nome ao arquivo do seu script e clique com o botão direito nele e editar isto. Se você não estiver usando um aplicativo de edição de texto amigável ao código, como o Visual Studio Code ou o Notepad++, use o Windows Notepad. Evite editores como o Wordpad, que podem adicionar sintaxe inútil (para esse propósito) ao seu "código".

Quando estiver no editor de sua escolha, você verá que seu script AutoHotKey já possui algumas linhas pré-preenchidas na parte superior. Eles estão lá por motivos de estabilidade e compatibilidade. Eles são ajustáveis, mas deixe-os como estão para este tutorial.

"Mova" duas ou três linhas abaixo delas e digite o atalho que iniciará sua função. Você pode criar uma combinação de teclas usando "+" para Shift, "^" para CTRL, "!" para Alt e "#" para a tecla Windows, bem como qualquer tecla "normal" do teclado (letras e números).

Por exemplo, para que a combinação CTRL + Y inicie seu script, use:

^y::

O duplo ":" é como dizer: "ei, AutoHotKey, mapeie a string ou a combinação de teclas à esquerda para tudo à direita".

"Mova" duas ou três linhas abaixo pressionando Enter e digite "return", que marcará o fim da função específica. O resultado completo deve se parecer com o seguinte:

^y::
; Esse é um comentário.
Retorna

O "; Este é um comentário." é exatamente isso, um comentário no "código" do script que o AutoHotKey não executará. Está lá para fins de documentação para marcar o local onde inseriremos o "código" do script nas etapas a seguir.

Se você seguiu nosso guia sobre criando teclas de atalho específicas do aplicativo com AutoHotKey no passado, neste caso... não. Você quer que sua tecla de atalho de centralização da janela seja "global" para o centro algum janela de algum aplicativo. Se você "vinculá-lo" a um aplicativo específico, ele atuará apenas nas janelas desse aplicativo.

Obtenha os detalhes da janela ativa

Queremos que nosso atalho atue na janela ativa e também precisamos de suas dimensões para nossos cálculos. Podemos encontrar esses detalhes com o seguinte:

WinGetTitle, ActiveWindowTitle, A
WinGetPos Largura, Altura, %ActiveWindowTitle%

Substitua a linha de comentário que adicionamos ao script na seção anterior pelas duas linhas acima. O resultado?

  • A primeira linha pega o título da janela ativa.
  • A segunda linha lê sua largura e altura e as mapeia para as palavras/variáveis ​​"Width" e "Height", que usaremos a seguir para nossos cálculos.

Conseguimos os detalhes da janela ativa, mas também precisamos das dimensões da área visível do monitor para atingir nosso objetivo. Felizmente, descobrir isso é ainda mais fácil.

E a área do monitor primário?

Não precisamos de comandos extras para encontrar a largura e a altura do nosso monitor principal. AutoHotKey vem com duas variáveis ​​predefinidas que já contêm essa informação para nós: "A_ScreenWidth" e "A_ScreenHeight".

Então, quando você vê-los na próxima seção, eles já "contêm" a largura e a altura do monitor primário. Não há nada necessário para atribuir os valores corretos a eles. Assim, podemos usá-los diretamente em nossos cálculos.

Tempo para calcular a posição alvo

Podemos incluir os cálculos diretamente nos pontos do roteiro onde precisamos deles. Ainda assim, é mais fácil e melhor para legibilidade se mapeá-los para duas variáveis ​​e então use essas variáveis ​​em nosso script.

Então, vamos para "TargetX" como a variável que irá conter as coordenadas horizontais e "TargetY" como a variável um com as coordenadas verticais onde devemos mover a janela para que ela apareça no centro da tela.

TargetX := (A_ScreenWidth/2)-(Largura/2); Aqui calculamos a horizontal janela alvo...
TargetY := (A_ScreenHeight/2)-(Height/2); ...e aqui o vertical.

Vamos decifrar essas linhas em inglês simples:

  • "TargetX" e "TargetY" são as duas variáveis.
  • ":=" informa ao AutoHotKey que as variáveis ​​devem ser iguais aos resultados dos cálculos à direita e que esses resultados devem ser tratados como números.
  • "(A_ScreenWidth/2)" divide a largura total do monitor por dois.
  • "(Width/2)" faz o mesmo para a largura da janela ativa.

Com o acima, estamos subtraindo metade da largura da janela ativa da metade da largura da tela. O que resta é o espaço à esquerda da janela - do lado esquerdo da tela até onde a janela deve aparecer. A segunda linha faz o mesmo, mas para a altura.

Agora para reposicionar a janela

Equipados com o conhecimento todo-poderoso adquirido pelos comandos místicos que vimos acima, agora podemos criar nosso encantamento mágico que completará o ritual de teletransporte da janela. Ou, em inglês simples, use o comando "WinMove" do AutoHotKey para mover as janelas pela tela.

WinMove espera que nós a "alimentemos" com pelo menos três informações para fazer sua ação: o título da janela de destino e as coordenadas para onde movê-la. Como já mapeamos essas informações para variáveis, o comando é tão simples quanto:

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%

No acima:

  • "WinMove" é o comando AutoHotKey que move uma janela.
  • "%ActiveWindowTitle%" é a variável onde o título da janela ativa é mapeado.
  • "%TargetX%" e "%TargetY%" são as coordenadas horizontais e verticais para onde mover a janela.

Você também pode redimensionar janelas com o WinMove, pular aquelas com trechos de texto específicos em seus títulos ou conteúdo, etc. Como esses recursos estão fora do escopo deste artigo, verifique Documentação oficial do AutoHotKey sobre o comando WinMove para mais sobre eles.

O roteiro definitivo

Finalmente, chegamos à parte mais desafiadora de nossa jornada. Prepare-se para a próxima etapa espera que você salve o script e, bem... Executá-lo.

Sim, foi isso - o roteiro está completo e não há nada mais a fazer do que experimentá-lo. Use o atalho que você definiu e qualquer janela ativa se moverá para o centro da tela.

O arquivo de script final, conforme aberto em um editor de texto, deve se parecer com isto:

#NoEnv; Recomendado para desempenho e compatibilidade com versões futuras do AutoHotkey.
; #Avisar; Ative os avisos para ajudar na detecção de erros comuns.
Entrada SendMode; Recomendado pornovo scripts devido à sua velocidade e confiabilidade superiores.
SetWorkingDir %A_ScriptDir%; Garante um diretório inicial consistente.
^y::
WinGetTitle, ActiveWindowTitle, A; Obter a janela ativa's título para "segmentação" isso/agindo sobre isso.
WinGetPos Largura, Altura, %ActiveWindowTitle%; Obter o ativo janelaposição de, usado por nossos cálculos.
TargetX := (A_ScreenWidth/2)-(Largura/2); Calcule o alvo horizontal onde vamos mover o janela.
TargetY := (A_ScreenHeight/2)-(Altura/2); Calcular o posicionamento vertical de a janela.

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; Mova o janela às coordenadas calculadas.

Retorna

Observe que você pode copiar o script acima, colá-lo no Bloco de Notas ou em um editor de texto semelhante e salvá-lo com uma extensão AHK. Em seguida, "execute", com o AutoHotKey instalado, para centralizar qualquer janela sempre que você pressionar CTRL + Y. Se você não gostar desse atalho, ajuste a linha "^y::" para uma combinação de teclas diferente. Por exemplo, !+c:: mapearia a função para a combinação de teclas Shift + Alt + C.

Faixa bônus

Para sua conveniência, decidimos conjurar e incluir um script secundário que será útil para aqueles com configurações de monitor duplo.

Para manter este artigo simplificado, incluímos informações sobre como o script funciona nele na forma de comentários. Você pode removê-los de sua iteração.

A pequena história de como ele difere do script acima é que também adicionamos uma variável PositionToggle e alguma "lógica IF". Em seguida, usamos aqueles para "abrir" a janela entre os monitores. Devemos notar que é uma solução deselegante e "hack-y" para o problema. No entanto, preferimos um código mais simplificado, pois essa abordagem é mais fácil de entender e ajustar para todos que não estão familiarizados com o AutoHotKey.

#NoEnv; Recomendado para desempenho e compatibilidade com versões futuras do AutoHotkey.
; #Avisar; Ative os avisos para ajudar na detecção de erros comuns.
Entrada SendMode; Recomendado pornovo scripts devido à sua velocidade e confiabilidade superiores.
SetWorkingDir %A_ScriptDir%; Garante um diretório inicial consistente.
Alternar Posição = 1; Usar uma númerocomo uma alternância por marcação em que monitoram o janela deve aparecer.
^y::
WinGetTitle, ActiveWindowTitle, A
WinGetPos Largura, Altura, %ActiveWindowTitle%

Se PositionToggle = 1; Verificar o estado da alternância e "Faz o que há entre as chaves" se for definirpara1por nosso monitor principal.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
AlvoY := (A_ScreenHeight/2)-(Altura/2)
Alternar Posição = 2; "Estalido" a alternância para que, se reutilizarmos a tecla de atalho, nossa janela ativa se mova para o segundo monitor.
}
Else If PositionToggle = 2; Já usamos a tecla de atalho antes, "piscando" o número de alternância para o segundo monitor? Em seguida, o script deve fazer o que's entre os colchetes a seguir em vez dos acima.
{
SysGet, Mon2, Monitor, 2; Obter o segundo monitor'detalhes
Mon2Width := Mon2Direita - Mon2Esquerda; Calcular o segundo monitor's largura real.
Mon2Altura := Mon2Bottom - Mon2Top; Calcular o segundo monitor's altura real.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; Calcule para onde mover a janela. Observe que também adicionamos o monitor primário's largura já que o AutoHotKey pode't mover janelas em monitores individuais, mas em seus "superfície".
AlvoY := (Seg2Altura/2)-(Altura/2)+Seg2Topo; Calcule o alvo vertical ideal para mover a janela no segundo monitor. Como acima, o segundo monitor's detalhes verticais são detectados em relação ao monitor primário. Assim, temos que ser criativos para obter um alvo ideal, reconhecendo como o segundo monitor'o topo é't igual a 0 (como o primário's).

Alternar Posição = 1; Mova o botão de volta para que E se reutilizamos a tecla de atalho, o janela voltará ao monitor primário.
}

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; A ação real, movendo o ativo janela às nossas coordenadas calculadas.

Retorna

Centralize uma janela com uma chave, a maneira mais fácil

E agora você terminou! Se tudo funcionar bem, agora você pode usar sua tecla de atalho recém-configurada para centralizar uma janela a qualquer momento.

Encontre onde você desperdiça seu tempo no Windows com o AutoHotKey

Leia a seguir

CompartilharTweetCompartilharE-mail

Tópicos relacionados

  • janelas
  • Windows 10
  • Windows 11
  • AutoHotkey
  • Personalização do Windows

Sobre o autor

Odysseas Kourafalos (31 artigos publicados)

A vida real de OK começou por volta dos 10 anos, quando ele ganhou seu primeiro computador - um Commodore 128. Desde então, ele vem derretendo teclas digitando 24 horas por dia, 7 dias por semana, tentando espalhar a palavra da tecnologia para qualquer pessoa interessada o suficiente para ouvir. Ou melhor, leia.

Mais de Odysseas Kourafalos

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar