Das Windows-Snipping-Tool kann nicht automatisch mit AutoHotKey ausgeführt werden

13

Ich versuche, das Windows 7-Sniping-Tool zum Laufen zu bringen, wenn ich PRINTSCREENmit AUTOHOTKEY auf meine Tastaturtaste drücke.

Bisher war ich jedoch erfolglos. Folgendes habe ich für das AutoHotKey-Skript.

Ich habe es versucht

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

und das

PRINTSCREEN::Run, SnippingTool.exe

und das

PRINTSCREEN::Run, SnippingTool

Und alle geben mir einen Fehler, der im Grunde sagt, dass die Datei nicht gefunden werden kann, obwohl der Dateipfad korrekt zu sein scheint. Ich kann sie kopieren, in ein Fenster einfügen und das Snipping-Tool öffnen. Irgendwelche Ideen, warum es nicht funktioniert?


Hier ist der vollständige Code zu meiner AHK-Datei ...

;
; 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
quelle

Antworten:

17

Führen Sie zufällig eine 64-Bit-Version von Windows 7 aus?

Windows 7 (sowie Vista, glaube ich) implementiert die sogenannte WoW64-Dateisystemumleitung. In diesem Fall möchten Sie AHK auf das Sysnative-Verzeichnis verweisen:

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

Verwenden

PrintScreen :: Führen Sie C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe aus

Dadurch wird die ausführbare Datei korrekt an den Grenzen der WoW64-Dateisystemumleitung aufgerufen

Steve
quelle
4

Sie können bestimmen, ob Sie SnippingTool.exe vom Sysnative oder von Windows32 aus aufrufen müssen, basierend darauf, ob autohotkey als Wow64-Prozess ausgeführt wird oder nicht.

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

Weitere Informationen und Quellen für IsWow64Process finden Sie hier: http://www.autohotkey.com/community/viewtopic.php?t=22277

jsbannis
quelle
Ich habe %A_WinDir%stattdessen %windir%mit der #noEnvEinstellung deaktiviert.
Jiggunjer