当我使用 AUTOHOTKEY 按下键盘按钮时,我正在尝试运行 Windows 7 狙击工具PRINTSCREEN。
但到目前为止我还没有成功。以下是我为 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
答案1
您是否正在运行 64 位版本的 Windows 7?
Windows 7(我相信 Vista 也是如此)实现了所谓的 WoW64 文件系统重定向。如果是这种情况,您需要将 AHK 指向 Sysnative 目录:
PrintScreen::运行,“C:\Windows\Sysnative\SnippingTool.exe”
答案2
使用
打印屏幕::运行 C:\Windows\explorer.exe C:\Windows\system32\SnippingTool.exe
这将在 WoW64 文件系统重定向的边界内正确调用可执行文件
答案3
您可以根据 autohotkey 是否作为 Wow64 进程运行来确定是否需要从 Sysnative 或 windows32 调用 SnippingTool.exe。
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
答案4
使用
PrintScreen::Send #+s
Windows++Shift是SWindows 上的默认快捷键
您也可以更改 Windows 配置以获得相同的效果:
转到“轻松访问键盘设置”并向下滚动到“打印屏幕快捷方式”并切换“使用 PrtScn 按钮打开屏幕截图”设置。