Não é possível obter a ferramenta de recorte do Windows para execução automática com o AutoHotKey

13

Estou tentando executar a ferramenta de sniping do Windows 7 quando PRINTSCREENclico no botão do teclado com o AUTOHOTKEY.

Até agora, não obtive sucesso. Aqui está o que eu tenho para o script AutoHotKey.

Eu tentei isso

PRINTSCREEN::Run, c:\windows\system32\SnippingTool.exe

e isto

PRINTSCREEN::Run, SnippingTool.exe

e isto

PRINTSCREEN::Run, SnippingTool

E tudo isso me dá um erro que basicamente diz que não é possível encontrar o arquivo, no entanto, o caminho do arquivo parece estar correto, posso copiá-lo e colá-lo em uma janela e abre a ferramenta de recorte, alguma idéia de por que não funcionará?


Aqui está o código completo do meu arquivo AHK ...

;
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win7
; Author:         Jason Davis <friendproject@>
;
; Script Function:
; Template script (you can customize this template by editing "ShellNew\Template.ahk" in your Windows folder)
;

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


/*
PRINTSCREEN = Will run Windows 7 snipping tool
*/
PRINTSCREEN::Run, c:\windows\system32\SnippingTool.exe
return
JasonDavis
fonte

Respostas:

17

Você está executando uma versão de 64 bits do Windows 7 por acaso?

O Windows 7 (assim como o Vista, acredito) implementa o que é chamado de Redirecionamento do sistema de arquivos WoW64. Se for esse o caso, você deverá apontar o AHK para o diretório Sysnative:

PrintScreen :: Run, "C: \ Windows \ Sysnative \ SnippingTool.exe"
John T
fonte
4

Usar

PrintScreen :: Execute C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe

Isso chamará corretamente o executável dentro dos limites do redirecionamento do sistema de arquivos WoW64

Steve
fonte
4

Você pode determinar se precisa chamar SnippingTool.exe a partir do Sysnative ou do windows32 com base em se a autohotkey está sendo executada como um processo Wow64 ou não.

PrintScreen::LaunchSnippingTool()

; Determines if we are running a 32 bit program (autohotkey) on 64 bit Windows
IsWow64Process()
{
   hProcess := DllCall("kernel32\GetCurrentProcess")
   ret := DllCall("kernel32\IsWow64Process", "UInt", hProcess, "UInt *", bIsWOW64)
   return ret & bIsWOW64
}

; Launch snipping tool using correct path based on 64 bit or 32 bit Windows
LaunchSnippingTool()
{
    if(IsWow64Process())
    {
        Run, %windir%\Sysnative\SnippingTool.exe
    }
    else
    {
        Run, %windir%\system32\SnippingTool.exe
    }
}

Mais informações e fontes para o IsWow64Process aqui: http://www.autohotkey.com/community/viewtopic.php?t=22277

jsbannis
fonte
Eu usei em %A_WinDir%vez de %windir%, com a #noEnvconfiguração desativada.
Jggunjer