Teclas de atalho personalizadas confiáveis do Windows?

9

Tenho chaves de atalho globais do Windows atribuídas a várias instâncias diferentes do cmd.exe. Eu faço isso criando atalhos para o cmd.exe na minha área de trabalho e atribuindo a cada um uma única tecla de atalho (por exemplo, CTRL + SHIFT + U). Coisas bem básicas. Estou usando o Win2K8 (R1 e R2).

Isso funciona muito bem ... na maioria das vezes. Mas com uma regularidade enfurecedora, às vezes não. Ou funcionará com um longo atraso (muitos segundos). Não importa qual aplicativo tenha foco no momento (pode até ser um dos prompts de comando). Não importa quais teclas eu atribuo (tentei algumas variações de WIN, CTRL e SHIFT). Eu notei que isso é muitas vezes, mas nem sempre, correlacionado com o explorer.exe lutando de alguma forma ou de outra (digamos, uma janela do explorador aberta para um compartilhamento de arquivos que está indisponível, ou um aplicativo que não responde, ou qualquer outra coisa). Em outras palavras, o manuseio da tecla de atalho parece ser muito sensível à atividade não relacionada do sistema. Observe que, sempre que tenho esse problema, consigo sempre ALT + TAB com êxito para a janela que desejo obter, mas isso é tedioso.

Eu uso os atalhos para essas janelas de comando centenas de vezes por dia, por isso mesmo uma taxa de falha de 1% se torna realmente irritante.

Existe uma maneira de corrigir isso, ou existe algum utilitário de terceiros que interceptará CONFIÁVEL as combinações de teclas personalizadas para trazer o foco para qualquer aplicativo que eu queira, de uma maneira que seja independente de outras atividades do sistema?

ADENDO:

Há uma propriedade dos atalhos do Windows que eu não gostaria de perder ao alternar para uma ferramenta de atalho de terceiros: os atalhos do Windows são idempotentes. Quando você inicia um atalho para algum aplicativo , pressionando a combinação de teclas de atalho, leva-o novamente ao processo já iniciado - não lança um novo processo.

    
por Peter Baer 18.02.2010 / 12:07

6 respostas

7

Use Autohotkey. A linguagem de script não é padrão e pode ser difícil de aprender, mas se tudo o que você deseja fazer é lançar programas com segurança, é simples. Além disso, você pode basear atalhos na tecla do Windows! Use o exemplo de script a seguir e modifique-o de acordo com suas necessidades. (Linhas iniciando com ; são comentários.)

;win + alt + e ... unload ipod
#!E::
   run d:\Downloads\Apps\deveject\eject ipod.bat
   return

;win + w ... launch winamp
#w::
    run c:\program files (x86)\winamp\winamp.exe
    return

;win + a ... launch AS400
#a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private.ws
    return

;win + Shift a ... launch AS400 Printer
#+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private.ws
    return

;win + ctrl + Shift a ... launch 2nd AS400 
#^+a::
    run C:\Program Files (x86)\IBM\Client Access\Emulator\Private.ws
    return

Salve este arquivo como .ahk na sua área de trabalho, instale o autohotkey e execute-o.

Sempre que você pressionar qualquer combinação de teclas, o AutoHotkey verificará esse script. Se corresponder a qualquer uma das combinações de teclas que precedem um :: , ele executará o próximo comando. Se a instrução de retorno estiver faltando, o AHK continuará examinando o script em busca de correspondências depois de executar sua instrução. As combinações de teclas estão descritas abaixo.

# = Windows Key
+ = Shift
^ = Control
! = Alt

Você pode usá-los em qualquer combinação com as letras do seu teclado. Uma combinação que acho extremamente útil é a seguinte.

; ALT Backtick ... ctrl f4
!'::
    Loop, parse, RcvCtrlW, ',
    {
     IfWinActive %A_LoopField%
     {
        sendinput ^w
        Return
     }
    }
    sendinput ^{f4}
    return

; win Backtick ... alt f4
#'::
   sendinput !{f4}
   return   

Este é o Alt + 'e o Win +'. Quando este script está rodando e eu pressiono alt + ', o script envia ctrl + F4. Win + 'se torna alt + F4.

Autohotkey é basicamente sua própria linguagem de programação. Eu tenho scripts configurados que simulam "Rocker Gestures" em todo o sistema. Eu tenho GMail como atalhos para o meu e-mail. Se você dedicar algum tempo para aprender alguns de seus truques, pode ficar louco com isso. O Lifehacker tem um monte de scripts úteis para o Autohotkey. Diverta-se!

    
por 18.02.2010 / 12:26
3

Veja como eu uso AutoHotKey de uma maneira que atenda ao seu requisito idempotent .

Como exemplo, conectei Caps Lock + a a uma janela do Firefox no Stack Overflow, Caps Lock + s ao Firefox no Super User e Caps Lock + d a um comando pronto.

