No se puede hacer que la herramienta de recorte de Windows se ejecute automáticamente con AutoHotKey

13

Estoy tratando de ejecutar la herramienta de PRINTSCREENfranqueo de Windows 7 cuando presiono el botón de mi teclado con AUTOHOTKEY.

Sin embargo, hasta ahora no he tenido éxito. Esto es lo que tengo para el script AutoHotKey.

He intentado esto

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

y esto

PRINTSCREEN::Run, SnippingTool.exe

y esto

PRINTSCREEN::Run, SnippingTool

Y todos me dan un error que básicamente dice que no puede encontrar el archivo, sin embargo, la ruta del archivo parece ser correcta, puedo copiar y pegarlo en una ventana y abre la herramienta de recorte, ¿alguna idea de por qué no funcionará?


Aquí está el código completo de mi archivo 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
fuente

Respuestas:

17

¿Está ejecutando una versión de Windows 7 de 64 bits por casualidad?

Windows 7 (así como Vista, creo) implementa lo que se llama redirección del sistema de archivos WoW64. Si este es el caso, querrá apuntar AHK al directorio Sysnative:

PrintScreen :: Ejecutar, "C: \ Windows \ Sysnative \ SnippingTool.exe"
John T
fuente
4

Utilizar

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

Esto llamará correctamente al ejecutable dentro de los límites de la redirección del sistema de archivos WoW64

Steve
fuente
4

Puede determinar si necesita llamar a SnippingTool.exe desde Sysnative o windows32 en función de si autohotkey se ejecuta como un proceso Wow64 o no.

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
    }
}

Más información y fuente para IsWow64Process aquí: http://www.autohotkey.com/community/viewtopic.php?t=22277

jsbannis
fuente
Utilicé en %A_WinDir%lugar de %windir%, con la #noEnvconfiguración deshabilitada.
jiggunjer