Impossible d'obtenir l'outil de capture Windows pour s'exécuter automatiquement avec AutoHotKey


13

J'essaie d'exécuter l'outil de sniping de Windows 7 lorsque j'appuie sur le PRINTSCREENbouton de mon clavier avec AUTOHOTKEY.

Jusqu'à présent, je n'ai pas réussi. Voici ce que j'ai pour le script AutoHotKey.

J'ai essayé

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

et ça

PRINTSCREEN::Run, SnippingTool.exe

et ça

PRINTSCREEN::Run, SnippingTool

Et tous ceux qui me donnent une erreur qui dit essentiellement qu'il ne peut pas trouver le fichier, mais le chemin du fichier semble être correct, je peux copier-coller dans une fenêtre et il ouvre l'outil de capture, des idées pourquoi cela ne fonctionnera pas?


Voici le code complet de mon fichier 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

Réponses:


17

Utilisez-vous une version 64 bits de Windows 7 par hasard?

Windows 7 (ainsi que Vista je crois) implémente ce qu'on appelle la redirection du système de fichiers WoW64. Si tel est le cas, vous voudrez pointer AHK vers le répertoire Sysnative:

PrintScreen :: Run, "C: \ Windows \ Sysnative \ SnippingTool.exe"

4

Utilisation

PrintScreen :: Exécutez C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe

Cela appellera correctement l'exécutable en respectant les limites de la redirection du système de fichiers WoW64


4

Vous pouvez déterminer si vous devez appeler SnippingTool.exe à partir du Sysnative ou de Windows32 selon que la fonction autohotkey s'exécute en tant que processus Wow64 ou non.

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

Plus d'informations et de source pour IsWow64Process ici: http://www.autohotkey.com/community/viewtopic.php?t=22277


J'ai utilisé à la %A_WinDir%place de %windir%, avec le #noEnvparamètre désactivé.
jiggunjer du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.