Impossibile eseguire lo strumento di cattura di Windows per l'esecuzione automatica con AutoHotKey


13

Sto cercando di far funzionare lo strumento di sniping di Windows 7 quando PRINTSCREENpremo il pulsante della tastiera con AUTOHOTKEY.

Finora non ho avuto successo. Ecco cosa ho per lo script AutoHotKey.

Ci ho provato

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

e questo

PRINTSCREEN::Run, SnippingTool.exe

e questo

PRINTSCREEN::Run, SnippingTool

E tutti quelli mi danno un errore che sostanzialmente dice che non è possibile trovare il file, tuttavia il percorso del file sembra essere corretto, posso copiarlo incollandolo in una finestra e apre lo strumento di cattura, qualche idea sul perché non funzionerà?


Ecco il codice completo per il mio file 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

Risposte:


17

Stai eseguendo una versione a 64 bit di Windows 7 per caso?

Windows 7 (così come Vista credo) implementa quello che viene chiamato reindirizzamento del filesystem WoW64. In questo caso, ti consigliamo di puntare AHK alla directory Sysnative:

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

4

Uso

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

Questo chiamerà correttamente l'eseguibile entro i limiti del reindirizzamento del filesystem WoW64


4

È possibile determinare se è necessario chiamare SnippingTool.exe da Sysnative o Windows32 in base al fatto che autohotkey sia in esecuzione come processo Wow64 o meno.

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

Maggiori informazioni e fonti per IsWow64Process qui: http://www.autohotkey.com/community/viewtopic.php?t=22277


Ho usato %A_WinDir%invece di %windir%, con l' #noEnvimpostazione disabilitata.
Jiggunjer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.