无法使用 AutoHotKey 自动运行 Windows 截图工具

无法使用 AutoHotKey 自动运行 Windows 截图工具

当我使用 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++ShiftSWindows 上的默认快捷键

您也可以更改 Windows 配置以获得相同的效果:
转到“轻松访问键盘设置”并向下滚动到“打印屏幕快捷方式”并切换“使用 PrtScn 按钮打开屏幕截图”设置。

相关内容