И все они дают мне ошибку, которая в основном говорит, что он не может найти файл, однако путь к файлу кажется правильным, я могу скопировать, вставить его в окно, и он открывает инструмент для разрезания, есть идеи, почему он не будет работать?
Вот полный код моего файла 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
3 ответа на вопрос
17
John T
Вы случайно не используете 64-битную версию Windows 7?
Windows 7 (как и Vista, я считаю) реализует так называемое перенаправление файловой системы WoW64. Если это так, вам нужно указать AHK на каталог Sysnative:
PrintScreen :: Выполнить, «C: \ Windows \ Sysnative \ SnippingTool.exe»
4
Steve
использование
PrintScreen :: Запустить C: \ Windows \ explorer.exe C: \ Windows \ system32 \ SnippingTool.exe
Это будет правильно вызывать исполняемый файл в границах перенаправления файловой системы WoW64
4
jsbannis
Вы можете определить, нужно ли вам вызывать SnippingTool.exe из Sysnative или из windows32, основываясь на том, работает ли autohotkey как процесс 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 } }