Nie można uruchomić narzędzia wycinania systemu Windows do automatycznego uruchamiania z AutoHotKey

13

Usiłuję uruchomić narzędzie do PRINTSCREENsnajpera systemu Windows 7, gdy naciskam przycisk klawiatury za pomocą AUTOHOTKEY.

Jak dotąd jednak mi się nie udało. Oto, co mam do skryptu AutoHotKey.

Próbowałem tego

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

i to

PRINTSCREEN::Run, SnippingTool.exe

i to

PRINTSCREEN::Run, SnippingTool

I wszyscy dają mi błąd, który w zasadzie mówi, że nie można znaleźć pliku, ale ścieżka pliku wydaje się być poprawna, mogę skopiować wkleić go do okna i otworzy narzędzie do wycinania, jakieś pomysły, dlaczego to nie zadziała?


Oto pełny kod do mojego pliku 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
źródło

Odpowiedzi:

17

Czy przypadkiem używasz 64-bitowej wersji systemu Windows 7?

Windows 7 (podobnie jak Vista) implementuje to, co nazywa się przekierowaniem systemu plików WoW64. W takim przypadku należy wskazać AHK na katalog Sysnative:

PrintScreen :: Run, "C: \ Windows \ Sysnative \ SnippingTool.exe"
John T.
źródło
4

Posługiwać się

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

Spowoduje to prawidłowe wywołanie pliku wykonywalnego z granicami przekierowania systemu plików WoW64

Steve
źródło
4

Możesz określić, czy chcesz wywołać SnippingTool.exe z Sysnative czy Windows32 na podstawie tego, czy autohotkey działa jako proces Wow64, czy nie.

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

Więcej informacji i źródło IsWow64Process tutaj: http://www.autohotkey.com/community/viewtopic.php?t=22277

jsbannis
źródło
Użyłem %A_WinDir%zamiast %windir%, z #noEnvwyłączonym ustawieniem.
jiggunjer