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

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"

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


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


Użyłem %A_WinDir%zamiast %windir%, z #noEnvwyłączonym ustawieniem.
jiggunjer
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.