StartOrToggleMinimize(TheWindowTitle,TheAppPath)
{  
   SetTitleMatchMode, 2
   DetectHiddenWindows, Off
   IfWinActive, %TheWindowTitle%
   {
      WinMinimize, %TheWindowTitle%
   }
   else
   { 
      IfWinExist, %TheWindowTitle%
      {
         WinGet, winid, ID, %TheWindowTitle%
         DllCall("SwitchToThisWindow", "UInt", winid, "UInt", 1)
      }
      else
      {
         run %TheAppPath%
      }
   }
   return
}

; the actual hotkeys:
CapsLock & a::StartOrToggleMinimize("Stack Overflow", "c:\program files\mozilla firefox\firefox.exe -new-window stackoverflow.com")
CapsLock & s::StartOrToggleMinimize("Super User", "c:\program files\mozilla firefox\firefox.exe -new-window superuser.com")
CapsLock & d::StartOrToggleMinimize("cmd", "cmd")

Você pode alterar o modo de correspondência de títulos para ser tão restritivo quanto necessário. Se eu tivesse outra tecla de atalho que correspondesse ao "Mozilla Firefox" (em vez de "Super User", por exemplo), percorreria todas as minhas instâncias do Firefox, já que cada uma tem esse texto no título da janela e eu configuro para corresponder ao texto em qualquer lugar no título.

Este script é strongmente baseado em este artigo no LifeHacker.

    
por 15.03.2011 / 04:53
3

Mais uma alternativa para lançar seus programas de maneira rápida e intuitiva:

Launchy

Launchy is a free windows and linux utility designed to help you forget about your start menu, the icons on your desktop, and even your file manager.

Launchy indexes the programs in your start menu and can launch your documents, project files, folders, and bookmarks with just a few keystrokes!

    
por 18.02.2010 / 16:10
2

Infelizmente, 6 anos depois, com o Windows 10, os mesmos problemas existem e, com uma atualização recente do Windows 10, descobri que alguns atalhos / programas não são mais idempotente ! Especialmente Putty, onde eu tenho vários atalhos para a mesma sessão.

Então eu uso AutoHotKey e modifiquei a função compartilhada neste tópico (baseado em este artigo no LifeHacker ) para que ele use um arquivo INI para rastrear cada atalho. Isso não usa o título do Windows de cada programa, já que isso pode mudar no Putty se você usar a tela ou o SSH em outro servidor, um recurso que eu pessoalmente quero manter!

Também está incluída uma função "DeleteINIEntry ()" na qual você pode criar um atalho para remover uma entrada UniqueName do arquivo INI. Ou você pode apenas editar manualmente e alterar o arquivo.

INIFilePath := "C:\Temp\AHK.ini"

RunOrSwitchWin( UniqueName, AppPath )
{  
    global INIFilePath
    IniRead, TargetID, %INIFilePath%, windowids, %UniqueName%
    ActiveID := WinExist("A")

    ; cannot use '=' here as comparing an integar to string doesn't work well
    IfEqual TargetID, %ActiveID%
    {
        WinMinimize 
        return
    }

    WinGet, AllIDs, list

    Loop, %AllIDs%
    {
        this_id := AllIDs%A_Index%

        ifEqual TargetID, %this_id%
        {
            DllCall("SwitchToThisWindow", "UInt", this_id, "UInt", 1)
            return
        }
    }

    run, %AppPath%,,, CurrentPID
    WinWait ahk_pid %CurrentPID%
    IniWrite, % WinExist("A"), %INIFilePath%, windowids, %UniqueName%

   return
}

DeleteINIEntry()
{
    global INIFilePath
    InputBox, UniqueName, Delete INI Entry, Enter UniqueName

    If ErrorLevel = 0
        IniDelete, %INIFilePath%, windowids, %UniqueName%

    return
}

^!3::DeleteINIEntry()

; Putty shortcuts. 
; ^!1 is NOT idempotent and will run it over and over again.
^!1::run "C:\Program Files\PuTTY\putty.exe"
^!2::RunOrSwitchWin( "session1", "C:\Program Files\PuTTY\putty.exe -load session1" )

Se você não quiser que a janela Minimize, basta comentar (prefixar a;) a linha WinMinimize e ela ficará focada na janela ativa.

    
por 12.10.2017 / 20:42
1

Não é uma atividade não relacionada, o explorador é o processo que lida com esses atalhos.

Existem utilitários (por exemplo, link ) que pretendem ter essa funcionalidade, mas não sei se algum deles eles resolveriam a questão da velocidade.

    
por 18.02.2010 / 12:13
1

Se o Explorer estiver ocupado, ele não poderá lidar com os atalhos, portanto, outro programa é necessário.

Um lançador simples e eficiente é o VVL do PS Hot Launch :

This is a free utility that allows you to define your own hotkeys so that a single key press can launch an application, insert commonly used text, change your audio volume, or just about anything else. The program requires Win95/98/ME or WinNT/2000/XP, and is an excellent performer even on slow machines. PS Hot Launch is the perfect alternative to the Start menu and the Quick Launch panel.

    
por 18.02.2010 / 12:37