Не вдається отримати інструмент для чищення Windows для автоматичного запуску з AutoHotKey


13

Я намагаюся запустити снайперський інструмент Windows 7, коли натискаю PRINTSCREENкнопку AUTOHOTKEY на клавіатурі.

Я поки що невдалий. Ось що я маю для сценарію AutoHotKey.

Я спробував це

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

і це

PRINTSCREEN::Run, SnippingTool.exe

і це

PRINTSCREEN::Run, SnippingTool

І всі вони дають мені помилку, яка в основному говорить, що він не може знайти файл, однак шлях до файлу здається правильним, я можу скопіювати вставити його у вікно, і він відкриє інструмент для чищення, будь-які ідеї, чому він не працюватиме?


Ось повний код мого файлу 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

Відповіді:


17

У вас випадково працює 64-бітна версія Windows 7?

Windows 7 (як і Vista, я вважаю) реалізує те, що називається перенаправленням файлової системи WoW64. Якщо це так, ви хочете вказати AHK на каталог Sysnative:

PrintScreen :: Запустіть, "C: \ Windows \ Sysnative \ SnippingTool.exe"

4

Використовуйте

PrintScreen :: Запустіть C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe

Це дозволить правильно викликати виконуваний файл, обмежуючи межі перенаправлення файлової системи WoW64


4

Ви можете визначити, чи потрібно викликати SnippingTool.exe з Sysnative або Windows32, залежно від того, працює автонавірка як процес Wow64 чи ні.

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

Більше інформації та джерела для IsWow64Process тут: http://www.autohotkey.com/community/viewtopic.php?t=22277


Я використовував %A_WinDir%замість того %windir%, щоб #noEnvналаштування вимкнено.
джиггуньєр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.